[logback-dev] [GIT] Logback: the generic, reliable, fast and flexible logging framework. branch, encoder, updated. v0.9.18-47-g434a8cf

added by portage for gitosis-gentoo git-noreply at pixie.qos.ch
Thu Feb 25 00:10:33 CET 2010


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Logback: the generic, reliable, fast and flexible logging framework.".

The branch, encoder has been updated
       via  434a8cf298338f202859806243041721de0b32e6 (commit)
      from  bf2254414040e25408df3b469ea4b6decd01f304 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.qos.ch/gitweb/?p=logback.git;a=commit;h=434a8cf298338f202859806243041721de0b32e6
http://github.com/ceki/logback/commit/434a8cf298338f202859806243041721de0b32e6

commit 434a8cf298338f202859806243041721de0b32e6
Author: Ceki Gulcu <ceki at qos.ch>
Date:   Thu Feb 25 00:09:57 2010 +0100

    - ongoing work on the documentation
    - renamed WriterAppender as OutputStreamAppender

diff --git a/logback-core/src/main/java/ch/qos/logback/core/ConsoleAppender.java b/logback-core/src/main/java/ch/qos/logback/core/ConsoleAppender.java
index 0a168d9..48167ac 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/ConsoleAppender.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/ConsoleAppender.java
@@ -28,7 +28,7 @@ import ch.qos.logback.core.status.WarnStatus;
  * @author Ceki G&uuml;lc&uuml;
  */
 
-public class ConsoleAppender<E> extends WriterAppender<E> {
+public class ConsoleAppender<E> extends OutputStreamAppender<E> {
 
     public static final String SYSTEM_OUT = "System.out";
     public static final String SYSTEM_ERR = "System.err";
@@ -82,7 +82,7 @@ public class ConsoleAppender<E> extends WriterAppender<E> {
     }
 
     /**
-     * This method overrides the parent {@link WriterAppender#closeWriter}
+     * This method overrides the parent {@link OutputStreamAppender#closeWriter}
      * implementation  because the console stream is not ours to close.
      */
     protected final void closeWriter() {
diff --git a/logback-core/src/main/java/ch/qos/logback/core/FileAppender.java b/logback-core/src/main/java/ch/qos/logback/core/FileAppender.java
index 418537b..46eae83 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/FileAppender.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/FileAppender.java
@@ -29,7 +29,7 @@ import ch.qos.logback.core.util.FileUtil;
  * 
  * @author Ceki G&uuml;lc&uuml;
  */
-public class FileAppender<E> extends WriterAppender<E> {
+public class FileAppender<E> extends OutputStreamAppender<E> {
 
   /**
    * Append to or truncate the file? The default value for this variable is
@@ -43,11 +43,6 @@ public class FileAppender<E> extends WriterAppender<E> {
    */
   protected String fileName = null;
 
-  /**
-   * The size of the IO buffer. Default is 8K.
-   */
-  protected int bufferSize = 8 * 1024;
-
   private boolean prudent = false;
 
   /**
@@ -172,16 +167,6 @@ public class FileAppender<E> extends WriterAppender<E> {
     }
   }
 
-
-
-  public int getBufferSize() {
-    return bufferSize;
-  }
-
-  public void setBufferSize(int bufferSize) {
-    this.bufferSize = bufferSize;
-  }
-
   /**
    * @see #setPrudent(boolean)
    * 
diff --git a/logback-core/src/main/java/ch/qos/logback/core/WriterAppender.java b/logback-core/src/main/java/ch/qos/logback/core/OutputStreamAppender.java
similarity index 90%
rename from logback-core/src/main/java/ch/qos/logback/core/WriterAppender.java
rename to logback-core/src/main/java/ch/qos/logback/core/OutputStreamAppender.java
index e2de82c..1a38cac 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/WriterAppender.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/OutputStreamAppender.java
@@ -21,15 +21,15 @@ import ch.qos.logback.core.spi.DeferredProcessingAware;
 import ch.qos.logback.core.status.ErrorStatus;
 
 /**
- * WriterAppender appends events to a hava.io.Writer. This class provides basic
- * services that other appenders build upon.
+ * OutputStreamAppender appends events to a {@link OutputStream}. This class
+ * provides basic services that other appenders build upon.
  * 
  * For more information about this appender, please refer to the online manual
- * at http://logback.qos.ch/manual/appenders.html#WriterAppender
+ * at http://logback.qos.ch/manual/appenders.html#OutputStreamAppender
  * 
  * @author Ceki G&uuml;lc&uuml;
  */
-public class WriterAppender<E> extends UnsynchronizedAppenderBase<E> {
+public class OutputStreamAppender<E> extends UnsynchronizedAppenderBase<E> {
 
   /**
    * It is the encoder which is ultimately responsible for writing the event to
@@ -42,7 +42,6 @@ public class WriterAppender<E> extends UnsynchronizedAppenderBase<E> {
    */
   protected Object lock = new Object();
 
-
   /**
    * This is the {@link OutputStream outputStream} where output will be written.
    */
@@ -51,10 +50,9 @@ public class WriterAppender<E> extends UnsynchronizedAppenderBase<E> {
   /**
    * The default constructor does nothing.
    */
-  public WriterAppender() {
+  public OutputStreamAppender() {
   }
 
-
   /**
    * The underlying output stream used by this appender.
    * 
@@ -122,7 +120,7 @@ public class WriterAppender<E> extends UnsynchronizedAppenderBase<E> {
         this.outputStream = null;
       } catch (IOException e) {
         addStatus(new ErrorStatus(
-            "Could not close output stream for WriterAppener.", this, e));
+            "Could not close output stream for OutputStreamAppender.", this, e));
       }
     }
   }
@@ -133,8 +131,9 @@ public class WriterAppender<E> extends UnsynchronizedAppenderBase<E> {
         encoder.init(outputStream);
       } catch (IOException ioe) {
         this.started = false;
-        addStatus(new ErrorStatus("Failed to write footer for appender named ["
-            + name + "].", this, ioe));
+        addStatus(new ErrorStatus(
+            "Failed to initialize encoder for appender named [" + name + "].",
+            this, ioe));
       }
     }
   }
diff --git a/logback-core/src/test/java/ch/qos/logback/core/WriterAppenderTest.java b/logback-core/src/test/java/ch/qos/logback/core/WriterAppenderTest.java
index eea1422..e5988a7 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/WriterAppenderTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/WriterAppenderTest.java
@@ -83,7 +83,7 @@ public class WriterAppenderTest {
   }
   
   public void headerFooterCheck(String fileHeader, String presentationHeader, String presentationFooter, String fileFooter) {
-    WriterAppender<Object> wa = new WriterAppender<Object>();
+    OutputStreamAppender<Object> wa = new OutputStreamAppender<Object>();
     wa.setContext(context);
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
  
diff --git a/logback-core/src/test/java/ch/qos/logback/core/appender/DummyWriterAppender.java b/logback-core/src/test/java/ch/qos/logback/core/appender/DummyWriterAppender.java
index 9321161..2c5ee63 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/appender/DummyWriterAppender.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/appender/DummyWriterAppender.java
@@ -15,10 +15,10 @@ package ch.qos.logback.core.appender;
 
 import java.io.OutputStream;
 
-import ch.qos.logback.core.WriterAppender;
+import ch.qos.logback.core.OutputStreamAppender;
 
 public class DummyWriterAppender<E> extends
-    WriterAppender<E> {
+    OutputStreamAppender<E> {
 
   DummyWriterAppender(OutputStream os) {
     this.setOutputStream(os);
diff --git a/logback-examples/src/main/java/chapters/appenders/ExitWoes1.java b/logback-examples/src/main/java/chapters/appenders/ExitWoes1.java
index 9641379..29f5bb2 100644
--- a/logback-examples/src/main/java/chapters/appenders/ExitWoes1.java
+++ b/logback-examples/src/main/java/chapters/appenders/ExitWoes1.java
@@ -21,7 +21,7 @@ import org.slf4j.LoggerFactory;
 import ch.qos.logback.classic.Logger;
 import ch.qos.logback.classic.LoggerContext;
 import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.core.WriterAppender;
+import ch.qos.logback.core.OutputStreamAppender;
 import ch.qos.logback.core.encoder.EchoEncoder;
 
 public class ExitWoes1 {
@@ -29,7 +29,7 @@ public class ExitWoes1 {
   public static void main(String[] args) throws Exception {
     LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
     lc.reset(); // we want to override the default-config.
-    WriterAppender<ILoggingEvent> writerAppender = new WriterAppender<ILoggingEvent>();
+    OutputStreamAppender<ILoggingEvent> writerAppender = new OutputStreamAppender<ILoggingEvent>();
     writerAppender.setContext(lc);
     writerAppender.setEncoder(new EchoEncoder<ILoggingEvent>());
 
diff --git a/logback-examples/src/main/java/chapters/appenders/ExitWoes2.java b/logback-examples/src/main/java/chapters/appenders/ExitWoes2.java
index 09be353..6459cc8 100644
--- a/logback-examples/src/main/java/chapters/appenders/ExitWoes2.java
+++ b/logback-examples/src/main/java/chapters/appenders/ExitWoes2.java
@@ -21,7 +21,7 @@ import org.slf4j.LoggerFactory;
 import ch.qos.logback.classic.Logger;
 import ch.qos.logback.classic.LoggerContext;
 import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.core.WriterAppender;
+import ch.qos.logback.core.OutputStreamAppender;
 import ch.qos.logback.core.encoder.EchoEncoder;
 import ch.qos.logback.core.util.StatusPrinter;
 
@@ -30,7 +30,7 @@ public class ExitWoes2 {
   public static void main(String[] args) throws Exception {
     LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
     lc.reset();//this is to cancel default-config.
-    WriterAppender<ILoggingEvent> writerAppender = new WriterAppender<ILoggingEvent>();
+    OutputStreamAppender<ILoggingEvent> writerAppender = new OutputStreamAppender<ILoggingEvent>();
     writerAppender.setContext(lc);
     writerAppender.setEncoder(new EchoEncoder<ILoggingEvent>());
 
diff --git a/logback-site/src/site/pages/manual/appenders.html b/logback-site/src/site/pages/manual/appenders.html
index fa89892..ef0aaae 100644
--- a/logback-site/src/site/pages/manual/appenders.html
+++ b/logback-site/src/site/pages/manual/appenders.html
@@ -57,10 +57,8 @@ import ch.qos.logback.core.spi.LifeCycle;
 public interface Appender&lt;E> extends LifeCycle, ContextAware, FilterAttachable {
 
   public String getName();
-  <b>void doAppend(E event);</b>
-  public void setLayout(Layout&lt;E> layout);
-  public Layout&lt;E> getLayout();
   public void setName(String name);
+  <b>void doAppend(E event);</b>
   
 }</pre>
 
@@ -88,16 +86,16 @@ public interface Appender&lt;E> extends LifeCycle, ContextAware, FilterAttachabl
 	
 	<p>Appenders are ultimately responsible for outputting logging
 	events.  However, they may delegate the actual formatting of the
-	event to a <code>Layout</code> object.  Each layout is associated
-	with one and only one appender, referred to as the owning
-	appender. Some appenders have a built-in or fixed event
-	format. Consequently, they do not require nor have a layout. For
-	example, the <code>SocketAppender</code> simply serializes logging
-	events before transmitting them over the wire.
+	event to a <code>Layout</code> or to an <code>Encoder</code> object.
+	Each layout/encoder is associated with one and only one appender,
+	referred to as the owning appender. Some appenders have a built-in
+	or fixed event format. Consequently, they do not require nor have a
+	layout/encoder. For example, the <code>SocketAppender</code> simply
+	serializes logging events before transmitting them over the wire.
 	</p>
 	
-	<a name="AppenderBase"></a>
-	<h2>AppenderBase</h2>
+	
+	<h2><a name="AppenderBase">AppenderBase</a></h2>
 	
 	<p>The <a href="../xref/ch/qos/logback/core/AppenderBase.html">
 	<code>ch.qos.logback.core.AppenderBase</code></a> class is an
@@ -150,7 +148,17 @@ public interface Appender&lt;E> extends LifeCycle, ContextAware, FilterAttachabl
 	<code>doAppend()</code> method, ensuring <em>T</em>'s exclusive
 	access to the appender.
 	</p>
-	
+
+  <p>Since such syncronization is not always appropriate, logback
+  ships with <a
+  href="../xref/ch/qos/logback/core/UnsynchronizedAppenderBase.html"><code>ch.qos.logback.core.UnsynchronizedAppenderBase</code></a>
+  which is very similar to the <a
+  href="../xref/ch/qos/logback/core/AppenderBase.html"><code>AppenderBase</code></a>
+  class. For the sake of conciseness, we want to be discussing
+  <code>UnsynchronizedAppenderBase</code> in the remainder of this document.
+  </p>
+
+
   <p>The first thing the <code>doAppend()</code> method does is to
   check whether the guard is set to true. If it is, it immediately
   exits. If the guard is not set, it is set to true at the next
@@ -158,7 +166,8 @@ public interface Appender&lt;E> extends LifeCycle, ContextAware, FilterAttachabl
   will not recursively call itself. Just imagine that a component,
   called somewhere beyond the <code>append()</code> method, wants to
   log something. Its call could be directed to the very same appender
-  that just called it.
+  that just called it resulting in an infinite loop and a stack
+  overflow.
 	</p>
 	
 	<p>In the following statement we check whether the
@@ -223,20 +232,21 @@ public interface Appender&lt;E> extends LifeCycle, ContextAware, FilterAttachabl
 
 	
 	<h3>
-    <a name="WriterAppender" href="#WriterAppender">WriterAppender</a>
+    <a name="OutputStreamAppender" href="#OutputStreamAppender">OutputStreamAppender</a>
   </h3>
 	
 	<p><a
-	href="../xref/ch/qos/logback/core/WriterAppender.html"><code>WriterAppender</code></a>
-	appends events to a <code>java.io.Writer</code>.  This class
+	href="../xref/ch/qos/logback/core/OutputStreamAppender.html"><code>OutputStreamAppender</code></a>
+	appends events to a <code>java.io.OutputStream</code>.  This class
 	provides basic services that other appenders build upon.  Users do
-	not usually instantiate <code>WriterAppender</code> objects
-	directly.  Since <code>java.io.Writer</code> type cannot be mapped
-	to a string, as there is no way to specify the target
-	<code>Writer</code> object in a configuration script.  Simply put,
-	you cannot configure a <code>WriterAppender</code> from a script.
-	However, this does not mean that <code>WriterAppender</code> lacks
-	configurable properties.  These properties are described next.
+	not usually instantiate <code>OutputStreamAppender</code> objects
+	directly.  Since in general the <code>java.io.OutputStream</code>
+	type cannot be conveninetly mapped to a string, as there is no way
+	to specify the target <code>OutputStream</code> object in a
+	configuration script.  Simply put, you cannot configure a
+	<code>OutputStreamAppender</code> from a configuration file.
+	However, this does not mean that <code>OutputStreamAppender</code>
+	lacks configurable properties.  These properties are described next.
 	</p>
 	
   <table class="bodyTable">
@@ -247,90 +257,18 @@ public interface Appender&lt;E> extends LifeCycle, ContextAware, FilterAttachabl
     </tr>
     
     <tr class="a">
-      <td><b><span class="option">Encoding</span></b></td>
+      <td><b><span class="option">Encoder</span></b></td>
       <td><code>String</code></td>
       
-      <td>The encoding specifies the method of conversion between
-      Java's internal 16-bit Unicode representation of characters into
-      raw 8-bit bytes. This appender will use the local platform's
-      default encoding unless you say otherwise by specifying an <span
-      class="option">Encoding</span> value.  According to the
-      <code>java.lang</code> package documentation, acceptable values
-      are dependent on the VM implementation although all
-      implementations are required to support at least the following
-      encodings: <em>US-ASCII</em>, <em>ISO-8859-1</em>,
-      <em>UTF-8</em>, <em>UTF-16BE</em>, <em>UTF-16LE</em> and
-      <em>UTF-16</em>.  As mentioned previously, by default, the <span
-      class="option">Encoding</span> option is <code>null</code> such
-      that the platform's default encoding is used.
+      <td>Determines the manner in which an event is written to the
+      underlying <code>OutputStreamAppender</code>. Encoders are
+      described in a <a href="encoders.html">dictated chapter</a>.
 			</td>
 		</tr>
-		<tr class="b">
-			<td><b><span class="option">ImmediateFlush</span></b></td>
-			<td><code>boolean</code></td>
-
-			<td>If the <span class="option">ImmediateFlush</span> option is
-			set to true, then each write of a logging event will be followed
-			by a flush operation on the underlying <code>Writer</code>
-			object. Conversely, if the option is set to false, each write
-			will not be followed by a flush.  In general, skipping the flush
-			operation improves logging throughput by roughly 15%.  The
-			downside is that if the application exits abruptly, the
-			unwritten characters buffered inside the <code>Writer</code>
-			might be lost.  This can be particularly troublesome as those
-			unwritten characters may contain crucial information needed in
-			identifying the reasons behind a crash.  By default, the <span
-			class="option">ImmediateFlush</span> option is set to true.
-				</td>
-
-		</tr>
-	</table>
 	
-	<p>In general, if you disable immediate flushing, then make sure to
-	flush any output streams when your application exits. Otherwise, log
-	messages will be lost as illustrated by the next example.
-	</p>
-	
-	<em>Example 4.<span class="autoEx"/>: Exiting an application without flushing (<a href="../xref/chapter4/ExitWoes1.html">logback-examples/src/main/java/chapter4/ExitWoes1.java</a>)</em>
-
-  <pre class="prettyprint source">package chapter4;
-
-import java.io.FileOutputStream;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-
-
-import org.slf4j.LoggerFactory;
-
-import ch.qos.logback.classic.Logger;
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.core.WriterAppender;
-import ch.qos.logback.core.layout.EchoLayout;
-
-public class ExitWoes1 {
-
-  public static void main(String[] args) throws Exception {
-    LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
-    lc.reset(); // we want to override the default-config.
-    WriterAppender&lt;ILoggingEvent> writerAppender = new WriterAppender&lt;ILoggingEvent>();
-    writerAppender.setContext(lc);
-    writerAppender.setLayout(new EchoLayout&lt;ILoggingEvent>());
-
-    OutputStream os = new FileOutputStream("exitWoes1.log");
-    writerAppender.setWriter(new OutputStreamWriter(os));
-    writerAppender.setImmediateFlush(false);
-    writerAppender.start();
-    Logger root = lc.getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME);
-    root.addAppender(writerAppender);
-
-    Logger logger = lc.getLogger(ExitWoes1.class);
-
-    logger.debug("Hello world.");
-  }
-}</pre>
+	</table>
     
-	<p>This example creates a <code>WriterAppender</code> that uses an
+	<p>This example creates a <code>OutputStreamAppender</code> that uses an
 	<code>OutputStreamWriter</code> wrapping a
 	<code>FileOutputStream</code> as its underlying <code>Writer</code>
 	object, with immediate flushing disabled. It then proceeds to log a
@@ -348,18 +286,19 @@ public class ExitWoes1 {
 	uses this statement and outputs a logging request.
 	</p>
 	    
-	<p>The <code>WriterAppender</code> is the superclass of three other
+	<p>The <code>OutputStreamAppender</code> is the superclass of three other
 	appenders, namely <code>ConsoleAppender</code>,
 	<code>FileAppender</code> which in turn is the super class of
 	<code>RollingFileAppender</code>. The next figure illustrates the
-	class diagram for <code>WriterAppender</code> and its subclasses.
+	class diagram for <code>OutputStreamAppender</code> and its subclasses.
 	</p>
 	
-	<img src="images/chapter4/fileAppenderUML.png" alt="A UML diagram showing FileAppender"/>
+	<img src="images/chapters/appenders/appenderClassDiagram.jpg" alt="A UML diagram showing FileAppender"/>
 	
 
 	<h3>	
-    <a name="ConsoleAppender" href="#ConsoleAppender">ConsoleAppender</a>
+    <a name="ConsoleAppender"
+    href="#ConsoleAppender">ConsoleAppender</a>
   </h3>
 	
   <p>The <a href="../xref/ch/qos/logback/core/ConsoleAppender.html">
@@ -383,12 +322,12 @@ public class ExitWoes1 {
 		<tr class="b">
 			<td><b><span class="option">Encoding</span></b></td>
 			<td><code>String</code></td>
-			<td>See <code>WriterAppender</code> properties.</td>
+			<td>See <code>OutputStreamAppender</code> properties.</td>
 		</tr>
 		<tr class="a">
 			<td><b><span class="option">ImmediateFlush</span></b></td>
 			<td><code>boolean</code></td>
-			<td>See <code>WriterAppender</code> properties.</td>
+			<td>See <code>OutputStreamAppender</code> properties.</td>
 		</tr>
 		<tr class="b">
 			<td><b><span class="option">Target</span></b></td>
@@ -434,7 +373,7 @@ public class ExitWoes1 {
 	
    <p>The <a
    href="../xref/ch/qos/logback/core/FileAppender.html"><code>FileAppender</code></a>,
-   a subclass of <code>WriterAppender</code>, appends log events into
+   a subclass of <code>OutputStreamAppender</code>, appends log events into
    a file. The target file is specified by the <span
    class="option">File</span> option.  If the file already exists, it
    is either appended to, or truncated depending on the value of the
@@ -468,7 +407,7 @@ public class ExitWoes1 {
      <tr >
        <td><b><span class="option">Encoding</span></b></td>
        <td><code>String</code></td>
-       <td>See <code>WriterAppender</code> properties.</td>
+       <td>See <code>OutputStreamAppender</code> properties.</td>
      </tr>
      <tr class="alt">
        <td><b><span class="option">BufferedIO</span></b></td>
@@ -514,7 +453,7 @@ public class ExitWoes1 {
      <tr >
        <td><b><span class="option">ImmediateFlush</span></b></td>
        <td><code>boolean</code></td>
-       <td>See <code>WriterAppender</code> properties.</td>
+       <td>See <code>OutputStreamAppender</code> properties.</td>
      </tr>
 
      <tr class="alt">
@@ -712,7 +651,7 @@ public class ExitWoes1 {
      <tr class="a">
        <td><b><span class="option">Encoding</span></b></td>
        <td><code>String</code></td>
-       <td>See <code>WriterAppender</code> properties.</td>
+       <td>See <code>OutputStreamAppender</code> properties.</td>
      </tr>	
      <tr class="b">
        <td><b><span class="option">File</span></b></td>
@@ -722,7 +661,7 @@ public class ExitWoes1 {
      <tr class="a">
        <td><b><span class="option">ImmediateFlush</span></b></td>
        <td><code>boolean</code></td>
-       <td>See <code>WriterAppender</code> properties.</td>
+       <td>See <code>OutputStreamAppender</code> properties.</td>
      </tr>	
      <tr class="b">
        <td><b><span class="option">RollingPolicy</span></b></td>
diff --git a/logback-site/src/site/pages/manual/architecture.html b/logback-site/src/site/pages/manual/architecture.html
index 19ba1f9..f495620 100644
--- a/logback-site/src/site/pages/manual/architecture.html
+++ b/logback-site/src/site/pages/manual/architecture.html
@@ -146,12 +146,18 @@ public interface Logger {
   public void error(String message); 
 }</pre>
 
+
+
+    <h3><a name="effectiveLevel"
+			href="#effectiveLevel">Effective Level aka Level Inheritance</a>
+    </h3>
+
 		<p>Loggers may be assigned levels. The set of possible levels,
 		that is TRACE, DEBUG, INFO, WARN and ERROR are defined in the
 		<code>ch.qos.logback.classic.Level</code> class. Note that in
-		logback, the level class is final and cannot be derived, as a much
-		more flexible approach exists in the form of <code>Marker</code>
-		objects.
+		logback, the <code>Level</code> class is final and cannot be
+		sub-classed, as a much more flexible approach exists in the form
+		of <code>Marker</code> objects.
 		</p>
 
 		<p>If a given logger is not assigned a level, then it inherits one
@@ -159,8 +165,7 @@ public interface Logger {
 		</p>
 
 		<div class="definition">
-			<div class="deftitle"><a name="effectiveLevel"
-			href="#effectiveLevel">Effective Level (Level Inheritance)</a></div>
+		
       
 			<p>The effective level for a given logger <em>L</em>, is equal
 			to the first non-null level in its hierarchy, starting at
@@ -173,6 +178,7 @@ public interface Logger {
 		root logger always has an assigned level. By default, this level
 		is DEBUG.
 		</p>
+
 		<p>Below are four examples with various assigned level values and
 		the resulting effective (inherited) levels according to the level
 		inheritance rule.
@@ -815,7 +821,10 @@ logger.debug("Value {} was inserted between {} and {}.", paramArray);</pre>
     want to click on the image to display its bigger version.
   </p>
 
-  <a href="underTheHood.html"><img src="images/manual/architecture/underTheHoodSequence2_small.gif" alt="underTheHoodSequence2_small.gif"/></a>
+  <a href="underTheHood.html">
+    <img src="images/manual/architecture/underTheHoodSequence2_small.gif" 
+         alt="underTheHoodSequence2_small.gif"/>
+  </a>
 
   <a name="Performance"></a>
   <h3>Performance</h3>
diff --git a/logback-site/src/site/pages/manual/configuration.html b/logback-site/src/site/pages/manual/configuration.html
index b54ab09..1786108 100644
--- a/logback-site/src/site/pages/manual/configuration.html
+++ b/logback-site/src/site/pages/manual/configuration.html
@@ -121,7 +121,7 @@
     </p>
 
 
-    <h3>Automatically configuring logback</h3>
+    <h3><a name="automaticConf" href="#automaticConf">Automatically configuring logback</a></h3>
 
     <p>The simplest way to configure logback is by letting logback
     fall back to its default configuration. Let us give a taste of how
@@ -178,8 +178,6 @@ public class Foo {
     details.
     </p>
 
-  
-
     <p>Assuming the configuration files <em>logback-test.xml</em> or
     <em>logback.xml</em> are not present, logback will default to
     invoking <a
@@ -187,9 +185,9 @@ public class Foo {
     which will set up a minimal configuration. This minimal
     configuration consists of a <code>ConsoleAppender</code> attached
     to the root logger.  The output is formatted using a
-    <code>PatternLayout</code> set to the pattern <em>%d{HH:mm:ss.SSS}
-    [%thread] %-5level %logger{36} - %msg%n</em>. Moreover, by default
-    the root logger is assigned the <code>DEBUG</code> level.
+    <code>PatternLayoutEncoder</code> set to the pattern
+    <em>%d{HH:mm:ss.SSS}&nbsp;[%thread]&nbsp;%-5level&nbsp;%logger{36}&nbsp;-&nbsp;%msg%n</em>. Moreover, by default the root logger is assigned the
+    <code>DEBUG</code> level.
     </p>
 
     <p>Thus, the output of the command <em>java chapters.configuration.MyApp1</em>
@@ -240,8 +238,9 @@ public class Foo {
 <pre class="prettyprint source">&lt;configuration>
 
   &lt;appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-    &lt;!-- encoders are  by default assigned the type
-         ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
+    &lt;!-- encoders are assigned the type
+         ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
+    &lt;encoder>
     &lt;encoder>
       &lt;pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n&lt;/pattern>
     &lt;/encoder>
@@ -257,7 +256,9 @@ public class Foo {
    directory accessible from the class path. Running the <em>MyApp1</em>
    application should give identical results to its previous run.</p>
 
-   <h4>Automatic printing of status messages in case of warning or errors</h4>
+   <h4><a name="automaticStatusPrinting"
+   href="#automaticStatusPrinting">Automatic printing of status
+   messages in case of warning or errors</a></h4>
 
    <div class="highlight">
      <p>If warning or errors occur during the parsing of the
@@ -335,7 +336,7 @@ public class Foo {
   &lt;appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
     &lt;!-- encoders are  by default assigned the type
          ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
-    &lt;layout>
+    &lt;encoder>
       &lt;pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n&lt;/pattern>
     &lt;/encoder>
   &lt;/appender>
@@ -621,33 +622,34 @@ public class MyApp3 {
    <p class="source">java <b>-Dlogback.statusListenerClass</b>=ch.qos.logback.core.status.OnConsoleStatusListener&nbsp;...</p>
    
 
-
-
    <h2>
      <a name="syntax" href="#syntax">Configuration file Syntax</a>
    </h2>
 
-	<p>To obtain these different logging behaviors we do not need to
-	recompile code.  You can easily configure logback so as to disable
-	logging for certain parts of your application, or direct output to a
-	UNIX Syslog daemon, to a database, to a log visualizer, or forward
-	logging events to a remote logback server, which would log according
-	to local server policy, for example by forwarding the log event to a
-	second logback server.
-  </p>
+   <p>As you have seen thus far in the manual with plenty of examples
+   still to follow, logback allows you to redefine logging behavior
+   without needing to recompile your code.  Indeed, you can easily
+   configure logback so as to disable logging for certain parts of
+   your application, or direct output to a UNIX Syslog daemon, to a
+   database, to a log visualizer, or forward logging events to a
+   remote logback server, which would log according to local server
+   policy, for example by forwarding the log event to a second logback
+   server.
+   </p>
 	
-  <p>The remainder of this section presents the syntax of
-  configuration files. 
-  </p>
+   <p>The remainder of this section presents the syntax of
+   configuration files. 
+   </p>
 
-  <p>As shall become clear, the syntax of logback configuration files
-  is extremely flexible. As such, it is not possible to specify the
-  allowed syntax with a DTD file or an XML schema. Nevertheless, the
-  very basic structure of the configuration file can be described as,
-  &lt;configuration> element, followed by zero or more &lt;appender>
-  elements, followed by zero or more &lt;logger> elements, followed by
-  at most one &lt;root> element. The following diagram illustrates
-  this basic structure.</p>
+   <p>As shall be demonstrated over and over, the syntax of logback
+   configuration files is extremely flexible. As such, it is not
+   possible to specify the allowed syntax with a DTD file or an XML
+   schema. Nevertheless, the very basic structure of the configuration
+   file can be described as, <code>&lt;configuration></code> element,
+   followed by zero or more <code>&lt;appender></code> elements,
+   followed by zero or more <code>&lt;logger></code> elements,
+   followed by at most one <code>&lt;root></code> element. The
+   following diagram illustrates this basic structure.</p>
 
   
   <p align="left">
@@ -658,83 +660,98 @@ public class MyApp3 {
 
   <div class="highlight">
     <p>If you are unsure which case to use for a given tag name, just
-    follow the camelCase convention which should usually be
-    corrrect.</p>
-  </div>
-
-  <p>As of logback version 0.9.17, tag names pertaining to explicit
-  rules are case insensitive.  For example, both
-  <code>&lt;logger></code>, <code>&lt;Logger></code> and
-  <code>&lt;LOGGER></code> are valid configuration elements and will
-  be interpreted in the same way. Note that XML well-formedness rules
-  still apply, if you open a tag as <code>&lt;xyz></code> you must
-  close it as <code>&lt;/xyz></code>, <code>&lt;/XyZ></code> will not
-  work. As for <a href="onJoran.html#implicit">implicit rules</a>, tag
-  names are case sensitive except for the first letter.  Thus,
-  <code>&lt;xyz></code> and <code>&lt;Xyz></code> are equivalent but
-  not <code>&lt;xYz></code>.  Implicit rules usually follow the <a
-  href="http://en.wikipedia.org/wiki/CamelCase">camel case</a>
-  convention, common in the Java world. Since it is not trivially easy
-  tell when a tag is associated with an explicit action and when it is
-  associated with an implicit action, it is not trivial to say whether
-  an XML tag is totally case-insensitive or case-insensitive with
-  respect to the first letter. If you are unsure which case to use for
-  a given tag name, just follow the camelCase convention which should
-  usually be correct.
-  </p>
+    follow the <a
+    href="http://en.wikipedia.org/wiki/CamelCase">camelCase
+    convention</a> which is almost always the corrrect convention.</p>
+    </div>
 
-  <h4>Configuring Loggers, or the <code>&lt;logger></code> element</h4>
-
-  <p>A logger is configured using the <code>logger</code> element. A
-  <em>logger</em> element takes exactly one mandatory <span
-  class="attr">name</span> attribute, an optional <span
-  class="attr">level</span> attribute, and an optional <span
-  class="attr">additivity</span> attribute, which admits the values
-  <em>true</em> or <em>false</em>. The value of the <span
-  class="attr">level</span> attribute can be one of the
-  case-insensitive strings TRACE, DEBUG, INFO, WARN, ERROR, ALL or
-  OFF. The special case-insensitive value <em>INHERITED</em>, or its
-  synonym <em>NULL</em>, will force the level of the logger to be
-  inherited from higher up in the hierarchy. This comes in handy in
-  case you set the level of a logger and later decide that it should
-  inherit its level.
-  </p>
+    <h4><a name="caseSensitivity" href="#caseSensitivity">Case
+    sensitivity of tag names</a></h4>
+   
 
-  <p>The <em>logger</em> element may contain zero or more
-  <em>appender-ref</em> elements; each appender thus referenced is
-  added to the named logger. It is important to keep mind that each
-  named logger that is declared with a &lt;logger element first has
-  all its appenders removed and only then are the referenced appenders
-  attached to it.  In particular, if there are no appender references,
-  then the named logger will lose all its appenders.
-  </p>
+    <p>As of logback version 0.9.17, tag names pertaining to explicit
+    rules are case insensitive.  For example, both
+    <code>&lt;logger></code>, <code>&lt;Logger></code> and
+    <code>&lt;LOGGER></code> are valid configuration elements and will
+    be interpreted in the same way. Note that XML well-formedness
+    rules still apply, if you open a tag as <code>&lt;xyz></code> you
+    must close it as <code>&lt;/xyz></code>, <code>&lt;/XyZ></code>
+    will not work. As for <a href="onJoran.html#implicit">implicit
+    rules</a>, tag names are case sensitive except for the first
+    letter.  Thus, <code>&lt;xyz></code> and <code>&lt;Xyz></code> are
+    equivalent but not <code>&lt;xYz></code>.  Implicit rules usually
+    follow the <a href="http://en.wikipedia.org/wiki/CamelCase">camel
+    case</a> convention, common in the Java world. Since it is not
+    easy tell when a tag is associated with an explicit action and
+    when it is associated with an implicit action, it is not trivial
+    to say whether an XML tag is case-sensitive or insensitive with
+    respect to the first letter. If you are unsure which case to use
+    for a given tag name, just follow the camelCase convention which
+    is almost always the correct convention.
+    </p>
 
+    <h4><a name="loggerElement"
+    href="#loggerElement">Configuring loggers, or the
+    <code>&lt;logger></code> element</a></h4>
 
+    <p>At this point should have at least some understanding of <a
+    href="architecture.html#effectiveLevel">level inherirance</a> and
+    the <a href="architecture.html#basic_selection">basic selection
+    rule</a>. Otherwise, and unless you are an egyptologist, logback
+    configuration will be no more meaningful to you than
+    are hieroglyphics.
+    </p>
 
-  <h4>Configuring the root logger, or the <code>&lt;root></code>
-  element</h4>
+    <p>A logger is configured using the <code>&lt;logger></code>
+    element. A <code>&lt;logger></code> element takes exactly one
+    mandatory <span class="attr">name</span> attribute, an optional
+    <span class="attr">level</span> attribute, and an optional <span
+    class="attr">additivity</span> attribute, admitting the values
+    <em>true</em> or <em>false</em>. The value of the <span
+    class="attr">level</span> attribute admitting the one of the
+    case-insensitive string values TRACE, DEBUG, INFO, WARN, ERROR,
+    ALL or OFF. The special case-insensitive value <em>INHERITED</em>,
+    or its synonym <em>NULL</em>, will force the level of the logger
+    to be inherited from higher up in the hierarchy. This comes in
+    handy in case you set the level of a logger and later decide that
+    it should inherit its level.
+    </p>
+
+    <p>The <code>&lt;logger></code> element may contain zero or more
+    <code>&lt;appender-ref></code> elements; each appender thus
+    referenced is added to the named logger. It is important to keep
+    mind that each named logger that is declared with a
+    <code>&lt;logger></code> element first has all its appenders
+    removed and only then are the referenced appenders attached to it.
+    In particular, if there are no appender references, then the named
+    logger will lose all its appenders.
+    </p>
 
 
 
-  <p>The &lt;root> element configures the root logger. It admits a
-  single attribute, namely the <span class="attr">level</span>
-  attribute. It does not admit any other attributes because the
-  additivity flag does not apply to the root logger.  Moreover, since
-  the root logger is already named as "ROOT", it does not admit a name
-  attribute either. The value of the level attribute can be set to one
-  of the case-insensitive strings TRACE, DEBUG, INFO, WARN, ERROR, ALL
-  or OFF. Note that the level of the root logger cannot be set to
-  INHERITED or NULL.
+  <h4><a name="rootElement" href="#rootElement">Configuring the root
+  logger, or the <code>&lt;root></code> element</a></h4>
+
+  <p>The <code>&lt;root></code> element configures the root logger. It
+  admits a single attribute, namely the <span
+  class="attr">level</span> attribute. It does not admit any other
+  attributes because the additivity flag does not apply to the root
+  logger.  Moreover, since the root logger is already named as "ROOT",
+  it does not admit a name attribute either. The value of the level
+  attribute can be one of the case-insensitive strings TRACE, DEBUG,
+  INFO, WARN, ERROR, ALL or OFF. Note that the level of the root
+  logger cannot be set to INHERITED or NULL.
   </p>
 
 
-  <p>The &lt;root> element admits zero or more &lt;appender-ref>
-  elements.  Similar to the &lt;logger element, declaring a &lt;root
+  <p>The <code>&lt;root></code> element admits zero or more
+  <code>&lt;appender-ref></code> elements.  Similar to the
+  <code>&lt;logger></code> element, declaring a <code>&lt;root></code>
   element will have the effect of first closing and then detaching all
   its current appenders and only subsequently will referenced
-  appenders, if any, will be added.  In particular, if it has no
-  appender references, then the root logger will lose all its
-  appenders.
+  appenders, if any, will be added.  In particular, if the
+  <code>&lt;root></code> element contains no appender references, then
+  the root logger will lose all its appenders.
   </p>
 
   <h4>Example</h4>
@@ -750,8 +767,8 @@ public class MyApp3 {
 <pre class="prettyprint source">&lt;configuration>
 
   &lt;appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-    &lt;!-- encoders are  by default assigned the type
-         ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
+    &lt;!-- encoders are assigned the type
+         ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
     &lt;encoder>
       &lt;pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n&lt;/pattern>
     &lt;/encoder>
@@ -767,13 +784,17 @@ public class MyApp3 {
   
 &lt;/configuration></pre>
 
-  <p>This new configuration will yield the following output, when
-  invoked with the <em>MyApp3</em> application.
+  <p>When the above configuration file is given as argument to the
+  <em>MyApp3</em> application, it will yield the following output:
   </p>
 
 <pre class="source">17:34:07.578 [main] INFO  chapters.configuration.MyApp3 - Entering application.
 17:34:07.578 [main] INFO  chapters.configuration.MyApp3 - Exiting application.</pre>
 
+  <p>Note that the message of level DEBUG generated by the <a
+  href="../xref/chapters/configuration/Foo.html">"chapters.configuration.Foo"</a>
+  logger has been supressed. See also the Foo class.</p>
+
   <p>You can configure the levels of as many loggers as you wish.  In
   the next configuration file, we set the level of the
   <em>chapters.configuration</em> logger to INFO but at the same time set the level
@@ -846,7 +867,7 @@ public class MyApp3 {
   <code>INFO</code> in the <code>MyApp3</code> class as well as the
   DEBUG messages in <code>Foo.doIt()</code> are all enabled. Note that
   the level of the root logger is always set to a non-null value,
-  which is DEBUG by default.  
+  DEBUG by default.
   </p>
 
   <p>Let us note that the <a
@@ -931,21 +952,24 @@ public class MyApp3 {
   - even if the Java source code does not directly refer to it.
   </p>
 
-  <h4>Configuring Appenders</h4>
+  <h4><a name="configuringAppenders"
+  href="#configuringAppenders">Configuring Appenders</a></h4>
 
-  <p>Appenders are configured using <code>&lt;appender></code>
-  elements, taking two attributes <span class="attr">name</span> and
-  <span class="attr">class</span>, both of which are mandatory.  The
+  <p>An appenders is configured with the <code>&lt;appender></code>
+  element, which takes two mandatroy attributes <span
+  class="attr">name</span> and <span class="attr">class</span>.  The
   <span class="attr">name</span> attribute specifies the name of the
   appender whereas the <span class="attr">class</span> attribute
-  specifies the fully qualified name of the class of which the named
-  appender will be an instance.  The <code>&lt;appender></code>
-  element may contain zero or one <code>&lt;layout></code> elements
-  and zero or more <code>&lt;filter></code> elements. Appart from
-  these two common elements, <code>&lt;appender></code> elements may
-  contain any number of element corresponding to javabean properties
-  of the appender class. Seamlessly supporting any property of a given
-  logback component is one of the major strengths of Joran. The
+  specifies the fully qualified name of the appender class to
+  instantiate. The <code>&lt;appender></code> element may contain zero
+  or one <code>&lt;layout></code> elements, zero or more
+  <code>&lt;encoder></code> elements and zero or more
+  <code>&lt;filter></code> elements. Appart from these three common
+  elements, <code>&lt;appender></code> elements may contain any number
+  of elements corresponding to javabean properties of the appender
+  class. Seamlessly supporting any property of a given logback
+  component is one of the major strengths of <a
+  href="onJoran.html">Joran</a> as discussed in a later chapter. The
   following diagram illustrates the common structure. Note that
   support for properties is not visible.
   </p>
@@ -956,10 +980,23 @@ public class MyApp3 {
   </p>
 
   <p>The <code>&lt;layout></code> element takes a mandatory class
-  attribute specifying the fully qualified name of the class of which
-  the associated layout should be an instance. Like the
-  <code>&lt;appender></code> element, it may contain other elements
-  corresponding to properties of the layout class.
+  attribute specifying the fully qualified name of the layout class to
+  instantiate.  As with the the <code>&lt;appender></code> element,
+  <code>&lt;layout></code> may contain other elements corresponding to
+  properties of the layout instance. Since it's such a common case, if
+  the layout class is <code>PatternLayout</code>, then the class
+  attribute can be omitted as specified by <a
+  href="onJoran.html#defaultClassMapping">default class mapping</a>
+  rules.
+  </p>
+
+  <p>The <code>&lt;encoder></code> element takes a mandatory class
+  attribute specifying the fully qualified name of the encoder class
+  to instantiate. Since it's such a common case, if the encoder class
+  is <code>PatternLayoutEncoder</code>, then the class attribute can
+  be omitted as specified by <a
+  href="onJoran.html#defaultClassMapping">default class mapping</a>
+  rules.
   </p>
 
   <p>Logging to multiple appenders is as easy as defining the various
@@ -992,22 +1029,26 @@ public class MyApp3 {
 
   <p>This configuration scripts defines two appenders called
   <em>FILE</em> and <em>STDOUT</em>.  The <em>FILE</em> appender logs
-  to a file called <em>myApp.log</em>. The layout for this appender is
-  a <code>PatternLayout</code> that outputs the date, level, thread
-  name, logger name, file name and line number where the log request
-  is located, the message and line separator character(s).  The second
-  appender called <code>STDOUT</code> outputs to the console.  The
-  layout for this appender outputs only the message string followed by
-  a line separator.
+  to a file called <em>myApp.log</em>. The encoder for this appender
+  is a <code>PatternLayoutEncoder</code> that outputs the date, level,
+  thread name, logger name, file name and line number where the log
+  request is located, the message and line separator character(s).
+  The second appender called <code>STDOUT</code> outputs to the
+  console.  The encoder for this appender outputs only the message
+  string followed by a line separator.
   </p>
 
   <p>The appenders are attached to the root logger by referencing them
   by name within an <em>appender-ref</em> element. Note that each
-  appender has its own layout. Layouts are usually not designed to be
-  shared by multiple appenders. As such, logback configuration files
-  do not provide any syntactical means for sharing layouts.
+  appender has its own encoder. Encoders are usually not designed to
+  be shared by multiple appenders. The same is true for layouts. As
+  such, logback configuration files do not provide any syntactical
+  means for sharing encoders or layouts.
   </p>
 
+  <h4><a name="cumulative" href="#cumulative">Appenders accumulate</a>
+  </h4>
+
   <p>By default, <b>appenders are cumulative</b>: a logger will log to
   the appenders attached to itself (if any) as well as all the
   appenders attached to its ancestors.  Thus, attaching the same
@@ -1093,7 +1134,11 @@ public class MyApp3 {
   <em>myApp.log</em> file.
   </p>
 	
-  <h4>Overriding the default cumulative behaviour</h4>
+  <h4>
+    <a name="overrridingCumulativity" href="#overrridingCumulativity">
+      Overriding the default cumulative behaviour
+    </a>
+  </h4>
 
   <p>In case the default cumulative behavior turns out to be
   unsuitable for your needs, you can override it by setting the
@@ -1178,8 +1223,7 @@ public class MyApp3 {
 
   <b>&lt;property name="USER_HOME" value="/home/sebastien" /></b>
 
-  &lt;appender name="FILE"
-    class="ch.qos.logback.core.FileAppender">
+  &lt;appender name="FILE" class="ch.qos.logback.core.FileAppender">
     <b>&lt;file>${USER_HOME}/myApp.log&lt;/file></b>
     &lt;encoder>
       &lt;pattern>%msg%n&lt;/pattern>
@@ -1206,8 +1250,7 @@ public class MyApp3 {
   
   <pre class="prettyprint source">&lt;configuration>
 
-  &lt;appender name="FILE"
-    class="ch.qos.logback.core.FileAppender">
+  &lt;appender name="FILE" class="ch.qos.logback.core.FileAppender">
     <b>&lt;file>${USER_HOME}/myApp.log&lt;/file></b>
     &lt;encoder>
       &lt;pattern>%msg%n&lt;/pattern>
@@ -1234,8 +1277,7 @@ public class MyApp3 {
 
   <b>&lt;property file="src/main/java/chapters/configuration/variables1.properties" /></b>
 
-  &lt;appender name="FILE"
-     class="ch.qos.logback.core.FileAppender">
+  &lt;appender name="FILE" class="ch.qos.logback.core.FileAppender">
      <b>&lt;file>${USER_HOME}/myApp.log&lt;/file></b>
      &lt;encoder>
        &lt;pattern>%msg%n&lt;/pattern>
@@ -1266,8 +1308,7 @@ public class MyApp3 {
 
   <b>&lt;property resource="resource1.properties" /></b>
 
-  &lt;appender name="FILE"
-     class="ch.qos.logback.core.FileAppender">
+  &lt;appender name="FILE" class="ch.qos.logback.core.FileAppender">
      <b>&lt;file>${USER_HOME}/myApp.log&lt;/file></b>
      &lt;encoder>
        &lt;pattern>%msg%n&lt;/pattern>
@@ -1310,8 +1351,7 @@ fileName=myApp.log
 
   &lt;property file="variables2.properties" />
 
-  &lt;appender name="FILE"
-    class="ch.qos.logback.core.FileAppender">
+  &lt;appender name="FILE" class="ch.qos.logback.core.FileAppender">
     <b>&lt;file>${destination}&lt;/file></b>
     &lt;encoder>
       &lt;pattern>%msg%n&lt;/pattern>
diff --git a/logback-site/src/site/pages/manual/onJoran.html b/logback-site/src/site/pages/manual/onJoran.html
index 386c54d..eab4c87 100644
--- a/logback-site/src/site/pages/manual/onJoran.html
+++ b/logback-site/src/site/pages/manual/onJoran.html
@@ -636,6 +636,18 @@ Element [abc] asked to be printed.
 
     <tr >
       <td>ch.qos.logback.core.AppenderBase</td>
+      <td>encoder</td>
+      <td>ch.qos.logback.classic.encoder.PatternLayoutEncoder</td>
+    </tr>
+
+    <tr class="alt">
+      <td>ch.qos.logback.core.UnsynchronizedAppenderBase</td>
+      <td>encoder</td>
+      <td>ch.qos.logback.classic.encoder.PatternLayoutEncoder</td>
+    </tr>
+
+      <tr >
+      <td>ch.qos.logback.core.AppenderBase</td>
       <td>layout</td>
       <td>ch.qos.logback.classic.PatternLayout</td>
     </tr>
diff --git a/logback-site/src/site/resources/manual/images/chapters/appenders/appender.uml b/logback-site/src/site/resources/manual/images/chapters/appenders/appender.uml
new file mode 100644
index 0000000..20ff4cf
--- /dev/null
+++ b/logback-site/src/site/resources/manual/images/chapters/appenders/appender.uml
@@ -0,0 +1,1179 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<XPD:PROJECT xmlns:XPD="http://www.staruml.com" version="1">
+<XPD:HEADER>
+<XPD:SUBUNITS>
+</XPD:SUBUNITS>
+<XPD:PROFILES>
+<XPD:PROFILE>UMLStandard</XPD:PROFILE>
+</XPD:PROFILES>
+</XPD:HEADER>
+<XPD:BODY>
+<XPD:OBJ name="DocumentElement" type="UMLProject" guid="JEGKOL0wwE6O2Emy29kFuwAA">
+<XPD:ATTR name="Title" type="string">Untitled</XPD:ATTR>
+<XPD:ATTR name="#OwnedElements" type="integer">6</XPD:ATTR>
+<XPD:OBJ name="OwnedElements[0]" type="UMLModel" guid="Nu7ucmhxa0aC5WTL/Hl5qgAA">
+<XPD:ATTR name="Name" type="string">Use Case Model</XPD:ATTR>
+<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
+<XPD:ATTR name="StereotypeName" type="string">useCaseModel</XPD:ATTR>
+<XPD:REF name="Namespace">JEGKOL0wwE6O2Emy29kFuwAA</XPD:REF>
+<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="OwnedDiagrams[0]" type="UMLUseCaseDiagram" guid="AOpe9EpUuEqbJkhPg6UN+wAA">
+<XPD:ATTR name="Name" type="string">Main</XPD:ATTR>
+<XPD:REF name="DiagramOwner">Nu7ucmhxa0aC5WTL/Hl5qgAA</XPD:REF>
+<XPD:OBJ name="DiagramView" type="UMLUseCaseDiagramView" guid="jha7HHI2JEmss41Kcx5rmAAA">
+<XPD:REF name="Diagram">AOpe9EpUuEqbJkhPg6UN+wAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[1]" type="UMLModel" guid="nzHC5ZSub0yOmXzqddVh7QAA">
+<XPD:ATTR name="Name" type="string">Analysis Model</XPD:ATTR>
+<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
+<XPD:ATTR name="StereotypeName" type="string">analysisModel</XPD:ATTR>
+<XPD:REF name="Namespace">JEGKOL0wwE6O2Emy29kFuwAA</XPD:REF>
+<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="OwnedDiagrams[0]" type="UMLClassDiagram" guid="ucvrQjCCHEOMfGCAAc5zPQAA">
+<XPD:ATTR name="Name" type="string">Main</XPD:ATTR>
+<XPD:ATTR name="DefaultDiagram" type="boolean">True</XPD:ATTR>
+<XPD:ATTR name="DiagramType" type="string">RobustnessDiagram</XPD:ATTR>
+<XPD:REF name="DiagramOwner">nzHC5ZSub0yOmXzqddVh7QAA</XPD:REF>
+<XPD:OBJ name="DiagramView" type="UMLClassDiagramView" guid="sxIjWZ8eT0KTmxDhcr84UAAA">
+<XPD:REF name="Diagram">ucvrQjCCHEOMfGCAAc5zPQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[2]" type="UMLModel" guid="dQlYoesWY0yxg2VJCxHxOQAA">
+<XPD:ATTR name="Name" type="string">Design Model</XPD:ATTR>
+<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
+<XPD:ATTR name="StereotypeName" type="string">designModel</XPD:ATTR>
+<XPD:REF name="Namespace">JEGKOL0wwE6O2Emy29kFuwAA</XPD:REF>
+<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="OwnedDiagrams[0]" type="UMLClassDiagram" guid="jdoFPKplx0W53YpEZi95TAAA">
+<XPD:ATTR name="Name" type="string">Main</XPD:ATTR>
+<XPD:ATTR name="DefaultDiagram" type="boolean">True</XPD:ATTR>
+<XPD:REF name="DiagramOwner">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:OBJ name="DiagramView" type="UMLClassDiagramView" guid="oWGUMKWgOEus+/3Jqk/tpAAA">
+<XPD:REF name="Diagram">jdoFPKplx0W53YpEZi95TAAA</XPD:REF>
+<XPD:ATTR name="#OwnedViews" type="integer">15</XPD:ATTR>
+<XPD:OBJ name="OwnedViews[0]" type="UMLClassView" guid="tSxGyrwfEkSgp1EcheSXaAAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">496</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">140</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">161</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">69</XPD:ATTR>
+<XPD:ATTR name="ShowProperty" type="boolean">True</XPD:ATTR>
+<XPD:REF name="Model">Ec4V6xlK5USBInAfRT+kBgAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="4OJodmUjvU6Oqy3fe+ZfuQAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="nTnCIikI3UOMxs9QtoE1sgAA">
+<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">Appender</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="iOfigC5hM06553UhkG3o4gAA">
+<XPD:ATTR name="Text" type="string">&lt;&lt;interface&gt;&gt;</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="gAAMY35/8kO92uV18LmCWAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="m+f/Nz96gEqfQeHGgfAxjwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">Ec4V6xlK5USBInAfRT+kBgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="ViAxcLeYxEC/QDB9dCuwagAA">
+<XPD:REF name="Model">Ec4V6xlK5USBInAfRT+kBgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="gvxeAhX+WkGcvqw6KjlA7wAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">Ec4V6xlK5USBInAfRT+kBgAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[1]" type="UMLClassView" guid="NaiNuZ1qLUu+5nZq2pgoJgAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">448</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">384</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">257</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">69</XPD:ATTR>
+<XPD:REF name="Model">rzT262Z1jEeiLPfjq8YXAQAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="3Qx0O28WLEC1wlpntM/QWQAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="gLLmeDlS+Ua9NL1IKkZqBgAA">
+<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">OutputStreamAppender</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="7awZOkK3cUS1dBI9YKP2TwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="LtVVLfcmbkq7TWeA6T7S4AAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="H/1viIm6yE20XaYIV5XQmgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">rzT262Z1jEeiLPfjq8YXAQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="/LiIyuskqE6jkbei5roLSgAA">
+<XPD:REF name="Model">rzT262Z1jEeiLPfjq8YXAQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="LFUOQyCzKkODyDltdenqSQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">rzT262Z1jEeiLPfjq8YXAQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[2]" type="UMLClassView" guid="82N1NUXIMU2s0JVvIgA33wAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">460</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">248</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">233</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">95</XPD:ATTR>
+<XPD:REF name="Model">xVL+I0ePyEKePe2ybmIZqQAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="MEOstStI0EC0RQoiT5DFLQAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="CDkuaYXZDEC5+cMzdHsl8wAA">
+<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">UnsynchronizedAppenderBase</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="N/VzkXk9vkGTb/Gq05Hm4gAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="Wbq2KwFqq0uOx2yShkE49QAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="MbkisNcJq06fy8rfNf//qgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">xVL+I0ePyEKePe2ybmIZqQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="bHWlSSp0L0KsF9iS2K/VuAAA">
+<XPD:REF name="Model">xVL+I0ePyEKePe2ybmIZqQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="A3o0HBZQP0+GUAIDarVM5AAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">xVL+I0ePyEKePe2ybmIZqQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[3]" type="UMLClassView" guid="uk+yKXVJ4kGbJp9tS5jKTwAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">348</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">500</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">205</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">56</XPD:ATTR>
+<XPD:REF name="Model">yqvs3sZ9DUGqcZqP0JhEYQAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="pd1JNpNdxkm4N3mMjABxcgAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="Jfgvt5uhf0aDXP4fvB8FuAAA">
+<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">ConsoleAppender</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="x915MlraB0+hK5agb0HxVwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="o72CPBdC2UGyraSt4vxsHQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="nH6UBhoeX0KbQRIkAzLiWAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">yqvs3sZ9DUGqcZqP0JhEYQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="Jb94kigpgUqu4dlcc+CGdAAA">
+<XPD:REF name="Model">yqvs3sZ9DUGqcZqP0JhEYQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="QxduxAxohEmCZQGHeQsZcgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">yqvs3sZ9DUGqcZqP0JhEYQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[4]" type="UMLRealizationView" guid="lL0hvfNl1UCp0ZckmzYqAAAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">576,248;576,208</XPD:ATTR>
+<XPD:REF name="Model">MLMgV5lk30+73KeQUlkJ1AAA</XPD:REF>
+<XPD:REF name="Head">tSxGyrwfEkSgp1EcheSXaAAA</XPD:REF>
+<XPD:REF name="Tail">82N1NUXIMU2s0JVvIgA33wAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="R+yIkrw1xkGRRmxo6cIv7AAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">MLMgV5lk30+73KeQUlkJ1AAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="MHt2cHh8nkq4xztkXeNA1AAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:REF name="Model">MLMgV5lk30+73KeQUlkJ1AAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="1cFzyVYsZUexhz9n3LRU9AAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">MLMgV5lk30+73KeQUlkJ1AAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[5]" type="UMLGeneralizationView" guid="fqotcKjEKUu0dHy5krCbbgAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">576,384;576,342</XPD:ATTR>
+<XPD:REF name="Model">iGZQWONRSkmUZXwA2ctTYAAA</XPD:REF>
+<XPD:REF name="Head">82N1NUXIMU2s0JVvIgA33wAA</XPD:REF>
+<XPD:REF name="Tail">NaiNuZ1qLUu+5nZq2pgoJgAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="a5TKNXnsu0Cm1O3vWK2A5QAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">iGZQWONRSkmUZXwA2ctTYAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="lfapsg0nvkOzLtKq21jKcQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:REF name="Model">iGZQWONRSkmUZXwA2ctTYAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="J/CqIqCm4k64OiOc5XyUFgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">iGZQWONRSkmUZXwA2ctTYAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[6]" type="UMLGeneralizationView" guid="Byj7ulJD9UmN+tawKGwCEgAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">481,500;537,452</XPD:ATTR>
+<XPD:REF name="Model">AjD3odwWRkqn7DLLtsqSMQAA</XPD:REF>
+<XPD:REF name="Head">NaiNuZ1qLUu+5nZq2pgoJgAA</XPD:REF>
+<XPD:REF name="Tail">uk+yKXVJ4kGbJp9tS5jKTwAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="HQiDhC6IA0iqlMhf1tdcJQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">AjD3odwWRkqn7DLLtsqSMQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="npCChlHvbECPkeBWStHdGwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:REF name="Model">AjD3odwWRkqn7DLLtsqSMQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="DNi8lqQWi0GHkNrHlB+wdAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">AjD3odwWRkqn7DLLtsqSMQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[7]" type="UMLClassView" guid="umRYCn2dek6PVCutQ7EHjgAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">612</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">500</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">181</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">82</XPD:ATTR>
+<XPD:REF name="Model">fbO+5cdSPEmSXuXSqE8gXgAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="IY/ehYDmxki8kSqbCHHCfQAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="lcA4v9eDHUugTZoPU740LAAA">
+<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">FileAppender</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="OVAuCrBMykaCfcii7gDdCwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="xiHCrB3qu0yBBg0U/q3EawAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="XJMRRQ4IvEKN76PkDbMKOQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">fbO+5cdSPEmSXuXSqE8gXgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="wZmHw439VE+zuefCYQQqVAAA">
+<XPD:REF name="Model">fbO+5cdSPEmSXuXSqE8gXgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="PHqgEBQhpEmlVKbjkRedkAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">fbO+5cdSPEmSXuXSqE8gXgAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[8]" type="UMLGeneralizationView" guid="xnvee9U5202YS/ztrwJSRAAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">661,500;611,452</XPD:ATTR>
+<XPD:REF name="Model">DwI/SvxrPEa+xlJeUNknVQAA</XPD:REF>
+<XPD:REF name="Head">NaiNuZ1qLUu+5nZq2pgoJgAA</XPD:REF>
+<XPD:REF name="Tail">umRYCn2dek6PVCutQ7EHjgAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="oASzcKN58EuYmztjk4WiEwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">DwI/SvxrPEa+xlJeUNknVQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="O0OgQK6n40urO6JVc74njgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:REF name="Model">DwI/SvxrPEa+xlJeUNknVQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="bgKTOidFkEeRLn6bk0KEEgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">DwI/SvxrPEa+xlJeUNknVQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[9]" type="UMLClassView" guid="rHFGD6C9T0y5SMWPFgS09QAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">596</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">628</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">213</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">69</XPD:ATTR>
+<XPD:REF name="Model">V4xOMUpxokyB4fxrQNJPxQAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="OuAPH3aKlk2rg4cWgwv2BQAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="BEu6SCte7E6fslLxmD8brgAA">
+<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">RollingFileAppender</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="diAZdqUjrUSnaEkyvki5HwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="HpL3GnQOO0KyNABCTyAsRwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="1hKuFZUojkuzeqX9AiWUlwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">V4xOMUpxokyB4fxrQNJPxQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="g+GUofZEmU2lEM1VL3vLIQAA">
+<XPD:REF name="Model">V4xOMUpxokyB4fxrQNJPxQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="4HSOp+H3/ECJnOpzcIo3jwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">V4xOMUpxokyB4fxrQNJPxQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[10]" type="UMLClassView" guid="0AQ8gdYUKk2Ms7nTdCyd3QAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">788</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">372</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">137</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">95</XPD:ATTR>
+<XPD:REF name="Model">F1lk6TogWUGfYFH4FvBLOAAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="h/ce/kieOUyyxRZ6c71fTQAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="UZy1Qq+RWUWzR+BkMD2qBwAA">
+<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">Encoder</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="A/4/paNKfEeyuIjaeXDosAAA">
+<XPD:ATTR name="Text" type="string">&lt;&lt;interface&gt;&gt;</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="Y950eaGp5kKS5JcixC2pLAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="lyHSH0gj5USAm8DDiVvc1AAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">F1lk6TogWUGfYFH4FvBLOAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="A7cLwlK4RESapHusUAalugAA">
+<XPD:REF name="Model">F1lk6TogWUGfYFH4FvBLOAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="qQCEnWeXyUaictLrSH/4IgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">F1lk6TogWUGfYFH4FvBLOAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[11]" type="UMLAssociationView" guid="lMmxZJude0e4iK5TJK4KmwAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">788,419;704,419</XPD:ATTR>
+<XPD:REF name="Model">kXyf6+RLrki8M9yh9qd9JwAA</XPD:REF>
+<XPD:REF name="Head">NaiNuZ1qLUu+5nZq2pgoJgAA</XPD:REF>
+<XPD:REF name="Tail">0AQ8gdYUKk2Ms7nTdCyd3QAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="Lpxx+3J+D0S223D5ODQq4wAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">kXyf6+RLrki8M9yh9qd9JwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="rhfNbKEGWUaK9KPGeno2AAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:REF name="Model">kXyf6+RLrki8M9yh9qd9JwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="5lfzJsxzLkS60zCpNz5+twAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">kXyf6+RLrki8M9yh9qd9JwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="w+U1pR05XkeMT1rnnS2TcgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">KNPa5jL8m0SnxCPJDiLPEwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="G2JYoZaOKku0lwIKN7cKRQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">JFP7YnD8ak2COLWe8jfBSwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="Wzm+qJkDL0+jgE0ioVsNvwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">25</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">KNPa5jL8m0SnxCPJDiLPEwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="h/GU+p9gHkyMIIzW5Tap4wAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">25</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">JFP7YnD8ak2COLWe8jfBSwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="MLngpvqsdU+i4Djdsali7wAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0.785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">KNPa5jL8m0SnxCPJDiLPEwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="yN2upZx6REeZpBi/IRMnlgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0.785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">JFP7YnD8ak2COLWe8jfBSwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="ZVjULz2utUKwdUcoGweZkgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">KNPa5jL8m0SnxCPJDiLPEwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="4leicQixUEWISYBF6P8LSgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">JFP7YnD8ak2COLWe8jfBSwAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[12]" type="UMLGeneralizationView" guid="VGws4gb7FEGKDPIpXKW13QAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">702,628;702,581</XPD:ATTR>
+<XPD:REF name="Model">MAm8gr3YDE+lxocsUB9afAAA</XPD:REF>
+<XPD:REF name="Head">umRYCn2dek6PVCutQ7EHjgAA</XPD:REF>
+<XPD:REF name="Tail">rHFGD6C9T0y5SMWPFgS09QAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="2t9xQX0DaECER1G841x4ggAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">MAm8gr3YDE+lxocsUB9afAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="ZJ+e5yqWkkyJmgI5NCe9qQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:REF name="Model">MAm8gr3YDE+lxocsUB9afAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="uWFySM7Jq026r7z2lz9/TgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">MAm8gr3YDE+lxocsUB9afAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[13]" type="UMLClassView" guid="XnLeT4tUAUivKFCoAi8mCgAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">240</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">392</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">152</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">56</XPD:ATTR>
+<XPD:REF name="Model">ObD18j8uiUuqWEEES+U7VwAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="w2rmuF62nUmUAhOhrmqOyQAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="irr7mImnC0OIf0QeBwSo3AAA">
+<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">Filter</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="/ZkI9RE/EkCmMYBYxW9vSgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="/Seh5JPXJ0WqIDeUCCMxGQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="Y+K3bBi2DEiJlBzf/w+degAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">ObD18j8uiUuqWEEES+U7VwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="x12I7wVJHkKX8s9N/bVWLQAA">
+<XPD:REF name="Model">ObD18j8uiUuqWEEES+U7VwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="ybd6Chc7bUaikqpMu2gydwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">ObD18j8uiUuqWEEES+U7VwAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[14]" type="UMLAssociationView" guid="1GuVB976AUueN1l11+x/9AAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">391,419;448,419</XPD:ATTR>
+<XPD:REF name="Model">uh4HvYt2ZECJHo2VN0YtPwAA</XPD:REF>
+<XPD:REF name="Head">NaiNuZ1qLUu+5nZq2pgoJgAA</XPD:REF>
+<XPD:REF name="Tail">XnLeT4tUAUivKFCoAi8mCgAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="rvc1lZzjJkyWMr6P/IPRnQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">uh4HvYt2ZECJHo2VN0YtPwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="bCA0jUpnukKQFQdvrUXC5gAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:REF name="Model">uh4HvYt2ZECJHo2VN0YtPwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="okxxVKfDiESE7wFAiHiTwQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">uh4HvYt2ZECJHo2VN0YtPwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="IPgYB1C27EyGv2x09901MgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">IA0uuG/DqUSPP93NTt7KPwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="mdaJom9Aq0CCnF2E8j5mfgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">rtqCfaDNzE6xCSqNvsGQmAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="QVrq+D0yCke4xdkp2ecVFgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">25</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">IA0uuG/DqUSPP93NTt7KPwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="u6QeWosm+0GF06B6oeoA3AAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">25</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">rtqCfaDNzE6xCSqNvsGQmAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="YoNg+kiZ/0Kk9BC8Hs4jBgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0.785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">IA0uuG/DqUSPP93NTt7KPwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="TwLu6YMezke1PLwCqD9EKwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0.785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">rtqCfaDNzE6xCSqNvsGQmAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="j3F8XkYCU0K+Wb/6ACwHmAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">IA0uuG/DqUSPP93NTt7KPwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="5M6UkF5vREiYn4A49eajJAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">rtqCfaDNzE6xCSqNvsGQmAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:ATTR name="#OwnedElements" type="integer">28</XPD:ATTR>
+<XPD:OBJ name="OwnedElements[0]" type="UMLInterface" guid="bL5DGTE1wkqFiYq+yJuTRAAA">
+<XPD:ATTR name="Name" type="string">Bae, Rankyoung</XPD:ATTR>
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[1]" type="UMLInterface" guid="PfW7flMvskqKmFDofejCYQAA">
+<XPD:ATTR name="Name" type="string">Jung, Yoontae</XPD:ATTR>
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[2]" type="UMLInterface" guid="XthOkDh0rk67+FyPgXCRgAAA">
+<XPD:ATTR name="Name" type="string">Kim, Hyunsoo</XPD:ATTR>
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[3]" type="UMLInterface" guid="WhfjywuM1kqS7RtEmuvAlgAA">
+<XPD:ATTR name="Name" type="string">Kim, Jeongil</XPD:ATTR>
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[4]" type="UMLClass" guid="Ec4V6xlK5USBInAfRT+kBgAA">
+<XPD:ATTR name="Name" type="string">Appender</XPD:ATTR>
+<XPD:ATTR name="StereotypeName" type="string">interface</XPD:ATTR>
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">tSxGyrwfEkSgp1EcheSXaAAA</XPD:REF>
+<XPD:REF name="Views[1]">m+f/Nz96gEqfQeHGgfAxjwAA</XPD:REF>
+<XPD:REF name="Views[2]">ViAxcLeYxEC/QDB9dCuwagAA</XPD:REF>
+<XPD:REF name="Views[3]">gvxeAhX+WkGcvqw6KjlA7wAA</XPD:REF>
+<XPD:ATTR name="#ClientDependencies" type="integer">1</XPD:ATTR>
+<XPD:REF name="ClientDependencies[0]">kjMmekdMhUCZp7nT1+7m5QAA</XPD:REF>
+<XPD:ATTR name="#SupplierDependencies" type="integer">2</XPD:ATTR>
+<XPD:REF name="SupplierDependencies[0]">MLMgV5lk30+73KeQUlkJ1AAA</XPD:REF>
+<XPD:REF name="SupplierDependencies[1]">kjMmekdMhUCZp7nT1+7m5QAA</XPD:REF>
+<XPD:ATTR name="#Operations" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="Operations[0]" type="UMLOperation" guid="FRx7C/jgm0uUQ2KJbSES0QAA">
+<XPD:ATTR name="Name" type="string">doAppend</XPD:ATTR>
+<XPD:REF name="Owner">Ec4V6xlK5USBInAfRT+kBgAA</XPD:REF>
+<XPD:ATTR name="#Parameters" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="HEOzMeB7hUCVhMMCFiMU/QAA">
+<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">void</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">FRx7C/jgm0uUQ2KJbSES0QAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Parameters[1]" type="UMLParameter" guid="/QxGe2nRTke4OPZr6B8DjwAA">
+<XPD:ATTR name="Name" type="string">E event</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">FRx7C/jgm0uUQ2KJbSES0QAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[5]" type="UMLClass" guid="wrUqRmysaUaTNG+EIldTAgAA">
+<XPD:ATTR name="Name" type="string">Lee, Jangwoo</XPD:ATTR>
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[6]" type="UMLClass" guid="R4ueGs13U0uU7uA7GfQuwgAA">
+<XPD:ATTR name="Name" type="string">Lee, Minkyu</XPD:ATTR>
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[7]" type="UMLClass" guid="cZJpDMIhLkaN+6380nTjCgAA">
+<XPD:ATTR name="Name" type="string">Lim, Heejin</XPD:ATTR>
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[8]" type="UMLInterface" guid="KkLGJmfcO0y7keuSLh3xpQAA">
+<XPD:ATTR name="Name" type="string">Bae, Rankyoung1</XPD:ATTR>
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[9]" type="UMLClass" guid="rzT262Z1jEeiLPfjq8YXAQAA">
+<XPD:ATTR name="Name" type="string">OutputStreamAppender</XPD:ATTR>
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">NaiNuZ1qLUu+5nZq2pgoJgAA</XPD:REF>
+<XPD:REF name="Views[1]">H/1viIm6yE20XaYIV5XQmgAA</XPD:REF>
+<XPD:REF name="Views[2]">/LiIyuskqE6jkbei5roLSgAA</XPD:REF>
+<XPD:REF name="Views[3]">LFUOQyCzKkODyDltdenqSQAA</XPD:REF>
+<XPD:ATTR name="#Generalizations" type="integer">1</XPD:ATTR>
+<XPD:REF name="Generalizations[0]">iGZQWONRSkmUZXwA2ctTYAAA</XPD:REF>
+<XPD:ATTR name="#Specializations" type="integer">2</XPD:ATTR>
+<XPD:REF name="Specializations[0]">AjD3odwWRkqn7DLLtsqSMQAA</XPD:REF>
+<XPD:REF name="Specializations[1]">DwI/SvxrPEa+xlJeUNknVQAA</XPD:REF>
+<XPD:ATTR name="#Operations" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Operations[0]" type="UMLOperation" guid="Y/8ny1CDlUmGw7XO+p1IVAAA">
+<XPD:ATTR name="Name" type="string">setOutputStream</XPD:ATTR>
+<XPD:REF name="Owner">rzT262Z1jEeiLPfjq8YXAQAA</XPD:REF>
+<XPD:ATTR name="#Parameters" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="o7mxtv1VFUuGMzTZ/PzpJQAA">
+<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">void</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">Y/8ny1CDlUmGw7XO+p1IVAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Parameters[1]" type="UMLParameter" guid="WiQnBPlZNUKAb1kDr8rYMAAA">
+<XPD:ATTR name="Name" type="string">OutputStream</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">Y/8ny1CDlUmGw7XO+p1IVAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="Operations[1]" type="UMLOperation" guid="LBTffoJKpkuteoCZOKUnaQAA">
+<XPD:ATTR name="Name" type="string">setEncoder</XPD:ATTR>
+<XPD:REF name="Owner">rzT262Z1jEeiLPfjq8YXAQAA</XPD:REF>
+<XPD:ATTR name="#Parameters" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="QBbT8+accEGiDOyIxemC6gAA">
+<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">void</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">LBTffoJKpkuteoCZOKUnaQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Parameters[1]" type="UMLParameter" guid="euJK1npBAkKQLyA/ixyf4gAA">
+<XPD:ATTR name="Name" type="string">Encoder&lt;E&gt;</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">LBTffoJKpkuteoCZOKUnaQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:ATTR name="#Associations" type="integer">3</XPD:ATTR>
+<XPD:REF name="Associations[0]">CNBYSz/4s0OUBwR3Ujj7qAAA</XPD:REF>
+<XPD:REF name="Associations[1]">KNPa5jL8m0SnxCPJDiLPEwAA</XPD:REF>
+<XPD:REF name="Associations[2]">IA0uuG/DqUSPP93NTt7KPwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[10]" type="UMLClass" guid="xVL+I0ePyEKePe2ybmIZqQAA">
+<XPD:ATTR name="Name" type="string">UnsynchronizedAppenderBase</XPD:ATTR>
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">82N1NUXIMU2s0JVvIgA33wAA</XPD:REF>
+<XPD:REF name="Views[1]">MbkisNcJq06fy8rfNf//qgAA</XPD:REF>
+<XPD:REF name="Views[2]">bHWlSSp0L0KsF9iS2K/VuAAA</XPD:REF>
+<XPD:REF name="Views[3]">A3o0HBZQP0+GUAIDarVM5AAA</XPD:REF>
+<XPD:ATTR name="#ClientDependencies" type="integer">1</XPD:ATTR>
+<XPD:REF name="ClientDependencies[0]">MLMgV5lk30+73KeQUlkJ1AAA</XPD:REF>
+<XPD:ATTR name="#Generalizations" type="integer">1</XPD:ATTR>
+<XPD:REF name="Generalizations[0]">mt8sHMuW6k6vvkswchHN9AAA</XPD:REF>
+<XPD:ATTR name="#Specializations" type="integer">2</XPD:ATTR>
+<XPD:REF name="Specializations[0]">mt8sHMuW6k6vvkswchHN9AAA</XPD:REF>
+<XPD:REF name="Specializations[1]">iGZQWONRSkmUZXwA2ctTYAAA</XPD:REF>
+<XPD:ATTR name="#Operations" type="integer">4</XPD:ATTR>
+<XPD:OBJ name="Operations[0]" type="UMLOperation" guid="QrizX1w8Uk+lWkr80819WAAA">
+<XPD:ATTR name="Name" type="string">doAppend</XPD:ATTR>
+<XPD:REF name="Owner">xVL+I0ePyEKePe2ybmIZqQAA</XPD:REF>
+<XPD:ATTR name="#Parameters" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="i3SFY3XjzkqfjCdeRItB0AAA">
+<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">void</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">QrizX1w8Uk+lWkr80819WAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Parameters[1]" type="UMLParameter" guid="rcsyT8SmtEaJWAgOu29ifgAA">
+<XPD:ATTR name="Name" type="string">E event</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">QrizX1w8Uk+lWkr80819WAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="Operations[1]" type="UMLOperation" guid="G5EvR3IAqUWyIUSQT5iKfAAA">
+<XPD:ATTR name="Name" type="string">append</XPD:ATTR>
+<XPD:ATTR name="Visibility" type="UMLVisibilityKind">vkProtected</XPD:ATTR>
+<XPD:REF name="Owner">xVL+I0ePyEKePe2ybmIZqQAA</XPD:REF>
+<XPD:ATTR name="#Parameters" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="BZo+omwID0Op8lvSMhrmCAAA">
+<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">void</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">G5EvR3IAqUWyIUSQT5iKfAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Parameters[1]" type="UMLParameter" guid="0mhi1Re0mUaekyTApQtYKgAA">
+<XPD:ATTR name="Name" type="string">E event</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">G5EvR3IAqUWyIUSQT5iKfAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="Operations[2]" type="UMLOperation" guid="noZlW3WOpUSNYP7MIP2dIAAA">
+<XPD:ATTR name="Name" type="string">addFilter</XPD:ATTR>
+<XPD:REF name="Owner">xVL+I0ePyEKePe2ybmIZqQAA</XPD:REF>
+<XPD:ATTR name="#Parameters" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="7JBY4nyhIES1n0jpwFzs0wAA">
+<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">void</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">noZlW3WOpUSNYP7MIP2dIAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Parameters[1]" type="UMLParameter" guid="Zd/8hSZIgUuOnnlNuMOW3QAA">
+<XPD:ATTR name="Name" type="string">Filter&lt;E&gt; filter</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">noZlW3WOpUSNYP7MIP2dIAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="Operations[3]" type="UMLOperation" guid="+Hda0J6VTEGM7V6+m3aW7QAA">
+<XPD:ATTR name="Name" type="string">getFilterChainDecision</XPD:ATTR>
+<XPD:REF name="Owner">xVL+I0ePyEKePe2ybmIZqQAA</XPD:REF>
+<XPD:ATTR name="#Parameters" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="b7Oh8zbH6kKEeryzkMlLQgAA">
+<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">FilterReply</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">+Hda0J6VTEGM7V6+m3aW7QAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Parameters[1]" type="UMLParameter" guid="QFIz2saC3kK9QRns9gVVIwAA">
+<XPD:ATTR name="Name" type="string">E event</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">+Hda0J6VTEGM7V6+m3aW7QAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[11]" type="UMLClass" guid="yqvs3sZ9DUGqcZqP0JhEYQAA">
+<XPD:ATTR name="Name" type="string">ConsoleAppender</XPD:ATTR>
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">uk+yKXVJ4kGbJp9tS5jKTwAA</XPD:REF>
+<XPD:REF name="Views[1]">nH6UBhoeX0KbQRIkAzLiWAAA</XPD:REF>
+<XPD:REF name="Views[2]">Jb94kigpgUqu4dlcc+CGdAAA</XPD:REF>
+<XPD:REF name="Views[3]">QxduxAxohEmCZQGHeQsZcgAA</XPD:REF>
+<XPD:ATTR name="#Generalizations" type="integer">3</XPD:ATTR>
+<XPD:REF name="Generalizations[0]">KECSr2IcSEKuUekqxWFfQQAA</XPD:REF>
+<XPD:REF name="Generalizations[1]">jfTGxiHUzUynYKDudsAtlgAA</XPD:REF>
+<XPD:REF name="Generalizations[2]">AjD3odwWRkqn7DLLtsqSMQAA</XPD:REF>
+<XPD:ATTR name="#Specializations" type="integer">2</XPD:ATTR>
+<XPD:REF name="Specializations[0]">KECSr2IcSEKuUekqxWFfQQAA</XPD:REF>
+<XPD:REF name="Specializations[1]">jfTGxiHUzUynYKDudsAtlgAA</XPD:REF>
+<XPD:ATTR name="#Operations" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="Operations[0]" type="UMLOperation" guid="QBjgNn4eI0Gb0Lu8uW8RgQAA">
+<XPD:ATTR name="Name" type="string">setTarget</XPD:ATTR>
+<XPD:REF name="Owner">yqvs3sZ9DUGqcZqP0JhEYQAA</XPD:REF>
+<XPD:ATTR name="#Parameters" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="D6Tvg4B6zk2nDCrvCSXiogAA">
+<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">void</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">QBjgNn4eI0Gb0Lu8uW8RgQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Parameters[1]" type="UMLParameter" guid="5HN4co7SEkGYIIXb9P4IcwAA">
+<XPD:ATTR name="Name" type="string">String</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">QBjgNn4eI0Gb0Lu8uW8RgQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[12]" type="UMLRealization" guid="MLMgV5lk30+73KeQUlkJ1AAA">
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:REF name="Client">xVL+I0ePyEKePe2ybmIZqQAA</XPD:REF>
+<XPD:REF name="Supplier">Ec4V6xlK5USBInAfRT+kBgAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">lL0hvfNl1UCp0ZckmzYqAAAA</XPD:REF>
+<XPD:REF name="Views[1]">R+yIkrw1xkGRRmxo6cIv7AAA</XPD:REF>
+<XPD:REF name="Views[2]">MHt2cHh8nkq4xztkXeNA1AAA</XPD:REF>
+<XPD:REF name="Views[3]">1cFzyVYsZUexhz9n3LRU9AAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[13]" type="UMLRealization" guid="kjMmekdMhUCZp7nT1+7m5QAA">
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:REF name="Client">Ec4V6xlK5USBInAfRT+kBgAA</XPD:REF>
+<XPD:REF name="Supplier">Ec4V6xlK5USBInAfRT+kBgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[14]" type="UMLGeneralization" guid="mt8sHMuW6k6vvkswchHN9AAA">
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:REF name="Child">xVL+I0ePyEKePe2ybmIZqQAA</XPD:REF>
+<XPD:REF name="Parent">xVL+I0ePyEKePe2ybmIZqQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[15]" type="UMLGeneralization" guid="iGZQWONRSkmUZXwA2ctTYAAA">
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:REF name="Child">rzT262Z1jEeiLPfjq8YXAQAA</XPD:REF>
+<XPD:REF name="Parent">xVL+I0ePyEKePe2ybmIZqQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">fqotcKjEKUu0dHy5krCbbgAA</XPD:REF>
+<XPD:REF name="Views[1]">a5TKNXnsu0Cm1O3vWK2A5QAA</XPD:REF>
+<XPD:REF name="Views[2]">lfapsg0nvkOzLtKq21jKcQAA</XPD:REF>
+<XPD:REF name="Views[3]">J/CqIqCm4k64OiOc5XyUFgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[16]" type="UMLGeneralization" guid="KECSr2IcSEKuUekqxWFfQQAA">
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:REF name="Child">yqvs3sZ9DUGqcZqP0JhEYQAA</XPD:REF>
+<XPD:REF name="Parent">yqvs3sZ9DUGqcZqP0JhEYQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[17]" type="UMLGeneralization" guid="jfTGxiHUzUynYKDudsAtlgAA">
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:REF name="Child">yqvs3sZ9DUGqcZqP0JhEYQAA</XPD:REF>
+<XPD:REF name="Parent">yqvs3sZ9DUGqcZqP0JhEYQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[18]" type="UMLGeneralization" guid="AjD3odwWRkqn7DLLtsqSMQAA">
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:REF name="Child">yqvs3sZ9DUGqcZqP0JhEYQAA</XPD:REF>
+<XPD:REF name="Parent">rzT262Z1jEeiLPfjq8YXAQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">Byj7ulJD9UmN+tawKGwCEgAA</XPD:REF>
+<XPD:REF name="Views[1]">HQiDhC6IA0iqlMhf1tdcJQAA</XPD:REF>
+<XPD:REF name="Views[2]">npCChlHvbECPkeBWStHdGwAA</XPD:REF>
+<XPD:REF name="Views[3]">DNi8lqQWi0GHkNrHlB+wdAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[19]" type="UMLClass" guid="fbO+5cdSPEmSXuXSqE8gXgAA">
+<XPD:ATTR name="Name" type="string">FileAppender</XPD:ATTR>
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">umRYCn2dek6PVCutQ7EHjgAA</XPD:REF>
+<XPD:REF name="Views[1]">XJMRRQ4IvEKN76PkDbMKOQAA</XPD:REF>
+<XPD:REF name="Views[2]">wZmHw439VE+zuefCYQQqVAAA</XPD:REF>
+<XPD:REF name="Views[3]">PHqgEBQhpEmlVKbjkRedkAAA</XPD:REF>
+<XPD:ATTR name="#Generalizations" type="integer">1</XPD:ATTR>
+<XPD:REF name="Generalizations[0]">DwI/SvxrPEa+xlJeUNknVQAA</XPD:REF>
+<XPD:ATTR name="#Specializations" type="integer">1</XPD:ATTR>
+<XPD:REF name="Specializations[0]">MAm8gr3YDE+lxocsUB9afAAA</XPD:REF>
+<XPD:ATTR name="#Operations" type="integer">3</XPD:ATTR>
+<XPD:OBJ name="Operations[0]" type="UMLOperation" guid="RGzx8sTCQ0+SvjEhj3FCpwAA">
+<XPD:ATTR name="Name" type="string">setFile</XPD:ATTR>
+<XPD:REF name="Owner">fbO+5cdSPEmSXuXSqE8gXgAA</XPD:REF>
+<XPD:ATTR name="#Parameters" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="uxSNpKmGV0+K54EwgffqpgAA">
+<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">void</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">RGzx8sTCQ0+SvjEhj3FCpwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Parameters[1]" type="UMLParameter" guid="i90wHpacOEiHseZIDnpZAAAA">
+<XPD:ATTR name="Name" type="string">String</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">RGzx8sTCQ0+SvjEhj3FCpwAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="Operations[1]" type="UMLOperation" guid="emxKAOn2sEGODzlrBwfBDQAA">
+<XPD:ATTR name="Name" type="string">setPrudent</XPD:ATTR>
+<XPD:REF name="Owner">fbO+5cdSPEmSXuXSqE8gXgAA</XPD:REF>
+<XPD:ATTR name="#Parameters" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="Qzhwjji8FkawThwNpGWYlAAA">
+<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">void</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">emxKAOn2sEGODzlrBwfBDQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Parameters[1]" type="UMLParameter" guid="/c5zBe26tkWrpTH8RQJKDgAA">
+<XPD:ATTR name="Name" type="string">boolean</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">emxKAOn2sEGODzlrBwfBDQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="Operations[2]" type="UMLOperation" guid="pzOru1aa1kKBEpPdw/x8HwAA">
+<XPD:ATTR name="Name" type="string">setAppend</XPD:ATTR>
+<XPD:REF name="Owner">fbO+5cdSPEmSXuXSqE8gXgAA</XPD:REF>
+<XPD:ATTR name="#Parameters" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="xfe5Kz7eGUGt/qsdAVz1nwAA">
+<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">void</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">pzOru1aa1kKBEpPdw/x8HwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Parameters[1]" type="UMLParameter" guid="byGZtqglLkSMXqHvyAwzXQAA">
+<XPD:ATTR name="Name" type="string">boolean</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">pzOru1aa1kKBEpPdw/x8HwAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[20]" type="UMLGeneralization" guid="DwI/SvxrPEa+xlJeUNknVQAA">
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:REF name="Child">fbO+5cdSPEmSXuXSqE8gXgAA</XPD:REF>
+<XPD:REF name="Parent">rzT262Z1jEeiLPfjq8YXAQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">xnvee9U5202YS/ztrwJSRAAA</XPD:REF>
+<XPD:REF name="Views[1]">oASzcKN58EuYmztjk4WiEwAA</XPD:REF>
+<XPD:REF name="Views[2]">O0OgQK6n40urO6JVc74njgAA</XPD:REF>
+<XPD:REF name="Views[3]">bgKTOidFkEeRLn6bk0KEEgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[21]" type="UMLClass" guid="V4xOMUpxokyB4fxrQNJPxQAA">
+<XPD:ATTR name="Name" type="string">RollingFileAppender</XPD:ATTR>
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">rHFGD6C9T0y5SMWPFgS09QAA</XPD:REF>
+<XPD:REF name="Views[1]">1hKuFZUojkuzeqX9AiWUlwAA</XPD:REF>
+<XPD:REF name="Views[2]">g+GUofZEmU2lEM1VL3vLIQAA</XPD:REF>
+<XPD:REF name="Views[3]">4HSOp+H3/ECJnOpzcIo3jwAA</XPD:REF>
+<XPD:ATTR name="#Generalizations" type="integer">1</XPD:ATTR>
+<XPD:REF name="Generalizations[0]">MAm8gr3YDE+lxocsUB9afAAA</XPD:REF>
+<XPD:ATTR name="#Operations" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Operations[0]" type="UMLOperation" guid="zJE7QEhOYkGwavHKRi/e1gAA">
+<XPD:ATTR name="Name" type="string">setRollingPolicy</XPD:ATTR>
+<XPD:REF name="Owner">V4xOMUpxokyB4fxrQNJPxQAA</XPD:REF>
+<XPD:ATTR name="#Parameters" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="fBG8X0xpiU2QG4VhcArHXwAA">
+<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">void</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">zJE7QEhOYkGwavHKRi/e1gAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Parameters[1]" type="UMLParameter" guid="pokyvx+ik0yawdfYXl/EHQAA">
+<XPD:ATTR name="Name" type="string">RollingPolicy</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">zJE7QEhOYkGwavHKRi/e1gAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="Operations[1]" type="UMLOperation" guid="90I+pA0XnkiDcK8Um95kDwAA">
+<XPD:ATTR name="Name" type="string">setTriggeringPolicy</XPD:ATTR>
+<XPD:REF name="Owner">V4xOMUpxokyB4fxrQNJPxQAA</XPD:REF>
+<XPD:ATTR name="#Parameters" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="/rKEm7ax1kOVmGAMDsfXRgAA">
+<XPD:ATTR name="Name" type="string">TriggeringPolicy&lt;E&gt;</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">90I+pA0XnkiDcK8Um95kDwAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[22]" type="UMLClass" guid="F1lk6TogWUGfYFH4FvBLOAAA">
+<XPD:ATTR name="Name" type="string">Encoder</XPD:ATTR>
+<XPD:ATTR name="StereotypeName" type="string">interface</XPD:ATTR>
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">0AQ8gdYUKk2Ms7nTdCyd3QAA</XPD:REF>
+<XPD:REF name="Views[1]">lyHSH0gj5USAm8DDiVvc1AAA</XPD:REF>
+<XPD:REF name="Views[2]">A7cLwlK4RESapHusUAalugAA</XPD:REF>
+<XPD:REF name="Views[3]">qQCEnWeXyUaictLrSH/4IgAA</XPD:REF>
+<XPD:ATTR name="#Operations" type="integer">3</XPD:ATTR>
+<XPD:OBJ name="Operations[0]" type="UMLOperation" guid="KTkAdBDG1k6vBX6/3VDh3wAA">
+<XPD:ATTR name="Name" type="string">init</XPD:ATTR>
+<XPD:REF name="Owner">F1lk6TogWUGfYFH4FvBLOAAA</XPD:REF>
+<XPD:ATTR name="#Parameters" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="K1xInu1IW06VU8RAornDFgAA">
+<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">void</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">KTkAdBDG1k6vBX6/3VDh3wAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Parameters[1]" type="UMLParameter" guid="q0oNOzYnwkC00CgD5grrpgAA">
+<XPD:ATTR name="Name" type="string">OutputStream</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">KTkAdBDG1k6vBX6/3VDh3wAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="Operations[1]" type="UMLOperation" guid="0OIKQj9lz0epLF4VThStRgAA">
+<XPD:ATTR name="Name" type="string">doEncode</XPD:ATTR>
+<XPD:REF name="Owner">F1lk6TogWUGfYFH4FvBLOAAA</XPD:REF>
+<XPD:ATTR name="#Parameters" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="DMbvra8Y4E+d/ziodIGqyQAA">
+<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">void</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">0OIKQj9lz0epLF4VThStRgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Parameters[1]" type="UMLParameter" guid="v+KY7Q4t4kak92z8YJ0K7AAA">
+<XPD:ATTR name="Name" type="string">E event</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">0OIKQj9lz0epLF4VThStRgAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="Operations[2]" type="UMLOperation" guid="I6ieXuGhMkCcbz9MDCy1uAAA">
+<XPD:ATTR name="Name" type="string">close</XPD:ATTR>
+<XPD:REF name="Owner">F1lk6TogWUGfYFH4FvBLOAAA</XPD:REF>
+<XPD:ATTR name="#Parameters" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="XyFkApGcmESs4dwJgM1s8AAA">
+<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">void</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">I6ieXuGhMkCcbz9MDCy1uAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:ATTR name="#Associations" type="integer">2</XPD:ATTR>
+<XPD:REF name="Associations[0]">1RTpKQO+4U+uqZahckvNEwAA</XPD:REF>
+<XPD:REF name="Associations[1]">JFP7YnD8ak2COLWe8jfBSwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[23]" type="UMLAssociation" guid="u9/9xY5vOU2kSfX9AmlMAwAA">
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="CNBYSz/4s0OUBwR3Ujj7qAAA">
+<XPD:REF name="Association">u9/9xY5vOU2kSfX9AmlMAwAA</XPD:REF>
+<XPD:REF name="Participant">rzT262Z1jEeiLPfjq8YXAQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="1RTpKQO+4U+uqZahckvNEwAA">
+<XPD:ATTR name="Aggregation" type="UMLAggregationKind">akComposite</XPD:ATTR>
+<XPD:REF name="Association">u9/9xY5vOU2kSfX9AmlMAwAA</XPD:REF>
+<XPD:REF name="Participant">F1lk6TogWUGfYFH4FvBLOAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[24]" type="UMLAssociation" guid="kXyf6+RLrki8M9yh9qd9JwAA">
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">lMmxZJude0e4iK5TJK4KmwAA</XPD:REF>
+<XPD:REF name="Views[1]">Lpxx+3J+D0S223D5ODQq4wAA</XPD:REF>
+<XPD:REF name="Views[2]">rhfNbKEGWUaK9KPGeno2AAAA</XPD:REF>
+<XPD:REF name="Views[3]">5lfzJsxzLkS60zCpNz5+twAA</XPD:REF>
+<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="JFP7YnD8ak2COLWe8jfBSwAA">
+<XPD:REF name="Association">kXyf6+RLrki8M9yh9qd9JwAA</XPD:REF>
+<XPD:REF name="Participant">F1lk6TogWUGfYFH4FvBLOAAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">G2JYoZaOKku0lwIKN7cKRQAA</XPD:REF>
+<XPD:REF name="Views[1]">h/GU+p9gHkyMIIzW5Tap4wAA</XPD:REF>
+<XPD:REF name="Views[2]">yN2upZx6REeZpBi/IRMnlgAA</XPD:REF>
+<XPD:REF name="Views[3]">4leicQixUEWISYBF6P8LSgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="KNPa5jL8m0SnxCPJDiLPEwAA">
+<XPD:ATTR name="Aggregation" type="UMLAggregationKind">akComposite</XPD:ATTR>
+<XPD:REF name="Association">kXyf6+RLrki8M9yh9qd9JwAA</XPD:REF>
+<XPD:REF name="Participant">rzT262Z1jEeiLPfjq8YXAQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">w+U1pR05XkeMT1rnnS2TcgAA</XPD:REF>
+<XPD:REF name="Views[1]">Wzm+qJkDL0+jgE0ioVsNvwAA</XPD:REF>
+<XPD:REF name="Views[2]">MLngpvqsdU+i4Djdsali7wAA</XPD:REF>
+<XPD:REF name="Views[3]">ZVjULz2utUKwdUcoGweZkgAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[25]" type="UMLGeneralization" guid="MAm8gr3YDE+lxocsUB9afAAA">
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:REF name="Child">V4xOMUpxokyB4fxrQNJPxQAA</XPD:REF>
+<XPD:REF name="Parent">fbO+5cdSPEmSXuXSqE8gXgAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">VGws4gb7FEGKDPIpXKW13QAA</XPD:REF>
+<XPD:REF name="Views[1]">2t9xQX0DaECER1G841x4ggAA</XPD:REF>
+<XPD:REF name="Views[2]">ZJ+e5yqWkkyJmgI5NCe9qQAA</XPD:REF>
+<XPD:REF name="Views[3]">uWFySM7Jq026r7z2lz9/TgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[26]" type="UMLClass" guid="ObD18j8uiUuqWEEES+U7VwAA">
+<XPD:ATTR name="Name" type="string">Filter</XPD:ATTR>
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">XnLeT4tUAUivKFCoAi8mCgAA</XPD:REF>
+<XPD:REF name="Views[1]">Y+K3bBi2DEiJlBzf/w+degAA</XPD:REF>
+<XPD:REF name="Views[2]">x12I7wVJHkKX8s9N/bVWLQAA</XPD:REF>
+<XPD:REF name="Views[3]">ybd6Chc7bUaikqpMu2gydwAA</XPD:REF>
+<XPD:ATTR name="#Operations" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="Operations[0]" type="UMLOperation" guid="h2ChKW0gZES/JuZQuxznnwAA">
+<XPD:ATTR name="Name" type="string">decide</XPD:ATTR>
+<XPD:REF name="Owner">ObD18j8uiUuqWEEES+U7VwAA</XPD:REF>
+<XPD:ATTR name="#Parameters" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="en+rpIVeCkSoJAa812PoLwAA">
+<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">FilterReply</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">h2ChKW0gZES/JuZQuxznnwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Parameters[1]" type="UMLParameter" guid="uNlc9FZz80ancniLw7/8MgAA">
+<XPD:ATTR name="Name" type="string">E event</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">h2ChKW0gZES/JuZQuxznnwAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:ATTR name="#Associations" type="integer">1</XPD:ATTR>
+<XPD:REF name="Associations[0]">rtqCfaDNzE6xCSqNvsGQmAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[27]" type="UMLAssociation" guid="uh4HvYt2ZECJHo2VN0YtPwAA">
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">1GuVB976AUueN1l11+x/9AAA</XPD:REF>
+<XPD:REF name="Views[1]">rvc1lZzjJkyWMr6P/IPRnQAA</XPD:REF>
+<XPD:REF name="Views[2]">bCA0jUpnukKQFQdvrUXC5gAA</XPD:REF>
+<XPD:REF name="Views[3]">okxxVKfDiESE7wFAiHiTwQAA</XPD:REF>
+<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="rtqCfaDNzE6xCSqNvsGQmAAA">
+<XPD:REF name="Association">uh4HvYt2ZECJHo2VN0YtPwAA</XPD:REF>
+<XPD:REF name="Participant">ObD18j8uiUuqWEEES+U7VwAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">mdaJom9Aq0CCnF2E8j5mfgAA</XPD:REF>
+<XPD:REF name="Views[1]">TwLu6YMezke1PLwCqD9EKwAA</XPD:REF>
+<XPD:REF name="Views[2]">u6QeWosm+0GF06B6oeoA3AAA</XPD:REF>
+<XPD:REF name="Views[3]">5M6UkF5vREiYn4A49eajJAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="IA0uuG/DqUSPP93NTt7KPwAA">
+<XPD:ATTR name="Aggregation" type="UMLAggregationKind">akAggregate</XPD:ATTR>
+<XPD:REF name="Association">uh4HvYt2ZECJHo2VN0YtPwAA</XPD:REF>
+<XPD:REF name="Participant">rzT262Z1jEeiLPfjq8YXAQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">IPgYB1C27EyGv2x09901MgAA</XPD:REF>
+<XPD:REF name="Views[1]">YoNg+kiZ/0Kk9BC8Hs4jBgAA</XPD:REF>
+<XPD:REF name="Views[2]">QVrq+D0yCke4xdkp2ecVFgAA</XPD:REF>
+<XPD:REF name="Views[3]">j3F8XkYCU0K+Wb/6ACwHmAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[3]" type="UMLModel" guid="UTbE66PthkuXloDrctmmwwAA">
+<XPD:ATTR name="Name" type="string">Implementation Model</XPD:ATTR>
+<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
+<XPD:ATTR name="StereotypeName" type="string">implementationModel</XPD:ATTR>
+<XPD:REF name="Namespace">JEGKOL0wwE6O2Emy29kFuwAA</XPD:REF>
+<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="OwnedDiagrams[0]" type="UMLComponentDiagram" guid="UJbtRzsKuEa7sZAmr/tDGAAA">
+<XPD:ATTR name="Name" type="string">Main</XPD:ATTR>
+<XPD:REF name="DiagramOwner">UTbE66PthkuXloDrctmmwwAA</XPD:REF>
+<XPD:OBJ name="DiagramView" type="UMLComponentDiagramView" guid="vo5SIJcJIUWJz7mqomMr4wAA">
+<XPD:REF name="Diagram">UJbtRzsKuEa7sZAmr/tDGAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:ATTR name="#OwnedElements" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="OwnedElements[0]" type="UMLInterface" guid="naDG3jNwKEqkpiKwcQF/xgAA">
+<XPD:ATTR name="Name" type="string">dsd</XPD:ATTR>
+<XPD:REF name="Namespace">UTbE66PthkuXloDrctmmwwAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[4]" type="UMLModel" guid="sbAEE91CXU+VbUQcRp4FwgAA">
+<XPD:ATTR name="Name" type="string">Deployment Model</XPD:ATTR>
+<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
+<XPD:ATTR name="StereotypeName" type="string">deploymentModel</XPD:ATTR>
+<XPD:REF name="Namespace">JEGKOL0wwE6O2Emy29kFuwAA</XPD:REF>
+<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="OwnedDiagrams[0]" type="UMLDeploymentDiagram" guid="tzrsCrrbjka5umz88mdzIAAA">
+<XPD:ATTR name="Name" type="string">Main</XPD:ATTR>
+<XPD:REF name="DiagramOwner">sbAEE91CXU+VbUQcRp4FwgAA</XPD:REF>
+<XPD:OBJ name="DiagramView" type="UMLDeploymentDiagramView" guid="OlRAEhzdxkCw+mUnxs9v2wAA">
+<XPD:REF name="Diagram">tzrsCrrbjka5umz88mdzIAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[5]" type="UMLModel" guid="mC0A50UCikqRZT73f5NgTgAA">
+<XPD:ATTR name="Name" type="string">Analysis Model1</XPD:ATTR>
+<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
+<XPD:ATTR name="StereotypeName" type="string">analysisModel</XPD:ATTR>
+<XPD:REF name="Namespace">JEGKOL0wwE6O2Emy29kFuwAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:BODY>
+</XPD:PROJECT>
diff --git a/logback-site/src/site/resources/manual/images/chapters/appenders/appender.~ml b/logback-site/src/site/resources/manual/images/chapters/appenders/appender.~ml
new file mode 100644
index 0000000..6533149
--- /dev/null
+++ b/logback-site/src/site/resources/manual/images/chapters/appenders/appender.~ml
@@ -0,0 +1,865 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<XPD:PROJECT xmlns:XPD="http://www.staruml.com" version="1">
+<XPD:HEADER>
+<XPD:SUBUNITS>
+</XPD:SUBUNITS>
+<XPD:PROFILES>
+<XPD:PROFILE>UMLStandard</XPD:PROFILE>
+</XPD:PROFILES>
+</XPD:HEADER>
+<XPD:BODY>
+<XPD:OBJ name="DocumentElement" type="UMLProject" guid="JEGKOL0wwE6O2Emy29kFuwAA">
+<XPD:ATTR name="Title" type="string">Untitled</XPD:ATTR>
+<XPD:ATTR name="#OwnedElements" type="integer">6</XPD:ATTR>
+<XPD:OBJ name="OwnedElements[0]" type="UMLModel" guid="Nu7ucmhxa0aC5WTL/Hl5qgAA">
+<XPD:ATTR name="Name" type="string">Use Case Model</XPD:ATTR>
+<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
+<XPD:ATTR name="StereotypeName" type="string">useCaseModel</XPD:ATTR>
+<XPD:REF name="Namespace">JEGKOL0wwE6O2Emy29kFuwAA</XPD:REF>
+<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="OwnedDiagrams[0]" type="UMLUseCaseDiagram" guid="AOpe9EpUuEqbJkhPg6UN+wAA">
+<XPD:ATTR name="Name" type="string">Main</XPD:ATTR>
+<XPD:REF name="DiagramOwner">Nu7ucmhxa0aC5WTL/Hl5qgAA</XPD:REF>
+<XPD:OBJ name="DiagramView" type="UMLUseCaseDiagramView" guid="jha7HHI2JEmss41Kcx5rmAAA">
+<XPD:REF name="Diagram">AOpe9EpUuEqbJkhPg6UN+wAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[1]" type="UMLModel" guid="nzHC5ZSub0yOmXzqddVh7QAA">
+<XPD:ATTR name="Name" type="string">Analysis Model</XPD:ATTR>
+<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
+<XPD:ATTR name="StereotypeName" type="string">analysisModel</XPD:ATTR>
+<XPD:REF name="Namespace">JEGKOL0wwE6O2Emy29kFuwAA</XPD:REF>
+<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="OwnedDiagrams[0]" type="UMLClassDiagram" guid="ucvrQjCCHEOMfGCAAc5zPQAA">
+<XPD:ATTR name="Name" type="string">Main</XPD:ATTR>
+<XPD:ATTR name="DefaultDiagram" type="boolean">True</XPD:ATTR>
+<XPD:ATTR name="DiagramType" type="string">RobustnessDiagram</XPD:ATTR>
+<XPD:REF name="DiagramOwner">nzHC5ZSub0yOmXzqddVh7QAA</XPD:REF>
+<XPD:OBJ name="DiagramView" type="UMLClassDiagramView" guid="sxIjWZ8eT0KTmxDhcr84UAAA">
+<XPD:REF name="Diagram">ucvrQjCCHEOMfGCAAc5zPQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[2]" type="UMLModel" guid="dQlYoesWY0yxg2VJCxHxOQAA">
+<XPD:ATTR name="Name" type="string">Design Model</XPD:ATTR>
+<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
+<XPD:ATTR name="StereotypeName" type="string">designModel</XPD:ATTR>
+<XPD:REF name="Namespace">JEGKOL0wwE6O2Emy29kFuwAA</XPD:REF>
+<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="OwnedDiagrams[0]" type="UMLClassDiagram" guid="jdoFPKplx0W53YpEZi95TAAA">
+<XPD:ATTR name="Name" type="string">Main</XPD:ATTR>
+<XPD:ATTR name="DefaultDiagram" type="boolean">True</XPD:ATTR>
+<XPD:REF name="DiagramOwner">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:OBJ name="DiagramView" type="UMLClassDiagramView" guid="oWGUMKWgOEus+/3Jqk/tpAAA">
+<XPD:REF name="Diagram">jdoFPKplx0W53YpEZi95TAAA</XPD:REF>
+<XPD:ATTR name="#OwnedViews" type="integer">13</XPD:ATTR>
+<XPD:OBJ name="OwnedViews[0]" type="UMLClassView" guid="tSxGyrwfEkSgp1EcheSXaAAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">464</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">76</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">161</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">93</XPD:ATTR>
+<XPD:REF name="Model">Ec4V6xlK5USBInAfRT+kBgAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="4OJodmUjvU6Oqy3fe+ZfuQAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="nTnCIikI3UOMxs9QtoE1sgAA">
+<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">Appender</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="iOfigC5hM06553UhkG3o4gAA">
+<XPD:ATTR name="Text" type="string">&lt;&lt;interface&gt;&gt;</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="gAAMY35/8kO92uV18LmCWAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="m+f/Nz96gEqfQeHGgfAxjwAA">
+<XPD:REF name="Model">Ec4V6xlK5USBInAfRT+kBgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="ViAxcLeYxEC/QDB9dCuwagAA">
+<XPD:REF name="Model">Ec4V6xlK5USBInAfRT+kBgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="gvxeAhX+WkGcvqw6KjlA7wAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">Ec4V6xlK5USBInAfRT+kBgAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[1]" type="UMLClassView" guid="NaiNuZ1qLUu+5nZq2pgoJgAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">364</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">384</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">361</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">56</XPD:ATTR>
+<XPD:REF name="Model">rzT262Z1jEeiLPfjq8YXAQAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="3Qx0O28WLEC1wlpntM/QWQAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="gLLmeDlS+Ua9NL1IKkZqBgAA">
+<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">OutputStreamAppender</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="7awZOkK3cUS1dBI9YKP2TwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="LtVVLfcmbkq7TWeA6T7S4AAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="H/1viIm6yE20XaYIV5XQmgAA">
+<XPD:REF name="Model">rzT262Z1jEeiLPfjq8YXAQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="/LiIyuskqE6jkbei5roLSgAA">
+<XPD:REF name="Model">rzT262Z1jEeiLPfjq8YXAQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="LFUOQyCzKkODyDltdenqSQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">rzT262Z1jEeiLPfjq8YXAQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[2]" type="UMLClassView" guid="82N1NUXIMU2s0JVvIgA33wAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">428</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">240</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">228</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">95</XPD:ATTR>
+<XPD:REF name="Model">xVL+I0ePyEKePe2ybmIZqQAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="MEOstStI0EC0RQoiT5DFLQAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="CDkuaYXZDEC5+cMzdHsl8wAA">
+<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">UnsynchronizedAppenderBase</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="N/VzkXk9vkGTb/Gq05Hm4gAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="Wbq2KwFqq0uOx2yShkE49QAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="MbkisNcJq06fy8rfNf//qgAA">
+<XPD:REF name="Model">xVL+I0ePyEKePe2ybmIZqQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="bHWlSSp0L0KsF9iS2K/VuAAA">
+<XPD:REF name="Model">xVL+I0ePyEKePe2ybmIZqQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="A3o0HBZQP0+GUAIDarVM5AAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">xVL+I0ePyEKePe2ybmIZqQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[3]" type="UMLClassView" guid="uk+yKXVJ4kGbJp9tS5jKTwAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">308</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">548</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">205</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">43</XPD:ATTR>
+<XPD:REF name="Model">yqvs3sZ9DUGqcZqP0JhEYQAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="pd1JNpNdxkm4N3mMjABxcgAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="Jfgvt5uhf0aDXP4fvB8FuAAA">
+<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">ConsoleAppender</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="x915MlraB0+hK5agb0HxVwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="o72CPBdC2UGyraSt4vxsHQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="nH6UBhoeX0KbQRIkAzLiWAAA">
+<XPD:REF name="Model">yqvs3sZ9DUGqcZqP0JhEYQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="Jb94kigpgUqu4dlcc+CGdAAA">
+<XPD:REF name="Model">yqvs3sZ9DUGqcZqP0JhEYQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="QxduxAxohEmCZQGHeQsZcgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">yqvs3sZ9DUGqcZqP0JhEYQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[4]" type="UMLRealizationView" guid="lL0hvfNl1UCp0ZckmzYqAAAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">542,240;543,168</XPD:ATTR>
+<XPD:REF name="Model">MLMgV5lk30+73KeQUlkJ1AAA</XPD:REF>
+<XPD:REF name="Head">tSxGyrwfEkSgp1EcheSXaAAA</XPD:REF>
+<XPD:REF name="Tail">82N1NUXIMU2s0JVvIgA33wAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="R+yIkrw1xkGRRmxo6cIv7AAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">MLMgV5lk30+73KeQUlkJ1AAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="MHt2cHh8nkq4xztkXeNA1AAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:REF name="Model">MLMgV5lk30+73KeQUlkJ1AAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="1cFzyVYsZUexhz9n3LRU9AAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">MLMgV5lk30+73KeQUlkJ1AAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[5]" type="UMLGeneralizationView" guid="fqotcKjEKUu0dHy5krCbbgAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">543,384;542,334</XPD:ATTR>
+<XPD:REF name="Model">iGZQWONRSkmUZXwA2ctTYAAA</XPD:REF>
+<XPD:REF name="Head">82N1NUXIMU2s0JVvIgA33wAA</XPD:REF>
+<XPD:REF name="Tail">NaiNuZ1qLUu+5nZq2pgoJgAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="a5TKNXnsu0Cm1O3vWK2A5QAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">iGZQWONRSkmUZXwA2ctTYAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="lfapsg0nvkOzLtKq21jKcQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:REF name="Model">iGZQWONRSkmUZXwA2ctTYAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="J/CqIqCm4k64OiOc5XyUFgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">iGZQWONRSkmUZXwA2ctTYAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[6]" type="UMLGeneralizationView" guid="Byj7ulJD9UmN+tawKGwCEgAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">428,548;520,439</XPD:ATTR>
+<XPD:REF name="Model">AjD3odwWRkqn7DLLtsqSMQAA</XPD:REF>
+<XPD:REF name="Head">NaiNuZ1qLUu+5nZq2pgoJgAA</XPD:REF>
+<XPD:REF name="Tail">uk+yKXVJ4kGbJp9tS5jKTwAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="HQiDhC6IA0iqlMhf1tdcJQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">AjD3odwWRkqn7DLLtsqSMQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="npCChlHvbECPkeBWStHdGwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:REF name="Model">AjD3odwWRkqn7DLLtsqSMQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="DNi8lqQWi0GHkNrHlB+wdAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">AjD3odwWRkqn7DLLtsqSMQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[7]" type="UMLClassView" guid="umRYCn2dek6PVCutQ7EHjgAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">628</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">552</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">181</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">43</XPD:ATTR>
+<XPD:REF name="Model">fbO+5cdSPEmSXuXSqE8gXgAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="IY/ehYDmxki8kSqbCHHCfQAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="lcA4v9eDHUugTZoPU740LAAA">
+<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">FileAppender</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="OVAuCrBMykaCfcii7gDdCwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="xiHCrB3qu0yBBg0U/q3EawAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="XJMRRQ4IvEKN76PkDbMKOQAA">
+<XPD:REF name="Model">fbO+5cdSPEmSXuXSqE8gXgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="wZmHw439VE+zuefCYQQqVAAA">
+<XPD:REF name="Model">fbO+5cdSPEmSXuXSqE8gXgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="PHqgEBQhpEmlVKbjkRedkAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">fbO+5cdSPEmSXuXSqE8gXgAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[8]" type="UMLGeneralizationView" guid="xnvee9U5202YS/ztrwJSRAAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">695,552;574,439</XPD:ATTR>
+<XPD:REF name="Model">DwI/SvxrPEa+xlJeUNknVQAA</XPD:REF>
+<XPD:REF name="Head">NaiNuZ1qLUu+5nZq2pgoJgAA</XPD:REF>
+<XPD:REF name="Tail">umRYCn2dek6PVCutQ7EHjgAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="oASzcKN58EuYmztjk4WiEwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">DwI/SvxrPEa+xlJeUNknVQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="O0OgQK6n40urO6JVc74njgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:REF name="Model">DwI/SvxrPEa+xlJeUNknVQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="bgKTOidFkEeRLn6bk0KEEgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">DwI/SvxrPEa+xlJeUNknVQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[9]" type="UMLClassView" guid="rHFGD6C9T0y5SMWPFgS09QAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">628</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">704</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">181</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">43</XPD:ATTR>
+<XPD:REF name="Model">V4xOMUpxokyB4fxrQNJPxQAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="OuAPH3aKlk2rg4cWgwv2BQAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="BEu6SCte7E6fslLxmD8brgAA">
+<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">RollingFileAppender</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="diAZdqUjrUSnaEkyvki5HwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="HpL3GnQOO0KyNABCTyAsRwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="1hKuFZUojkuzeqX9AiWUlwAA">
+<XPD:REF name="Model">V4xOMUpxokyB4fxrQNJPxQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="g+GUofZEmU2lEM1VL3vLIQAA">
+<XPD:REF name="Model">V4xOMUpxokyB4fxrQNJPxQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="4HSOp+H3/ECJnOpzcIo3jwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">V4xOMUpxokyB4fxrQNJPxQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[10]" type="UMLClassView" guid="0AQ8gdYUKk2Ms7nTdCyd3QAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">820</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">380</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">85</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">56</XPD:ATTR>
+<XPD:REF name="Model">F1lk6TogWUGfYFH4FvBLOAAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="h/ce/kieOUyyxRZ6c71fTQAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="UZy1Qq+RWUWzR+BkMD2qBwAA">
+<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">Encoder</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="A/4/paNKfEeyuIjaeXDosAAA">
+<XPD:ATTR name="Text" type="string">&lt;&lt;interface&gt;&gt;</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="Y950eaGp5kKS5JcixC2pLAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="lyHSH0gj5USAm8DDiVvc1AAA">
+<XPD:REF name="Model">F1lk6TogWUGfYFH4FvBLOAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="A7cLwlK4RESapHusUAalugAA">
+<XPD:REF name="Model">F1lk6TogWUGfYFH4FvBLOAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="qQCEnWeXyUaictLrSH/4IgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">F1lk6TogWUGfYFH4FvBLOAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[11]" type="UMLAssociationView" guid="lMmxZJude0e4iK5TJK4KmwAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">820,408;724,409</XPD:ATTR>
+<XPD:REF name="Model">kXyf6+RLrki8M9yh9qd9JwAA</XPD:REF>
+<XPD:REF name="Head">NaiNuZ1qLUu+5nZq2pgoJgAA</XPD:REF>
+<XPD:REF name="Tail">0AQ8gdYUKk2Ms7nTdCyd3QAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="Lpxx+3J+D0S223D5ODQq4wAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">kXyf6+RLrki8M9yh9qd9JwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="rhfNbKEGWUaK9KPGeno2AAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:REF name="Model">kXyf6+RLrki8M9yh9qd9JwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="5lfzJsxzLkS60zCpNz5+twAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">kXyf6+RLrki8M9yh9qd9JwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="w+U1pR05XkeMT1rnnS2TcgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">KNPa5jL8m0SnxCPJDiLPEwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="G2JYoZaOKku0lwIKN7cKRQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">JFP7YnD8ak2COLWe8jfBSwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="Wzm+qJkDL0+jgE0ioVsNvwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">25</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">KNPa5jL8m0SnxCPJDiLPEwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="h/GU+p9gHkyMIIzW5Tap4wAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">25</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">JFP7YnD8ak2COLWe8jfBSwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="MLngpvqsdU+i4Djdsali7wAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0.785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">KNPa5jL8m0SnxCPJDiLPEwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="yN2upZx6REeZpBi/IRMnlgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0.785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">JFP7YnD8ak2COLWe8jfBSwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="ZVjULz2utUKwdUcoGweZkgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">KNPa5jL8m0SnxCPJDiLPEwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="4leicQixUEWISYBF6P8LSgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">JFP7YnD8ak2COLWe8jfBSwAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[12]" type="UMLGeneralizationView" guid="VGws4gb7FEGKDPIpXKW13QAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">718,704;718,594</XPD:ATTR>
+<XPD:REF name="Model">MAm8gr3YDE+lxocsUB9afAAA</XPD:REF>
+<XPD:REF name="Head">umRYCn2dek6PVCutQ7EHjgAA</XPD:REF>
+<XPD:REF name="Tail">rHFGD6C9T0y5SMWPFgS09QAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="2t9xQX0DaECER1G841x4ggAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">MAm8gr3YDE+lxocsUB9afAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="ZJ+e5yqWkkyJmgI5NCe9qQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:REF name="Model">MAm8gr3YDE+lxocsUB9afAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="uWFySM7Jq026r7z2lz9/TgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">MAm8gr3YDE+lxocsUB9afAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:ATTR name="#OwnedElements" type="integer">26</XPD:ATTR>
+<XPD:OBJ name="OwnedElements[0]" type="UMLInterface" guid="bL5DGTE1wkqFiYq+yJuTRAAA">
+<XPD:ATTR name="Name" type="string">Bae, Rankyoung</XPD:ATTR>
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[1]" type="UMLInterface" guid="PfW7flMvskqKmFDofejCYQAA">
+<XPD:ATTR name="Name" type="string">Jung, Yoontae</XPD:ATTR>
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[2]" type="UMLInterface" guid="XthOkDh0rk67+FyPgXCRgAAA">
+<XPD:ATTR name="Name" type="string">Kim, Hyunsoo</XPD:ATTR>
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[3]" type="UMLInterface" guid="WhfjywuM1kqS7RtEmuvAlgAA">
+<XPD:ATTR name="Name" type="string">Kim, Jeongil</XPD:ATTR>
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[4]" type="UMLClass" guid="Ec4V6xlK5USBInAfRT+kBgAA">
+<XPD:ATTR name="Name" type="string">Appender</XPD:ATTR>
+<XPD:ATTR name="StereotypeName" type="string">interface</XPD:ATTR>
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">tSxGyrwfEkSgp1EcheSXaAAA</XPD:REF>
+<XPD:REF name="Views[1]">m+f/Nz96gEqfQeHGgfAxjwAA</XPD:REF>
+<XPD:REF name="Views[2]">ViAxcLeYxEC/QDB9dCuwagAA</XPD:REF>
+<XPD:REF name="Views[3]">gvxeAhX+WkGcvqw6KjlA7wAA</XPD:REF>
+<XPD:ATTR name="#ClientDependencies" type="integer">1</XPD:ATTR>
+<XPD:REF name="ClientDependencies[0]">kjMmekdMhUCZp7nT1+7m5QAA</XPD:REF>
+<XPD:ATTR name="#SupplierDependencies" type="integer">2</XPD:ATTR>
+<XPD:REF name="SupplierDependencies[0]">MLMgV5lk30+73KeQUlkJ1AAA</XPD:REF>
+<XPD:REF name="SupplierDependencies[1]">kjMmekdMhUCZp7nT1+7m5QAA</XPD:REF>
+<XPD:ATTR name="#Operations" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="Operations[0]" type="UMLOperation" guid="FRx7C/jgm0uUQ2KJbSES0QAA">
+<XPD:ATTR name="Name" type="string">doAppend</XPD:ATTR>
+<XPD:REF name="Owner">Ec4V6xlK5USBInAfRT+kBgAA</XPD:REF>
+<XPD:ATTR name="#Parameters" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="HEOzMeB7hUCVhMMCFiMU/QAA">
+<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">void</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">FRx7C/jgm0uUQ2KJbSES0QAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Parameters[1]" type="UMLParameter" guid="/QxGe2nRTke4OPZr6B8DjwAA">
+<XPD:ATTR name="Name" type="string">E event</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">FRx7C/jgm0uUQ2KJbSES0QAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[5]" type="UMLClass" guid="wrUqRmysaUaTNG+EIldTAgAA">
+<XPD:ATTR name="Name" type="string">Lee, Jangwoo</XPD:ATTR>
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[6]" type="UMLClass" guid="R4ueGs13U0uU7uA7GfQuwgAA">
+<XPD:ATTR name="Name" type="string">Lee, Minkyu</XPD:ATTR>
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[7]" type="UMLClass" guid="cZJpDMIhLkaN+6380nTjCgAA">
+<XPD:ATTR name="Name" type="string">Lim, Heejin</XPD:ATTR>
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[8]" type="UMLInterface" guid="KkLGJmfcO0y7keuSLh3xpQAA">
+<XPD:ATTR name="Name" type="string">Bae, Rankyoung1</XPD:ATTR>
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[9]" type="UMLClass" guid="rzT262Z1jEeiLPfjq8YXAQAA">
+<XPD:ATTR name="Name" type="string">OutputStreamAppender</XPD:ATTR>
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">NaiNuZ1qLUu+5nZq2pgoJgAA</XPD:REF>
+<XPD:REF name="Views[1]">H/1viIm6yE20XaYIV5XQmgAA</XPD:REF>
+<XPD:REF name="Views[2]">/LiIyuskqE6jkbei5roLSgAA</XPD:REF>
+<XPD:REF name="Views[3]">LFUOQyCzKkODyDltdenqSQAA</XPD:REF>
+<XPD:ATTR name="#Generalizations" type="integer">1</XPD:ATTR>
+<XPD:REF name="Generalizations[0]">iGZQWONRSkmUZXwA2ctTYAAA</XPD:REF>
+<XPD:ATTR name="#Specializations" type="integer">2</XPD:ATTR>
+<XPD:REF name="Specializations[0]">AjD3odwWRkqn7DLLtsqSMQAA</XPD:REF>
+<XPD:REF name="Specializations[1]">DwI/SvxrPEa+xlJeUNknVQAA</XPD:REF>
+<XPD:ATTR name="#Operations" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="Operations[0]" type="UMLOperation" guid="Y/8ny1CDlUmGw7XO+p1IVAAA">
+<XPD:ATTR name="Name" type="string">setOutputStream</XPD:ATTR>
+<XPD:REF name="Owner">rzT262Z1jEeiLPfjq8YXAQAA</XPD:REF>
+<XPD:ATTR name="#Parameters" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="o7mxtv1VFUuGMzTZ/PzpJQAA">
+<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">void</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">Y/8ny1CDlUmGw7XO+p1IVAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Parameters[1]" type="UMLParameter" guid="WiQnBPlZNUKAb1kDr8rYMAAA">
+<XPD:ATTR name="Name" type="string">OutputStream</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">Y/8ny1CDlUmGw7XO+p1IVAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:ATTR name="#Associations" type="integer">2</XPD:ATTR>
+<XPD:REF name="Associations[0]">CNBYSz/4s0OUBwR3Ujj7qAAA</XPD:REF>
+<XPD:REF name="Associations[1]">KNPa5jL8m0SnxCPJDiLPEwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[10]" type="UMLClass" guid="xVL+I0ePyEKePe2ybmIZqQAA">
+<XPD:ATTR name="Name" type="string">UnsynchronizedAppenderBase</XPD:ATTR>
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">82N1NUXIMU2s0JVvIgA33wAA</XPD:REF>
+<XPD:REF name="Views[1]">MbkisNcJq06fy8rfNf//qgAA</XPD:REF>
+<XPD:REF name="Views[2]">bHWlSSp0L0KsF9iS2K/VuAAA</XPD:REF>
+<XPD:REF name="Views[3]">A3o0HBZQP0+GUAIDarVM5AAA</XPD:REF>
+<XPD:ATTR name="#ClientDependencies" type="integer">1</XPD:ATTR>
+<XPD:REF name="ClientDependencies[0]">MLMgV5lk30+73KeQUlkJ1AAA</XPD:REF>
+<XPD:ATTR name="#Generalizations" type="integer">1</XPD:ATTR>
+<XPD:REF name="Generalizations[0]">mt8sHMuW6k6vvkswchHN9AAA</XPD:REF>
+<XPD:ATTR name="#Specializations" type="integer">2</XPD:ATTR>
+<XPD:REF name="Specializations[0]">mt8sHMuW6k6vvkswchHN9AAA</XPD:REF>
+<XPD:REF name="Specializations[1]">iGZQWONRSkmUZXwA2ctTYAAA</XPD:REF>
+<XPD:ATTR name="#Operations" type="integer">4</XPD:ATTR>
+<XPD:OBJ name="Operations[0]" type="UMLOperation" guid="QrizX1w8Uk+lWkr80819WAAA">
+<XPD:ATTR name="Name" type="string">doAppend</XPD:ATTR>
+<XPD:REF name="Owner">xVL+I0ePyEKePe2ybmIZqQAA</XPD:REF>
+<XPD:ATTR name="#Parameters" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="i3SFY3XjzkqfjCdeRItB0AAA">
+<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">void</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">QrizX1w8Uk+lWkr80819WAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Parameters[1]" type="UMLParameter" guid="rcsyT8SmtEaJWAgOu29ifgAA">
+<XPD:ATTR name="Name" type="string">E event</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">QrizX1w8Uk+lWkr80819WAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="Operations[1]" type="UMLOperation" guid="G5EvR3IAqUWyIUSQT5iKfAAA">
+<XPD:ATTR name="Name" type="string">append</XPD:ATTR>
+<XPD:ATTR name="Visibility" type="UMLVisibilityKind">vkProtected</XPD:ATTR>
+<XPD:REF name="Owner">xVL+I0ePyEKePe2ybmIZqQAA</XPD:REF>
+<XPD:ATTR name="#Parameters" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="BZo+omwID0Op8lvSMhrmCAAA">
+<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">void</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">G5EvR3IAqUWyIUSQT5iKfAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Parameters[1]" type="UMLParameter" guid="0mhi1Re0mUaekyTApQtYKgAA">
+<XPD:ATTR name="Name" type="string">E event</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">G5EvR3IAqUWyIUSQT5iKfAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="Operations[2]" type="UMLOperation" guid="noZlW3WOpUSNYP7MIP2dIAAA">
+<XPD:ATTR name="Name" type="string">addFilter</XPD:ATTR>
+<XPD:REF name="Owner">xVL+I0ePyEKePe2ybmIZqQAA</XPD:REF>
+<XPD:ATTR name="#Parameters" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="7JBY4nyhIES1n0jpwFzs0wAA">
+<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">void</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">noZlW3WOpUSNYP7MIP2dIAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Parameters[1]" type="UMLParameter" guid="Zd/8hSZIgUuOnnlNuMOW3QAA">
+<XPD:ATTR name="Name" type="string">Filter&lt;E&gt; filter</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">noZlW3WOpUSNYP7MIP2dIAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="Operations[3]" type="UMLOperation" guid="+Hda0J6VTEGM7V6+m3aW7QAA">
+<XPD:ATTR name="Name" type="string">getFilterChainDecision</XPD:ATTR>
+<XPD:REF name="Owner">xVL+I0ePyEKePe2ybmIZqQAA</XPD:REF>
+<XPD:ATTR name="#Parameters" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="b7Oh8zbH6kKEeryzkMlLQgAA">
+<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">FilterReply</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">+Hda0J6VTEGM7V6+m3aW7QAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Parameters[1]" type="UMLParameter" guid="QFIz2saC3kK9QRns9gVVIwAA">
+<XPD:ATTR name="Name" type="string">E event</XPD:ATTR>
+<XPD:REF name="BehavioralFeature">+Hda0J6VTEGM7V6+m3aW7QAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[11]" type="UMLClass" guid="yqvs3sZ9DUGqcZqP0JhEYQAA">
+<XPD:ATTR name="Name" type="string">ConsoleAppender</XPD:ATTR>
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">uk+yKXVJ4kGbJp9tS5jKTwAA</XPD:REF>
+<XPD:REF name="Views[1]">nH6UBhoeX0KbQRIkAzLiWAAA</XPD:REF>
+<XPD:REF name="Views[2]">Jb94kigpgUqu4dlcc+CGdAAA</XPD:REF>
+<XPD:REF name="Views[3]">QxduxAxohEmCZQGHeQsZcgAA</XPD:REF>
+<XPD:ATTR name="#Generalizations" type="integer">3</XPD:ATTR>
+<XPD:REF name="Generalizations[0]">KECSr2IcSEKuUekqxWFfQQAA</XPD:REF>
+<XPD:REF name="Generalizations[1]">jfTGxiHUzUynYKDudsAtlgAA</XPD:REF>
+<XPD:REF name="Generalizations[2]">AjD3odwWRkqn7DLLtsqSMQAA</XPD:REF>
+<XPD:ATTR name="#Specializations" type="integer">2</XPD:ATTR>
+<XPD:REF name="Specializations[0]">KECSr2IcSEKuUekqxWFfQQAA</XPD:REF>
+<XPD:REF name="Specializations[1]">jfTGxiHUzUynYKDudsAtlgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[12]" type="UMLRealization" guid="MLMgV5lk30+73KeQUlkJ1AAA">
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:REF name="Client">xVL+I0ePyEKePe2ybmIZqQAA</XPD:REF>
+<XPD:REF name="Supplier">Ec4V6xlK5USBInAfRT+kBgAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">lL0hvfNl1UCp0ZckmzYqAAAA</XPD:REF>
+<XPD:REF name="Views[1]">R+yIkrw1xkGRRmxo6cIv7AAA</XPD:REF>
+<XPD:REF name="Views[2]">MHt2cHh8nkq4xztkXeNA1AAA</XPD:REF>
+<XPD:REF name="Views[3]">1cFzyVYsZUexhz9n3LRU9AAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[13]" type="UMLRealization" guid="kjMmekdMhUCZp7nT1+7m5QAA">
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:REF name="Client">Ec4V6xlK5USBInAfRT+kBgAA</XPD:REF>
+<XPD:REF name="Supplier">Ec4V6xlK5USBInAfRT+kBgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[14]" type="UMLGeneralization" guid="mt8sHMuW6k6vvkswchHN9AAA">
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:REF name="Child">xVL+I0ePyEKePe2ybmIZqQAA</XPD:REF>
+<XPD:REF name="Parent">xVL+I0ePyEKePe2ybmIZqQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[15]" type="UMLGeneralization" guid="iGZQWONRSkmUZXwA2ctTYAAA">
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:REF name="Child">rzT262Z1jEeiLPfjq8YXAQAA</XPD:REF>
+<XPD:REF name="Parent">xVL+I0ePyEKePe2ybmIZqQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">fqotcKjEKUu0dHy5krCbbgAA</XPD:REF>
+<XPD:REF name="Views[1]">a5TKNXnsu0Cm1O3vWK2A5QAA</XPD:REF>
+<XPD:REF name="Views[2]">lfapsg0nvkOzLtKq21jKcQAA</XPD:REF>
+<XPD:REF name="Views[3]">J/CqIqCm4k64OiOc5XyUFgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[16]" type="UMLGeneralization" guid="KECSr2IcSEKuUekqxWFfQQAA">
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:REF name="Child">yqvs3sZ9DUGqcZqP0JhEYQAA</XPD:REF>
+<XPD:REF name="Parent">yqvs3sZ9DUGqcZqP0JhEYQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[17]" type="UMLGeneralization" guid="jfTGxiHUzUynYKDudsAtlgAA">
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:REF name="Child">yqvs3sZ9DUGqcZqP0JhEYQAA</XPD:REF>
+<XPD:REF name="Parent">yqvs3sZ9DUGqcZqP0JhEYQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[18]" type="UMLGeneralization" guid="AjD3odwWRkqn7DLLtsqSMQAA">
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:REF name="Child">yqvs3sZ9DUGqcZqP0JhEYQAA</XPD:REF>
+<XPD:REF name="Parent">rzT262Z1jEeiLPfjq8YXAQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">Byj7ulJD9UmN+tawKGwCEgAA</XPD:REF>
+<XPD:REF name="Views[1]">HQiDhC6IA0iqlMhf1tdcJQAA</XPD:REF>
+<XPD:REF name="Views[2]">npCChlHvbECPkeBWStHdGwAA</XPD:REF>
+<XPD:REF name="Views[3]">DNi8lqQWi0GHkNrHlB+wdAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[19]" type="UMLClass" guid="fbO+5cdSPEmSXuXSqE8gXgAA">
+<XPD:ATTR name="Name" type="string">FileAppender</XPD:ATTR>
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">umRYCn2dek6PVCutQ7EHjgAA</XPD:REF>
+<XPD:REF name="Views[1]">XJMRRQ4IvEKN76PkDbMKOQAA</XPD:REF>
+<XPD:REF name="Views[2]">wZmHw439VE+zuefCYQQqVAAA</XPD:REF>
+<XPD:REF name="Views[3]">PHqgEBQhpEmlVKbjkRedkAAA</XPD:REF>
+<XPD:ATTR name="#Generalizations" type="integer">1</XPD:ATTR>
+<XPD:REF name="Generalizations[0]">DwI/SvxrPEa+xlJeUNknVQAA</XPD:REF>
+<XPD:ATTR name="#Specializations" type="integer">1</XPD:ATTR>
+<XPD:REF name="Specializations[0]">MAm8gr3YDE+lxocsUB9afAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[20]" type="UMLGeneralization" guid="DwI/SvxrPEa+xlJeUNknVQAA">
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:REF name="Child">fbO+5cdSPEmSXuXSqE8gXgAA</XPD:REF>
+<XPD:REF name="Parent">rzT262Z1jEeiLPfjq8YXAQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">xnvee9U5202YS/ztrwJSRAAA</XPD:REF>
+<XPD:REF name="Views[1]">oASzcKN58EuYmztjk4WiEwAA</XPD:REF>
+<XPD:REF name="Views[2]">O0OgQK6n40urO6JVc74njgAA</XPD:REF>
+<XPD:REF name="Views[3]">bgKTOidFkEeRLn6bk0KEEgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[21]" type="UMLClass" guid="V4xOMUpxokyB4fxrQNJPxQAA">
+<XPD:ATTR name="Name" type="string">RollingFileAppender</XPD:ATTR>
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">rHFGD6C9T0y5SMWPFgS09QAA</XPD:REF>
+<XPD:REF name="Views[1]">1hKuFZUojkuzeqX9AiWUlwAA</XPD:REF>
+<XPD:REF name="Views[2]">g+GUofZEmU2lEM1VL3vLIQAA</XPD:REF>
+<XPD:REF name="Views[3]">4HSOp+H3/ECJnOpzcIo3jwAA</XPD:REF>
+<XPD:ATTR name="#Generalizations" type="integer">1</XPD:ATTR>
+<XPD:REF name="Generalizations[0]">MAm8gr3YDE+lxocsUB9afAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[22]" type="UMLClass" guid="F1lk6TogWUGfYFH4FvBLOAAA">
+<XPD:ATTR name="Name" type="string">Encoder</XPD:ATTR>
+<XPD:ATTR name="StereotypeName" type="string">interface</XPD:ATTR>
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">0AQ8gdYUKk2Ms7nTdCyd3QAA</XPD:REF>
+<XPD:REF name="Views[1]">lyHSH0gj5USAm8DDiVvc1AAA</XPD:REF>
+<XPD:REF name="Views[2]">A7cLwlK4RESapHusUAalugAA</XPD:REF>
+<XPD:REF name="Views[3]">qQCEnWeXyUaictLrSH/4IgAA</XPD:REF>
+<XPD:ATTR name="#Associations" type="integer">2</XPD:ATTR>
+<XPD:REF name="Associations[0]">1RTpKQO+4U+uqZahckvNEwAA</XPD:REF>
+<XPD:REF name="Associations[1]">JFP7YnD8ak2COLWe8jfBSwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[23]" type="UMLAssociation" guid="u9/9xY5vOU2kSfX9AmlMAwAA">
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="CNBYSz/4s0OUBwR3Ujj7qAAA">
+<XPD:REF name="Association">u9/9xY5vOU2kSfX9AmlMAwAA</XPD:REF>
+<XPD:REF name="Participant">rzT262Z1jEeiLPfjq8YXAQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="1RTpKQO+4U+uqZahckvNEwAA">
+<XPD:ATTR name="Aggregation" type="UMLAggregationKind">akComposite</XPD:ATTR>
+<XPD:REF name="Association">u9/9xY5vOU2kSfX9AmlMAwAA</XPD:REF>
+<XPD:REF name="Participant">F1lk6TogWUGfYFH4FvBLOAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[24]" type="UMLAssociation" guid="kXyf6+RLrki8M9yh9qd9JwAA">
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">lMmxZJude0e4iK5TJK4KmwAA</XPD:REF>
+<XPD:REF name="Views[1]">Lpxx+3J+D0S223D5ODQq4wAA</XPD:REF>
+<XPD:REF name="Views[2]">rhfNbKEGWUaK9KPGeno2AAAA</XPD:REF>
+<XPD:REF name="Views[3]">5lfzJsxzLkS60zCpNz5+twAA</XPD:REF>
+<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="JFP7YnD8ak2COLWe8jfBSwAA">
+<XPD:REF name="Association">kXyf6+RLrki8M9yh9qd9JwAA</XPD:REF>
+<XPD:REF name="Participant">F1lk6TogWUGfYFH4FvBLOAAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">G2JYoZaOKku0lwIKN7cKRQAA</XPD:REF>
+<XPD:REF name="Views[1]">h/GU+p9gHkyMIIzW5Tap4wAA</XPD:REF>
+<XPD:REF name="Views[2]">yN2upZx6REeZpBi/IRMnlgAA</XPD:REF>
+<XPD:REF name="Views[3]">4leicQixUEWISYBF6P8LSgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="KNPa5jL8m0SnxCPJDiLPEwAA">
+<XPD:ATTR name="Aggregation" type="UMLAggregationKind">akComposite</XPD:ATTR>
+<XPD:REF name="Association">kXyf6+RLrki8M9yh9qd9JwAA</XPD:REF>
+<XPD:REF name="Participant">rzT262Z1jEeiLPfjq8YXAQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">w+U1pR05XkeMT1rnnS2TcgAA</XPD:REF>
+<XPD:REF name="Views[1]">Wzm+qJkDL0+jgE0ioVsNvwAA</XPD:REF>
+<XPD:REF name="Views[2]">MLngpvqsdU+i4Djdsali7wAA</XPD:REF>
+<XPD:REF name="Views[3]">ZVjULz2utUKwdUcoGweZkgAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[25]" type="UMLGeneralization" guid="MAm8gr3YDE+lxocsUB9afAAA">
+<XPD:REF name="Namespace">dQlYoesWY0yxg2VJCxHxOQAA</XPD:REF>
+<XPD:REF name="Child">V4xOMUpxokyB4fxrQNJPxQAA</XPD:REF>
+<XPD:REF name="Parent">fbO+5cdSPEmSXuXSqE8gXgAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">VGws4gb7FEGKDPIpXKW13QAA</XPD:REF>
+<XPD:REF name="Views[1]">2t9xQX0DaECER1G841x4ggAA</XPD:REF>
+<XPD:REF name="Views[2]">ZJ+e5yqWkkyJmgI5NCe9qQAA</XPD:REF>
+<XPD:REF name="Views[3]">uWFySM7Jq026r7z2lz9/TgAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[3]" type="UMLModel" guid="UTbE66PthkuXloDrctmmwwAA">
+<XPD:ATTR name="Name" type="string">Implementation Model</XPD:ATTR>
+<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
+<XPD:ATTR name="StereotypeName" type="string">implementationModel</XPD:ATTR>
+<XPD:REF name="Namespace">JEGKOL0wwE6O2Emy29kFuwAA</XPD:REF>
+<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="OwnedDiagrams[0]" type="UMLComponentDiagram" guid="UJbtRzsKuEa7sZAmr/tDGAAA">
+<XPD:ATTR name="Name" type="string">Main</XPD:ATTR>
+<XPD:REF name="DiagramOwner">UTbE66PthkuXloDrctmmwwAA</XPD:REF>
+<XPD:OBJ name="DiagramView" type="UMLComponentDiagramView" guid="vo5SIJcJIUWJz7mqomMr4wAA">
+<XPD:REF name="Diagram">UJbtRzsKuEa7sZAmr/tDGAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:ATTR name="#OwnedElements" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="OwnedElements[0]" type="UMLInterface" guid="naDG3jNwKEqkpiKwcQF/xgAA">
+<XPD:ATTR name="Name" type="string">dsd</XPD:ATTR>
+<XPD:REF name="Namespace">UTbE66PthkuXloDrctmmwwAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[4]" type="UMLModel" guid="sbAEE91CXU+VbUQcRp4FwgAA">
+<XPD:ATTR name="Name" type="string">Deployment Model</XPD:ATTR>
+<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
+<XPD:ATTR name="StereotypeName" type="string">deploymentModel</XPD:ATTR>
+<XPD:REF name="Namespace">JEGKOL0wwE6O2Emy29kFuwAA</XPD:REF>
+<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="OwnedDiagrams[0]" type="UMLDeploymentDiagram" guid="tzrsCrrbjka5umz88mdzIAAA">
+<XPD:ATTR name="Name" type="string">Main</XPD:ATTR>
+<XPD:REF name="DiagramOwner">sbAEE91CXU+VbUQcRp4FwgAA</XPD:REF>
+<XPD:OBJ name="DiagramView" type="UMLDeploymentDiagramView" guid="OlRAEhzdxkCw+mUnxs9v2wAA">
+<XPD:REF name="Diagram">tzrsCrrbjka5umz88mdzIAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[5]" type="UMLModel" guid="mC0A50UCikqRZT73f5NgTgAA">
+<XPD:ATTR name="Name" type="string">Analysis Model1</XPD:ATTR>
+<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
+<XPD:ATTR name="StereotypeName" type="string">analysisModel</XPD:ATTR>
+<XPD:REF name="Namespace">JEGKOL0wwE6O2Emy29kFuwAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:BODY>
+</XPD:PROJECT>
diff --git a/logback-site/src/site/resources/manual/images/chapters/appenders/appenderClassDiagram.jpg b/logback-site/src/site/resources/manual/images/chapters/appenders/appenderClassDiagram.jpg
new file mode 100644
index 0000000..cb65782
Binary files /dev/null and b/logback-site/src/site/resources/manual/images/chapters/appenders/appenderClassDiagram.jpg differ
diff --git a/logback-site/src/site/resources/manual/images/chapter4/dbAppenderLE.gif b/logback-site/src/site/resources/manual/images/chapters/appenders/dbAppenderLE.gif
similarity index 100%
rename from logback-site/src/site/resources/manual/images/chapter4/dbAppenderLE.gif
rename to logback-site/src/site/resources/manual/images/chapters/appenders/dbAppenderLE.gif
diff --git a/logback-site/src/site/resources/manual/images/chapter4/dbAppenderLEException.gif b/logback-site/src/site/resources/manual/images/chapters/appenders/dbAppenderLEException.gif
similarity index 100%
rename from logback-site/src/site/resources/manual/images/chapter4/dbAppenderLEException.gif
rename to logback-site/src/site/resources/manual/images/chapters/appenders/dbAppenderLEException.gif
diff --git a/logback-site/src/site/resources/manual/images/chapter4/dbAppenderLEProperty.gif b/logback-site/src/site/resources/manual/images/chapters/appenders/dbAppenderLEProperty.gif
similarity index 100%
rename from logback-site/src/site/resources/manual/images/chapter4/dbAppenderLEProperty.gif
rename to logback-site/src/site/resources/manual/images/chapters/appenders/dbAppenderLEProperty.gif
diff --git a/logback-site/src/site/resources/manual/images/chapter4/fileAppenderUML.png b/logback-site/src/site/resources/manual/images/chapters/appenders/fileAppenderUML.png
similarity index 100%
rename from logback-site/src/site/resources/manual/images/chapter4/fileAppenderUML.png
rename to logback-site/src/site/resources/manual/images/chapters/appenders/fileAppenderUML.png
diff --git a/logback-site/src/site/resources/manual/images/chapter4/smtpAppender1.jpg b/logback-site/src/site/resources/manual/images/chapters/appenders/smtpAppender1.jpg
similarity index 100%
rename from logback-site/src/site/resources/manual/images/chapter4/smtpAppender1.jpg
rename to logback-site/src/site/resources/manual/images/chapters/appenders/smtpAppender1.jpg
diff --git a/logback-site/src/site/resources/manual/images/chapter4/smtpAppender2.jpg b/logback-site/src/site/resources/manual/images/chapters/appenders/smtpAppender2.jpg
similarity index 100%
rename from logback-site/src/site/resources/manual/images/chapter4/smtpAppender2.jpg
rename to logback-site/src/site/resources/manual/images/chapters/appenders/smtpAppender2.jpg
diff --git a/logback-site/src/site/resources/manual/images/chapter6/filterChain.gif b/logback-site/src/site/resources/manual/images/chapters/filters/filterChain.gif
similarity index 100%
rename from logback-site/src/site/resources/manual/images/chapter6/filterChain.gif
rename to logback-site/src/site/resources/manual/images/chapters/filters/filterChain.gif
diff --git a/logback-site/src/site/resources/manual/images/chapter9/jconsole15_jetty.gif b/logback-site/src/site/resources/manual/images/chapters/jmxConfigurator/jconsole15_jetty.gif
similarity index 100%
rename from logback-site/src/site/resources/manual/images/chapter9/jconsole15_jetty.gif
rename to logback-site/src/site/resources/manual/images/chapters/jmxConfigurator/jconsole15_jetty.gif
diff --git a/logback-site/src/site/resources/manual/images/chapter9/jconsole15_tomcat.gif b/logback-site/src/site/resources/manual/images/chapters/jmxConfigurator/jconsole15_tomcat.gif
similarity index 100%
rename from logback-site/src/site/resources/manual/images/chapter9/jconsole15_tomcat.gif
rename to logback-site/src/site/resources/manual/images/chapters/jmxConfigurator/jconsole15_tomcat.gif
diff --git a/logback-site/src/site/resources/manual/images/chapter9/jmxConfigurator.gif b/logback-site/src/site/resources/manual/images/chapters/jmxConfigurator/jmxConfigurator.gif
similarity index 100%
rename from logback-site/src/site/resources/manual/images/chapter9/jmxConfigurator.gif
rename to logback-site/src/site/resources/manual/images/chapters/jmxConfigurator/jmxConfigurator.gif
diff --git a/logback-site/src/site/resources/manual/images/chapter9/multiple.gif b/logback-site/src/site/resources/manual/images/chapters/jmxConfigurator/multiple.gif
similarity index 100%
rename from logback-site/src/site/resources/manual/images/chapter9/multiple.gif
rename to logback-site/src/site/resources/manual/images/chapters/jmxConfigurator/multiple.gif
diff --git a/logback-site/src/site/resources/manual/images/chapter9/mx4j_jetty.gif b/logback-site/src/site/resources/manual/images/chapters/jmxConfigurator/mx4j_jetty.gif
similarity index 100%
rename from logback-site/src/site/resources/manual/images/chapter9/mx4j_jetty.gif
rename to logback-site/src/site/resources/manual/images/chapters/jmxConfigurator/mx4j_jetty.gif
diff --git a/logback-site/src/site/resources/manual/images/chapter9/mx4j_tomcat.gif b/logback-site/src/site/resources/manual/images/chapters/jmxConfigurator/mx4j_tomcat.gif
similarity index 100%
rename from logback-site/src/site/resources/manual/images/chapter9/mx4j_tomcat.gif
rename to logback-site/src/site/resources/manual/images/chapters/jmxConfigurator/mx4j_tomcat.gif
diff --git a/logback-site/src/site/resources/manual/images/chapter9/statusList.gif b/logback-site/src/site/resources/manual/images/chapters/jmxConfigurator/statusList.gif
similarity index 100%
rename from logback-site/src/site/resources/manual/images/chapter9/statusList.gif
rename to logback-site/src/site/resources/manual/images/chapters/jmxConfigurator/statusList.gif

-----------------------------------------------------------------------

Summary of changes:
 .../java/ch/qos/logback/core/ConsoleAppender.java  |    4 +-
 .../java/ch/qos/logback/core/FileAppender.java     |   17 +-
 ...iterAppender.java => OutputStreamAppender.java} |   19 +-
 .../ch/qos/logback/core/WriterAppenderTest.java    |    2 +-
 .../logback/core/appender/DummyWriterAppender.java |    4 +-
 .../main/java/chapters/appenders/ExitWoes1.java    |    4 +-
 .../main/java/chapters/appenders/ExitWoes2.java    |    4 +-
 logback-site/src/site/pages/manual/appenders.html  |  163 +--
 .../src/site/pages/manual/architecture.html        |   21 +-
 .../src/site/pages/manual/configuration.html       |  314 +++---
 logback-site/src/site/pages/manual/onJoran.html    |   12 +
 .../manual/images/chapters/appenders/appender.uml  | 1179 ++++++++++++++++++++
 .../manual/images/chapters/appenders/appender.~ml  |  865 ++++++++++++++
 .../chapters/appenders/appenderClassDiagram.jpg    |  Bin 0 -> 71199 bytes
 .../appenders}/dbAppenderLE.gif                    |  Bin 31272 -> 31272 bytes
 .../appenders}/dbAppenderLEException.gif           |  Bin 3861 -> 3861 bytes
 .../appenders}/dbAppenderLEProperty.gif            |  Bin 3820 -> 3820 bytes
 .../appenders}/fileAppenderUML.png                 |  Bin 6684 -> 6684 bytes
 .../appenders}/smtpAppender1.jpg                   |  Bin 226207 -> 226207 bytes
 .../appenders}/smtpAppender2.jpg                   |  Bin 244223 -> 244223 bytes
 .../{chapter6 => chapters/filters}/filterChain.gif |  Bin 1226 -> 1226 bytes
 .../jmxConfigurator}/jconsole15_jetty.gif          |  Bin 9796 -> 9796 bytes
 .../jmxConfigurator}/jconsole15_tomcat.gif         |  Bin 9741 -> 9741 bytes
 .../jmxConfigurator}/jmxConfigurator.gif           |  Bin 33445 -> 33445 bytes
 .../jmxConfigurator}/multiple.gif                  |  Bin 22501 -> 22501 bytes
 .../jmxConfigurator}/mx4j_jetty.gif                |  Bin 26973 -> 26973 bytes
 .../jmxConfigurator}/mx4j_tomcat.gif               |  Bin 27657 -> 27657 bytes
 .../jmxConfigurator}/statusList.gif                |  Bin 36223 -> 36223 bytes
 28 files changed, 2318 insertions(+), 290 deletions(-)
 rename logback-core/src/main/java/ch/qos/logback/core/{WriterAppender.java => OutputStreamAppender.java} (90%)
 create mode 100644 logback-site/src/site/resources/manual/images/chapters/appenders/appender.uml
 create mode 100644 logback-site/src/site/resources/manual/images/chapters/appenders/appender.~ml
 create mode 100644 logback-site/src/site/resources/manual/images/chapters/appenders/appenderClassDiagram.jpg
 rename logback-site/src/site/resources/manual/images/{chapter4 => chapters/appenders}/dbAppenderLE.gif (100%)
 rename logback-site/src/site/resources/manual/images/{chapter4 => chapters/appenders}/dbAppenderLEException.gif (100%)
 rename logback-site/src/site/resources/manual/images/{chapter4 => chapters/appenders}/dbAppenderLEProperty.gif (100%)
 rename logback-site/src/site/resources/manual/images/{chapter4 => chapters/appenders}/fileAppenderUML.png (100%)
 rename logback-site/src/site/resources/manual/images/{chapter4 => chapters/appenders}/smtpAppender1.jpg (100%)
 rename logback-site/src/site/resources/manual/images/{chapter4 => chapters/appenders}/smtpAppender2.jpg (100%)
 rename logback-site/src/site/resources/manual/images/{chapter6 => chapters/filters}/filterChain.gif (100%)
 rename logback-site/src/site/resources/manual/images/{chapter9 => chapters/jmxConfigurator}/jconsole15_jetty.gif (100%)
 rename logback-site/src/site/resources/manual/images/{chapter9 => chapters/jmxConfigurator}/jconsole15_tomcat.gif (100%)
 rename logback-site/src/site/resources/manual/images/{chapter9 => chapters/jmxConfigurator}/jmxConfigurator.gif (100%)
 rename logback-site/src/site/resources/manual/images/{chapter9 => chapters/jmxConfigurator}/multiple.gif (100%)
 rename logback-site/src/site/resources/manual/images/{chapter9 => chapters/jmxConfigurator}/mx4j_jetty.gif (100%)
 rename logback-site/src/site/resources/manual/images/{chapter9 => chapters/jmxConfigurator}/mx4j_tomcat.gif (100%)
 rename logback-site/src/site/resources/manual/images/{chapter9 => chapters/jmxConfigurator}/statusList.gif (100%)


hooks/post-receive
-- 
Logback: the generic, reliable, fast and flexible logging framework.


More information about the logback-dev mailing list