You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by ts...@apache.org on 2005/04/12 22:43:46 UTC

svn commit: r161114 [2/2] - in lenya/site/1_4: ./ concepts/ concepts/publication-templating/ concepts/usecase-framework/ installation/ reference/ reference/publication-templating/ reference/usecase-framework/

Added: lenya/site/1_4/reference/publication-templating/index.html
URL: http://svn.apache.org/viewcvs/lenya/site/1_4/reference/publication-templating/index.html?view=auto&rev=161114
==============================================================================
--- lenya/site/1_4/reference/publication-templating/index.html (added)
+++ lenya/site/1_4/reference/publication-templating/index.html Tue Apr 12 13:43:42 2005
@@ -0,0 +1,489 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta content="Apache Forrest" name="Generator">
+<meta name="Forrest-version" content="0.6">
+<meta name="Forrest-skin-name" content="pelt">
+<title>Publication Templating</title>
+<link type="text/css" href="../../../skin/basic.css" rel="stylesheet">
+<link media="screen" type="text/css" href="../../../skin/screen.css" rel="stylesheet">
+<link media="print" type="text/css" href="../../../skin/print.css" rel="stylesheet">
+<link type="text/css" href="../../../skin/profile.css" rel="stylesheet">
+<script src="../../../skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="../../../skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="../../../skin/fontsize.js" language="javascript" type="text/javascript"></script>
+<link rel="shortcut icon" href="../../../favicon.ico">
+</head>
+<body onload="init()">
+<script type="text/javascript">ndeSetTextSize();</script>
+<div id="top">
+<!--+
+    |breadtrail
+    +-->
+<div class="breadtrail">
+<a href="http://www.apache.org/">apache</a> &gt; <a href="http://lenya.apache.org/">lenya</a><script src="../../../skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script>
+</div>
+<!--+
+    |header
+    +-->
+<div class="header">
+<!--+
+    |start group logo
+    +-->
+<div class="grouplogo">
+<a href="http://lenya.apache.org"><img class="logoImage" alt="Lenya" src="../../../images/apache-lenya-light.png" title="
+  	Apache Lenya is a Java-based Open-Source Content Management System.
+  	It is based on open standards such as XML and XSLT.
+  	One of its core components is Cocoon from the Apache Software Foundation.
+  "></a>
+</div>
+<!--+
+    |end group logo
+    +-->
+<!--+
+    |start Project Logo
+    +-->
+<div class="projectlogo">
+<a href=""></a>
+</div>
+<!--+
+    |end Project Logo
+    +-->
+<!--+
+    |start Search
+    +-->
+<div class="searchbox">
+<form action="http://www.google.com/search" method="get" class="roundtopsmall">
+<input value="lenya.apache.org" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with :');" value="Search the site with :" size="25" name="q" id="query" type="text">&nbsp; 
+                    <input name="Search" value="Search" type="submit">
+</form>
+</div>
+<!--+
+    |end search
+    +-->
+<!--+
+    |start Tabs
+    +-->
+<ul id="tabs">
+<li>
+<a class="base-not-selected" href="../../../index.html">Project</a>
+</li>
+<li class="current">
+<a class="base-selected" href="../../../1_4/index.html">Version 1.4</a>
+</li>
+<li>
+<a class="base-not-selected" href="../../../1_2_x/index.html">Version 1.2</a>
+</li>
+<li>
+<a class="base-not-selected" href="../../../community/index.html">Community</a>
+</li>
+</ul>
+<!--+
+    |end Tabs
+    +-->
+</div>
+</div>
+<div id="main">
+<div id="publishedStrip">
+<!--+
+    |start Subtabs
+    +-->
+<div id="level2tabs"></div>
+<!--+
+    |end Endtabs
+    +-->
+<script type="text/javascript" language="JavaScript"><!--
+              document.write("Published: " + document.lastModified);
+              //  --></script>
+</div>
+<!--+
+    |breadtrail
+    +-->
+<div class="breadtrail">
+             
+             &nbsp;
+           </div>
+<!--+
+    |start Menu, mainarea
+    +-->
+<!--+
+    |start Menu
+    +-->
+<div id="menu">
+<div onclick="SwitchMenu('menu_selected_1.1', '../../../skin/')" id="menu_selected_1.1Title" class="menutitle" style="background-image: url('../../../skin/images/chapter_open.gif');">Version 1.4</div>
+<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a title="" href="../../../1_4/index.html">Index</a>
+</div>
+<div onclick="SwitchMenu('menu_1.1.2', '../../../skin/')" id="menu_1.1.2Title" class="menutitle">Installation</div>
+<div id="menu_1.1.2" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../../1_4/installation/index.html">Download</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../../1_4/installation/subversion.html">Subversion Access</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../../1_4/installation/source_version.html">Installation Instructions</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.3', '../../../skin/')" id="menu_1.1.3Title" class="menutitle">Concepts</div>
+<div id="menu_1.1.3" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../../1_4/concepts/wysiwyg.html">WYSIWYG</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_selected_1.1.4', '../../../skin/')" id="menu_selected_1.1.4Title" class="menutitle" style="background-image: url('../../../skin/images/chapter_open.gif');">Technical Reference</div>
+<div id="menu_selected_1.1.4" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a title="" href="../../../1_4/reference/lenya-sitemaps.html">Overview of Lenya Sitemaps</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../../1_4/reference/usecase-framework/index.html">Usecase Framework</a>
+</div>
+<div class="menupage">
+<div class="menupagetitle">Publication Templating</div>
+</div>
+</div>
+<div class="menuitem">
+<a title="" href="../../../../apidocs/1.4/index.html">1.4 API (Javadoc)</a>
+</div>
+</div>
+<div id="credit">
+<a href="http://forrest.apache.org/"><img border="0" title="Built with Apache Forrest" alt="Built with Apache Forrest - logo" src="../../../images/built-with-forrest-button.png" style="width: 88px;height: 31px;"></a>
+</div>
+<div id="roundbottom">
+<img style="display: none" class="corner" height="15" width="15" alt="" src="../../../skin/images/rc-b-l-15-1body-2menu-3menu.png"></div>
+<!--+
+  |alternative credits
+  +-->
+</div>
+<!--+
+    |end Menu
+    +-->
+<!--+
+    |start content
+    +-->
+<div id="content">
+<div id="skinconf-txtlink"></div>
+<div title="Portable Document Format" class="pdflink">
+<a class="dida" href="index.pdf"><img alt="PDF -icon" src="../../../skin/images/pdfdoc.gif" class="skin"><br>
+        PDF</a>
+</div>
+<h1>Publication Templating</h1>
+<div id="minitoc-area">
+<ul class="minitoc">
+<li>
+<a href="#What+is+Publication+Templating%3F">What is Publication Templating?</a>
+</li>
+<li>
+<a href="#The+Concept+of+Publication+Templating">The Concept of Publication Templating</a>
+</li>
+<li>
+<a href="#Declaration+of+a+Template">Declaration of a Template</a>
+</li>
+<li>
+<a href="#Usage">Usage</a>
+</li>
+<li>
+<a href="#XSLT+Include+and+Import">XSLT Include and Import</a>
+</li>
+<li>
+<a href="#Sitemaps">Sitemaps</a>
+</li>
+<li>
+<a href="#Usecases">Usecases</a>
+</li>
+<li>
+<a href="#Setting+Up+a+Publication+To+Support+Templating">Setting Up a Publication To Support Templating</a>
+<ul class="minitoc">
+<li>
+<a href="#Implement+an+">Implement an Instantiator Class</a>
+</li>
+<li>
+<a href="#Add+it+to+">Add it to cocoon.xconf Using a Patch File</a>
+</li>
+<li>
+<a href="#Declare+the+Instantiator+in+">Declare the Instantiator in publication.xconf</a>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+    
+    
+<a name="N1000D"></a><a name="What+is+Publication+Templating%3F"></a>
+<h2 class="underlined_10">What is Publication Templating?</h2>
+<div class="section">
+<p>
+        Imagine you are a company or organisation with some departments which want to edit
+        their content using a Lenya-based CMS. All departments use similar publications,
+        sharing lots of functionality. The layout is based on a common corporate identity,
+        but some departments want to use their own logo or tweak the navigation menu style.
+      </p>
+<p>
+        If all departments develop their own publications, it will be very hard to keep them
+        consistent, to add changes to all publications or to update them to a newer Lenya version.
+        This can be simplified using publication templates. You define a base (template) publication
+        which all others are derived from.         
+      </p>
+<pre class="code">
+                        +----------------------+
+                        | Template Publication |
+                        +----------------------+
+                                    |
+           +-----------------+------+---------------------+
+           |                 |                            |
+   +--------------+  +--------------+             +--------------+
+   | Department A |  | Department B |     ...     | Department X |
+   +--------------+  +--------------+             +--------------+
+</pre>
+<p>Multiple layers of templates are supported.</p>
+<pre class="code">
+                    +--------------------------------+
+                    | University Website Publication |
+                    +--------------------------------+
+                                    |
+           +-----------------+------+------------------------+
+           |                 |                               |
+   +------------+  +--------------------+             +-------------+
+   | Uni Zurich |  | Harvard University |     ...     | UC Berkeley |
+   +------------+  +--------------------+             +-------------+
+                             |
+              +----------+---+-----------+
+              |          |               |
+        +----------+  +-----+       +---------+
+        | Business |  | Law |  ...  | Medical |
+        +----------+  +-----+       +---------+
+</pre>
+</div>
+    
+    
+<a name="N10025"></a><a name="The+Concept+of+Publication+Templating"></a>
+<h2 class="underlined_10">The Concept of Publication Templating</h2>
+<div class="section">
+<ul>
+        
+<li>There is a publication <em>my-pub</em>.</li>
+        
+<li>It depends on a template which is called <em>template(my-pub)</em>.</li>
+        
+<li>When a file is requested using the templating mechanism (<span class="codefrag">fallback://xslt/page2xhtml.xsl</span>),
+            it is searched in a certain traversing order:
+          <ol>
+            
+<li>
+<span class="codefrag">context://lenya/pubs/my-pub/xslt/page2xhtml.xsl</span>
+</li>
+            
+<li>
+<span class="codefrag">context://lenya/pubs/template(my-pub)/xslt/page2xhtml.xsl</span>
+</li>
+            
+<li>
+<span class="codefrag">context://lenya/pubs/template(template(my-pub))/xslt/page2xhtml.xsl</span>
+</li>
+            
+<li>...</li>
+            
+<li>
+<span class="codefrag">context://xslt/page2xhtml.xsl</span>
+</li>
+          
+</ol>
+        
+</li>
+      
+</ul>
+<p>
+        The publication <em>my-pub</em> is called an <strong>instance</strong> of the publication <em>template(my-pub)</em>.
+        Note that, in contrast to the fallback mechanism in Lenya 1.2, the prefix <span class="codefrag">lenya</span> is not used,
+        but the path is resolved relatively to the <span class="codefrag">context://</span> root. 
+      </p>
+</div>
+    
+    
+<a name="N10069"></a><a name="Declaration+of+a+Template"></a>
+<h2 class="underlined_10">Declaration of a Template</h2>
+<div class="section">
+<p>The template of a publication is declared in <span class="codefrag">my-pub/config/publication.xconf</span>:</p>
+<pre class="code">&lt;publication&gt;
+  ...
+  &lt;templates&gt;
+    &lt;template id="my-template"/&gt;
+  &lt;/templates&gt;
+  ...
+&lt;/publication&gt;</pre>
+</div>
+    
+    
+<a name="N1007A"></a><a name="Usage"></a>
+<h2 class="underlined_10">Usage</h2>
+<div class="section">
+<p>To invoke publication templating, it is necessary to use the <span class="codefrag">fallback://</span>
+      protocol for all relevant files. For an XSLT stylesheet, the according pipeline looks as follows:</p>
+<pre class="code">&lt;map:transform src="fallback://xslt/doctypes/doctype2xhtml.xsl"&gt;</pre>
+</div>
+    
+    
+<a name="N1008B"></a><a name="XSLT+Include+and+Import"></a>
+<h2 class="underlined_10">XSLT Include and Import</h2>
+<div class="section">
+<p>
+        To leverage the publication templating concept, it is necessary to apply it to included
+        or imported stylesheets as well. Fortunately, we can make use of the <span class="codefrag">fallback://</span>
+        protocol in XSLT stylesheets. At the moment, this only works with Xalan which means you
+        have to use this one as the default transformer.
+      </p>
+<pre class="code">&lt;xsl:include href="fallback://header.xsl"/&gt;</pre>
+<p>
+        To simplify overriding of XSLT stylesheets, it would be useful to import the template
+        stylesheet. For this purpose, an additional template source factory could be used, which
+        skips the current publication when resolving the file:
+      </p>
+<pre class="code">&lt;xsl:import href="template://template/xslt/common/header.xsl"/&gt;</pre>
+</div>
+    
+    
+<a name="N100A3"></a><a name="Sitemaps"></a>
+<h2 class="underlined_10">Sitemaps</h2>
+<div class="section">
+<p>
+        If a sitemap is loaded from a template publication, it is very important that the sitemap
+        is completely fallback-enabled. Otherwise, the source resolver will resolve sources relatively
+        to the template sitemap instead of using the overridden ones.
+      </p>
+<p>
+        In <span class="codefrag">lenya/global-sitemap.xmap</span>, all publication sitemaps are mounted
+        using the fallback module, for instance
+      </p>
+<pre class="code">&lt;!-- Enter the actual publication --&gt;
+&lt;map:match pattern="*/**"&gt;
+  &lt;map:mount uri-prefix="{1}" src="{fallback:sitemap.xmap}"/&gt;
+&lt;/map:match&gt;</pre>
+</div>
+    
+    
+<a name="N100B7"></a><a name="Usecases"></a>
+<h2 class="underlined_10">Usecases</h2>
+<div class="section">
+<p>
+        The <a href="../usecase-framework/index.html">usecase framework</a>
+        supports publication templating by default.
+      </p>
+<p>
+        If you can't (or don't want to) use the usecase framework, you have to implement
+        your own usecase sitemap. The traversing order for usecase sitemaps is
+      </p>
+<ol>
+        
+<li>
+<span class="codefrag">context://lenya/pubs/my-pub/usecase.xmap</span>
+</li>
+        
+<li>
+<span class="codefrag">context://lenya/pubs/template(my-pub)/usecase.xmap</span>
+</li>
+        
+<li>
+<span class="codefrag">context://lenya/pubs/template(template(my-pub))/usecase.xmap</span>
+</li>
+        
+<li>...</li>
+        
+<li>
+<span class="codefrag">context://lenya/usecase.xmap</span>
+</li>
+      
+</ol>
+<p>
+        This behaviour is achieved by the usecase fallback module which is called in <span class="codefrag">global-sitemap.xmap</span>:
+      </p>
+<pre class="code">&lt;map:match type="usecase" pattern="*"&gt;
+  &lt;map:mount src="{usecase-fallback:{1}}" uri-prefix=""/&gt;
+&lt;/map:match&gt;</pre>
+<p>
+        The decision which <span class="codefrag">usecase.xmap</span> to choose is based on the usecase configuration
+        in <span class="codefrag">publication.xconf</span>. To declare a usecase to be implemented by a publication,
+        add the corresponding entry:
+      </p>
+<pre class="code">&lt;publication&gt;
+  ...
+  &lt;usecases&gt;
+    &lt;usecase name="create"/&gt;
+  &lt;/usecases&gt;
+  ...
+&lt;/publication&gt;</pre>
+</div>
+    
+    
+<a name="N100F5"></a><a name="Setting+Up+a+Publication+To+Support+Templating"></a>
+<h2 class="underlined_10">Setting Up a Publication To Support Templating</h2>
+<div class="section">
+<p>
+        The service <span class="codefrag">org.apache.lenya.cms.publication.templating.Instantiator</span> is responsible for
+        creating instances of publications which support templating. If your publication shall support
+        templating, you have to follow these steps:
+      </p>
+<a name="N10101"></a><a name="Implement+an+"></a>
+<h3 class="underlined_5">Implement an Instantiator Class</h3>
+<pre class="code">package org.myproject.lenya;
+
+public class MyInstantiator extends AbstractLogEnabled implements Instantiator {
+
+    public void instantiate(Publication template, String newPublicationId, String name)
+            throws Exception {
+        ...
+    }
+
+}</pre>
+<a name="N1010F"></a><a name="Add+it+to+"></a>
+<h3 class="underlined_5">Add it to cocoon.xconf Using a Patch File</h3>
+<p>
+          For instance <span class="codefrag">my-pub/config/instantiator.xconf</span>:
+        </p>
+<pre class="code">&lt;xconf xpath="/cocoon/template-instantiators"
+       unless="/cocoon/template-instantiators/component-instance[@name = 'default']"&gt;
+
+    &lt;component-instance name="mypub"
+                        logger="myproject.publication"
+                        class="org.myproject.lenya.MyInstantiator"/&gt;
+
+&lt;/xconf&gt;</pre>
+<a name="N10123"></a><a name="Declare+the+Instantiator+in+"></a>
+<h3 class="underlined_5">Declare the Instantiator in publication.xconf</h3>
+<pre class="code">&lt;publication&gt;
+  ...
+  &lt;template-instantiator name="mypub"/&gt;
+  ...
+&lt;/publication&gt;</pre>
+</div>
+    
+  
+</div>
+<!--+
+    |end content
+    +-->
+<div class="clearboth">&nbsp;</div>
+</div>
+<div id="footer">
+<!--+
+    |start bottomstrip
+    +-->
+<div class="lastmodified">
+<script type="text/javascript"><!--
+document.write("Last Published: " + document.lastModified);
+//  --></script>
+</div>
+<div class="copyright">
+ Copyright &copy; 2002-2005 The Apache Software Foundation.</div>
+<div id="logos"></div>
+<div id="feedback">
+    Send feedback about the website to:
+  <a id="feedbackto" href="mailto:dev@lenya.apache.org?subject=Feedback%C2%A0for%C2%A01_4/reference/publication-templating/index.html">dev@lenya.apache.org</a>
+</div>
+<!--+
+    |end bottomstrip
+    +-->
+</div>
+</body>
+</html>

Added: lenya/site/1_4/reference/publication-templating/index.pdf
URL: http://svn.apache.org/viewcvs/lenya/site/1_4/reference/publication-templating/index.pdf?view=auto&rev=161114
==============================================================================
--- lenya/site/1_4/reference/publication-templating/index.pdf (added)
+++ lenya/site/1_4/reference/publication-templating/index.pdf Tue Apr 12 13:43:42 2005
@@ -0,0 +1,501 @@
+%PDF-1.3
+%ª«¬­
+4 0 obj
+<< /Type /Info
+/Producer (FOP 0.20.5) >>
+endobj
+5 0 obj
+<< /Length 861 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+Gb!<N997d\&:j6F'gApYFo@,[m&A^p(9(:EXU*WQD%GK2+Ata.@f#lo[;h!-MD.21C8>6!__D'PSf'cRdAn]d/B.hSbD=fS+sL\8;+/XK4O$ht)<OMFndYFNq7(dSb!PC!WGg-89/@eHajm8jbZqim6/PN<hIoUqmBo8\8Xs84';m=Hc]te.KRG^lQG-]_[8s^'#'BuEEidP'Ab7^;j4('':m`721NF];[$KGG?.o&QaTC:o?f:7>rB_iU9[+ECEQi8md"DS%&V4'qJd&+SiHu+.l`mDse`u`F(n`i,LrMEsn+Pu)/'*Pu`MA:*6fap0)c]jXHbojdPCI"=UOdO$)1tB?S;pm-0$/(`dtiY?JFL48X0Ju:27pC^/)t5(aN?J/dP"r1=TRL-ZOaTjUj$rYm2"X$b'F*FDVA^'7h4+A:Rch0ck[tKfb!2-+?:Q,/%+*P[Mq5f$Z1r^3)nLk1AU_Wf@(ik+?]*l+ZoA3PPPN^MXQ]OOCo_9:jAkEbBAXs2fI#3r:AUInbq.DFbb*=WRR4S*b0R(UFd/>1`_0oL+eg-S7?OaDIQVB2Pq[OYm^iJ:<Qh-;E%fVTN&39T9iaE'Dt[HKV=77+hD=];RPY[!V-$jM"W,[Vh&Iq:!kdTradQs:lW]2,I`B0.Wr#i_eE8eHu:k)UdO&J'925fohA0k&d@9tM?=/b_h.Zr(RDj4>CXp/`*X(H[>WI3DK#.1qu-q9/`Qo1![W1I">bV;$8&#Kd=]+lZ@O[F),"H?mZ#6(BndJDU.=t1[(j*3C9@H:nLG:&Nu0&,eiX)F<][g0E8Se>Nb?U7s6M\^btOU4]l7r,c`5+up',VHX?*cfTbc:ar=AGU(A.~>
+endstream
+endobj
+6 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 5 0 R
+/Annots 7 0 R
+>>
+endobj
+7 0 obj
+[
+8 0 R
+10 0 R
+12 0 R
+14 0 R
+16 0 R
+18 0 R
+20 0 R
+22 0 R
+24 0 R
+26 0 R
+28 0 R
+]
+endobj
+8 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 12.0 631.666 178.328 619.666 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 9 0 R
+/H /I
+>>
+endobj
+10 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 12.0 613.466 210.656 601.466 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 11 0 R
+/H /I
+>>
+endobj
+12 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 12.0 595.266 145.628 583.266 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 13 0 R
+/H /I
+>>
+endobj
+14 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 12.0 577.066 49.988 565.066 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 15 0 R
+/H /I
+>>
+endobj
+16 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 12.0 558.866 144.98 546.866 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 17 0 R
+/H /I
+>>
+endobj
+18 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 12.0 540.666 64.004 528.666 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 19 0 R
+/H /I
+>>
+endobj
+20 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 12.0 522.466 63.98 510.466 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 21 0 R
+/H /I
+>>
+endobj
+22 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 12.0 504.266 253.34 492.266 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 23 0 R
+/H /I
+>>
+endobj
+24 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 18.0 486.066 186.488 474.066 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 25 0 R
+/H /I
+>>
+endobj
+26 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 18.0 467.866 235.484 455.866 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 27 0 R
+/H /I
+>>
+endobj
+28 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 18.0 449.666 245.792 437.666 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 29 0 R
+/H /I
+>>
+endobj
+30 0 obj
+<< /Length 2382 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+Gau0E>Ar7S'Roe[0_X!=%3nd#Xk5Zkl+2"NLCHu*?*X^TVJRK^j@XG4"9%aOZt/]'U85<R&...@u3Eh>n'O)U/5a"TlY,t@iE/g"VeD4Y?@O8Ik&fYptR*A[(LjsZ,'j5tNLn"hkk=W8Mb`.a)SkB:;h7pK[WOY14mZW$,A"k$u#YCXXCp7*IQNm6?u:K)7#1-0HdPDJ*>/Js9Y+P_c.*(i#Lg7a82h^%_9`du]57N5Q<0<;`<$RG9RS>>=g@:X>QXGUd4TJUBj^hk=Sp2!-\<^o"F3!3i8"G9Q3jt_u>Yhb4">9?5pLRZEKM*iI^B`P""q"3UBdZbC%pYile@i&!5r+Rd]GE^o2=/r>k;sK_RNcJ-4]nd>_ej]90_YS?16DgUg3UseOndDD_41Mpq]jb%$HLZoaBu!:OSYcml^7t6[M-R0CZ,Jron3"df]tD[NIj6^!L6/k]70l_F29&ou."-836Ug<e`:`K>S1ElnPNAP^m/+jJL3\GBh*ZMEA5g28auGn\K+Y+6PKJ$JB0llM)r^>aJ6O"pJBlJbrsu@13^4ZS9dY;':!.^EQlUbj_mm[!Z;=>Q(Y]Dk!i;DO.BIe_8Z9OqH3"=A".L;Z<@!P,p42a64<ULf98J'kj$RuCpNl4j]Rtp%UV;oO60sV"ID;pbr,[mq")IgU#W_UDnS]"DnPo&/T)ukQYNFcnSi$Z[ppAmcpM=U\i"!\d,n%LKlBa`EGu_8,F21QqJ#KrN!G?XT-MVhFZA?`nAKpjnM85+D;m[m'rt;V&<?aBo8/1^k;g?q,pk2fpm(DFKD>k8)\.<A/<Wc1ZfJ2:h$p:/lQ=/r$TN6:BPI<Le;sk=Fm<Zj=C:n(SN4QtiZ*WnuNo*1n*lcTq8GZ,p;U"eW&c[2nn\kQ)oIfc1N3eC+lPg/6ZZINQBMcJ^J)lcd;1Mh#%?"IXO,e2&Qo@j0%PaU^]H\Vn,q^g[^II%]dA5@Kr@W<8AM3ba+^i!u!9t_uHqIY!RoEqBkTD(s8OeIFEKAo4U4\!$:o8;=MsVa7WOl&TPAZC-8YWfc?Dn]`M/+Tk$jSY#C.RQrM5gL0#u(o)TL$^+:'/ZN#X*5.[$#TC(3.d_6+Qp+Pq]E8cXFg&5`&`PhZ0T02D3?1H2F\j40ehgI2<8ceJE0EG@GaqipuZF8BT,8=A&:s.b=uXpAks<I:Jc$m9.d)O%h:'aCd#>H#05,X\I#\FhsHe]G-a/bf-8J@W8Umk.MR3?JH^?OV];GJ@U,Uqr&afYlq9D23;0s0,Bn>:S%i!V$[TP>dJEMn91i^h*Ccc[31krOlMJ&Kt!,AeQ))h<HP253j)(Ji9?EW4`hSHg4?n6PDnn_Usg#XqTo4fO&>VB<]:*$A\Q8t]P>fDpcLC4Calk#\J,kN2E0jPe9kqM98c\5fcEc'2!WL,_qaKi\5#:keDbaOEH!-,`IXKu:hT>lB&;#DI%?(7NcL"^'Ku3,L2FsFCUjOG1T,*q](m==Cg@'.C\>=NbZld[`rR9[JU?T2%.Qp.J)ERpQO(3'RMk"%aEd[^h6*h-HTHjc(0P,%f]?#]^^$:o#@R#.Rer&J0Jj6c_*(c`gn7<.B3@fFi)i$Jb'Xgf0@FCZUSb6V/.m0.YJnn?:0M$$%At*]7%8)k`mQuj;+]=Hf@]jn5cNQlh>J@L)?<aL@b'aa$,A4RjWtO2*nAtpQ/(JV$TE^oZ,R;\ogAi>DKrhYE?i?ra@4F+as!#$L\EAuoO[3["ZEFMikg#JV$O%POE3BCnn[[!g>&(d,MsZ9hqkBR\Tn,02h9rYK5WAL2R'G=Cg`%ETTh,s6XK;!buI&c*)4aZ'rD3meSGX7EXa2El6u]L7f^/,[25d-%CC\#`'$_Hd](2?XE+ic6UDQ-%t-MKSKA<=@IlY<FgfudnT%WE7^pU:Loo^A$i&a*_cB=pX,WM*pCGrOgst#4e]O@tS'EON6tFga%FrWfJHEO.6KSfu^#M=Ph`*[~>
+endstream
+endobj
+31 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 30 0 R
+>>
+endobj
+32 0 obj
+<< /Length 2615 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+GatU5l]9dY'*%C76JX;]">MK*miYi-4Z#Tc!gbf/+MdAmcq<q6La9!bZsKNks*g^JV4gT)?5s#_7#CNn4FT(Rs1$ta[,:el0hLS2Q>\mF:Hua\C%uiOIm&_,h^o:o)]4/EO.5#c5OLJB:SD4)]Cq#>$)Ekq_EZ6-G5J^>I*:1*`dcimgsmr/Z`%KdpMZ&k)Z*lSH`9R<\)0gaR;M3\!'+I9\WtELQGudmnj;p%II[ijl#jgq?JlIJom048=Dt1n^45bC.XGPKZ.gca-h_?h$rZhIU.pPYrf'WfUsJ[R3-&1b]gn;EHEO..K#Ogk,&p*E875@>C%ZJo41rq0_LXit:inoi=nW]Oh`gCM.jqbgT*-sm;Xg-q4I`,g\<n&IG?P9<Z0/&N-Tn1BX,tRj.C@/s?bcNIf6H,(YMPpD<M+iqOg4c]bS2;>39DCcHR$S,--O^<D9=j<L?os]pgdOI:Xt4dOk%,6*(kguPF3!qGh+6sEZQ0O0cYf8@igmWC(V0qQo#%*4L7t]'(Po@o%6U#e[pLTosnUuI%W.53mS(Z]=XL4TS_dX?DpNZ7[L/_ME#AaCsF4j?h9G=qF\?/5sQE84Ie&9(JJr8VKL[ZoU4RT]SK]ns8Vm/Q">-iF/bEemqdUBJ-.duCkBDs0tIp*-^J=)G]S;":h_r2P.E(B/@4qp9T&1eF!m#&'IcSh&%A9fja4q@JZ?e.YX.)q"EW!agdj*H?"5`+SNkU3d?=*k'e0Jscgq3bp;@,0pJY6;FlrGV9N(Pe;23>B3i;EZ8S=-he+1_PBlT*'R6H^EpoWi)oWb,13amfBafn>^E%jRq!A)iF^cV1RJE8gU1!K_\4p'Gc84T$ai9D`C6,BTHM\8jdKr3]#f+>j.LhUW9UOqRLdKB%c#7(p@$L]sg(Lq1\/P`t#;!L6E3HSpi]dM80#dn!%?&h[@V)"u=6eR9Y<t+?K`o:RF>#;5qh4c/d>O7<S<D@]_@^J<eEQp4%`iB;80GLK8;12*\V7;L(+W,)'Zrhf=1:.[qin:ZtBSC*R<SUQLh);(r=3%sFM=2iI07C!V]JM?r]R9']Fj0HI(CPM]YL/C!'AEqAR2u^#0.HCN>4\oZOlNlEhk9Qo-n?L3;B799^!(_se@C4i\X(EM?m1Tf:m`DaET-:9X7VAD0j72QeJ!J`bD`ht'?>?Y8m>=aNu:T4V:U8ncB5"$(W[8f<(T>TKio2aZ-#m,T2N'Em_7!b<-UpfjZG&>A&,VZ0GcVrWZ!'W&!BYpS5oa--9)a63)s.W;2`dUhMS_\K#6=*W<=(hcI)&/j,['G*=b>@\l1.L\J8ir@@4u6f7H[RVUA![Pd[;8P\+gX<\gm5H.$4_Cm6rZF\5WOlk\)k/=SVB+Ap;l+Zs[n/][L>jU;^kn[n13_Q0<e?t*=5-Q*[r"e)T5$u=C8_oqFj5.7r(mEd(7#gbDl7s.lM,d4-N_8ZB/]A:)CGM:0r%Qr`IKh(HaM+8f=D$bHV^>.WEAc7&O<h5HR)B02,7t4<jX!eBNY3SYf]2@U(k\RjHZ#$>9o9DB?(.T+OL<_[\+%j*@UDa<l0&r"bN=A:akJ?;2:tV;U37ZO^q'%WK9+p,A).352(eDW01%jN.$RDq?F^1"gPEA5^XUC[UR-i3/$c4iEkqWLClUZks4btM!D9kDEX5#1-hS9s?4M2hJ2]Qg!;X`$X@5"DsOWWF("DGrdgf.@*68s0R,'4lPE?-[KJ\"3Ue6uo`JFW"KW5^tK;e<h2O!h=pEdXJ%>9WX8GPY:b#Lg=mctRcKBfg=#.nq![,)uDt=HP0+EdG&n.[g@RU5.G1F4/D]VDKY:$*LTA^+MuGY"klG[Bs(/Ta,WaJ6HKcV?Om25jB,+JCp2,>/@q]6!RF%r4Ia`ATXpUDF"F:L,>k2]rhEQpJt:UrPHIA?C?SXY>PUEc]m_If@>H>cAh*o.eZKbm/F/.][gA+*'2VdPaBi.o-/DDFEa\DQ._FT;\Z,#K52!oY7oDR+gkD6_FFe:ROW$,5=b5uA^@l5_16Y3)A[Xe`Hb8D\q(]V:"O\WgS`s57m6&$g-F6u_:17V2[tDHm2CNGL>Obj:YNP3pRUCmVnJ)'^Dj83g68N3d<@cT!"H'l/9a:+Il#Y6g#kU6KY&A^+6gBYbI<>m3\+Ks4rQ$)-Y@n@QDjl(Bf-jf]*MR34EQHhi2A2F9FM:i7!h[elVi2l*65CK2BW!\6H-&u!Eje@T,KG"%9C@cqH2bQSuO7)0ZZo1FY1+-]U^joKp+#NaL_3/dbg'Z!_FE7S.Q\PhtE!4IgJm^;uQ2---:b4@kM.7/pX-sjFK")^+#$ngB62hC$Yj?cs+p8I,fu;#rKC=WjrG?*m06;nd!9c:Q%Uc0FYt7pj&(3j$X^sC<^os)-fF>G(1;9#3G>0K0*4%8F.dXQXobRV*]5C/o'5M"I"-)a@uJ0.b+TP%u=d#"6F1'F7t5=5Z-^'a,Quk5=Q7B*?8])lF(Rl8@RgkYn^#_pcSJ)e;LW;Z@g&'d%J,5U7&j*6":!&r1:qnH$L1ie$5J]4[@aWXe8;5/c9V9ToM\1%jdHD[/RoQokCp+khgah'MnRQ7qDSc7).q"W6gu59KZ+[;dd!4!G0!E=9~>
+endstream
+endobj
+33 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 32 0 R
+/Annots 34 0 R
+>>
+endobj
+34 0 obj
+[
+35 0 R
+]
+endobj
+35 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 21.66 337.664 113.952 325.664 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A << /URI (../usecase-framework/index.html)
+/S /URI >>
+/H /I
+>>
+endobj
+36 0 obj
+<< /Length 1340 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+GasapD/\/e&H;*)+o"]7TVa$LkbW'PV-R>:fROEN5;iD4aL%d<(,...@uIm4A>2#I2BnnJ=<?9bg&8Mg13f\BH*;YeJK.r6KIq/P&:#BXt;W`Y2lNA'dL'Etjc7-4/qG%=>b(%V*:lV9@L]:!f\pYaNTeT470/\cco+<>SBAa24]R?Dh?p;$KnVi96*]S<$,\-!$lMF%Ds&/pN<_^MeCr,3k:N"?]AK*.J*Jb_$0R+Zf$TH:7;/%6qfGbJ^n'<6OGAYK7^j'-kNID@?XQ*;tpMNY_n'@9i]Ce-G$"fslA)5"GI6<-2U5/l.qAkH%oNcD=l(I4><NJi1'Je8m[I<\K^djRNIW\r<K`@-aR;?!qdQ>(7ZD2aI)T'B;;=4=_*^te4&"s%HV6^;fVWDXTD2!V4nH/$%9UY]n=D5Je/AqU*]kH5R?SLaI0B#WBdY*<jR9L"LcQmrk.0j^CqT2s^s<->_,_pFNrp..RdSPa\^2B1NFa%\o(\(68ZYpq[GhS'M,9h/A:3phdQq9Z*);na_6;aqklIB#KE:jPO/TG*M<4T\7E(TusYn8<n(d.g=7J@c/K2GhlK8sD_-U2&sI)Pp'1YE1.=<OX,PUVQ@Q8j+Y46k)'%V$<jD:c2)R(3*<8it=@FN.t9uOKj]jHQOq-@:Ch68">r"nG*3Spo<A$Oh.ZHf^sd36la1@6a'6PT7AO>-t4OeC?f;7bh"c8_>/0l&X5\@9nF!eXm2n$R%obLadA,u*)Qq>!FX_0iPik2njV&`VV'tX!Sq6$\/"^c4B"HQ30jZQfDU*aeotRTpI<)IB-DHK8rF=0VIrH5kR"V(c+@tfYE0.Iru\3t!W~>
+endstream
+endobj
+37 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 36 0 R
+>>
+endobj
+39 0 obj
+<<
+ /Title (\376\377\0\61\0\40\0\127\0\150\0\141\0\164\0\40\0\151\0\163\0\40\0\120\0\165\0\142\0\154\0\151\0\143\0\141\0\164\0\151\0\157\0\156\0\40\0\124\0\145\0\155\0\160\0\154\0\141\0\164\0\151\0\156\0\147\0\77)
+ /Parent 38 0 R
+ /Next 40 0 R
+ /A 9 0 R
+>> endobj
+40 0 obj
+<<
+ /Title (\376\377\0\62\0\40\0\124\0\150\0\145\0\40\0\103\0\157\0\156\0\143\0\145\0\160\0\164\0\40\0\157\0\146\0\40\0\120\0\165\0\142\0\154\0\151\0\143\0\141\0\164\0\151\0\157\0\156\0\40\0\124\0\145\0\155\0\160\0\154\0\141\0\164\0\151\0\156\0\147)
+ /Parent 38 0 R
+ /Prev 39 0 R
+ /Next 41 0 R
+ /A 11 0 R
+>> endobj
+41 0 obj
+<<
+ /Title (\376\377\0\63\0\40\0\104\0\145\0\143\0\154\0\141\0\162\0\141\0\164\0\151\0\157\0\156\0\40\0\157\0\146\0\40\0\141\0\40\0\124\0\145\0\155\0\160\0\154\0\141\0\164\0\145)
+ /Parent 38 0 R
+ /Prev 40 0 R
+ /Next 42 0 R
+ /A 13 0 R
+>> endobj
+42 0 obj
+<<
+ /Title (\376\377\0\64\0\40\0\125\0\163\0\141\0\147\0\145)
+ /Parent 38 0 R
+ /Prev 41 0 R
+ /Next 43 0 R
+ /A 15 0 R
+>> endobj
+43 0 obj
+<<
+ /Title (\376\377\0\65\0\40\0\130\0\123\0\114\0\124\0\40\0\111\0\156\0\143\0\154\0\165\0\144\0\145\0\40\0\141\0\156\0\144\0\40\0\111\0\155\0\160\0\157\0\162\0\164)
+ /Parent 38 0 R
+ /Prev 42 0 R
+ /Next 44 0 R
+ /A 17 0 R
+>> endobj
+44 0 obj
+<<
+ /Title (\376\377\0\66\0\40\0\123\0\151\0\164\0\145\0\155\0\141\0\160\0\163)
+ /Parent 38 0 R
+ /Prev 43 0 R
+ /Next 45 0 R
+ /A 19 0 R
+>> endobj
+45 0 obj
+<<
+ /Title (\376\377\0\67\0\40\0\125\0\163\0\145\0\143\0\141\0\163\0\145\0\163)
+ /Parent 38 0 R
+ /Prev 44 0 R
+ /Next 46 0 R
+ /A 21 0 R
+>> endobj
+46 0 obj
+<<
+ /Title (\376\377\0\70\0\40\0\123\0\145\0\164\0\164\0\151\0\156\0\147\0\40\0\125\0\160\0\40\0\141\0\40\0\120\0\165\0\142\0\154\0\151\0\143\0\141\0\164\0\151\0\157\0\156\0\40\0\124\0\157\0\40\0\123\0\165\0\160\0\160\0\157\0\162\0\164\0\40\0\124\0\145\0\155\0\160\0\154\0\141\0\164\0\151\0\156\0\147)
+ /Parent 38 0 R
+ /First 47 0 R
+ /Last 49 0 R
+ /Prev 45 0 R
+ /Count -3
+ /A 23 0 R
+>> endobj
+47 0 obj
+<<
+ /Title (\376\377\0\70\0\56\0\61\0\40\0\111\0\155\0\160\0\154\0\145\0\155\0\145\0\156\0\164\0\40\0\141\0\156\0\40\0\111\0\156\0\163\0\164\0\141\0\156\0\164\0\151\0\141\0\164\0\157\0\162\0\40\0\103\0\154\0\141\0\163\0\163)
+ /Parent 46 0 R
+ /Next 48 0 R
+ /A 25 0 R
+>> endobj
+48 0 obj
+<<
+ /Title (\376\377\0\70\0\56\0\62\0\40\0\101\0\144\0\144\0\40\0\151\0\164\0\40\0\164\0\157\0\40\0\143\0\157\0\143\0\157\0\157\0\156\0\56\0\170\0\143\0\157\0\156\0\146\0\40\0\125\0\163\0\151\0\156\0\147\0\40\0\141\0\40\0\120\0\141\0\164\0\143\0\150\0\40\0\106\0\151\0\154\0\145)
+ /Parent 46 0 R
+ /Prev 47 0 R
+ /Next 49 0 R
+ /A 27 0 R
+>> endobj
+49 0 obj
+<<
+ /Title (\376\377\0\70\0\56\0\63\0\40\0\104\0\145\0\143\0\154\0\141\0\162\0\145\0\40\0\164\0\150\0\145\0\40\0\111\0\156\0\163\0\164\0\141\0\156\0\164\0\151\0\141\0\164\0\157\0\162\0\40\0\151\0\156\0\40\0\160\0\165\0\142\0\154\0\151\0\143\0\141\0\164\0\151\0\157\0\156\0\56\0\170\0\143\0\157\0\156\0\146)
+ /Parent 46 0 R
+ /Prev 48 0 R
+ /A 29 0 R
+>> endobj
+50 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F3
+/BaseFont /Helvetica-Bold
+/Encoding /WinAnsiEncoding >>
+endobj
+51 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F5
+/BaseFont /Times-Roman
+/Encoding /WinAnsiEncoding >>
+endobj
+52 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F6
+/BaseFont /Times-Italic
+/Encoding /WinAnsiEncoding >>
+endobj
+53 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F1
+/BaseFont /Helvetica
+/Encoding /WinAnsiEncoding >>
+endobj
+54 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F9
+/BaseFont /Courier
+/Encoding /WinAnsiEncoding >>
+endobj
+55 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F2
+/BaseFont /Helvetica-Oblique
+/Encoding /WinAnsiEncoding >>
+endobj
+56 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F7
+/BaseFont /Times-Bold
+/Encoding /WinAnsiEncoding >>
+endobj
+1 0 obj
+<< /Type /Pages
+/Count 4
+/Kids [6 0 R 31 0 R 33 0 R 37 0 R ] >>
+endobj
+2 0 obj
+<< /Type /Catalog
+/Pages 1 0 R
+ /Outlines 38 0 R
+ /PageMode /UseOutlines
+ >>
+endobj
+3 0 obj
+<< 
+/Font << /F3 50 0 R /F5 51 0 R /F1 53 0 R /F6 52 0 R /F9 54 0 R /F2 55 0 R /F7 56 0 R >> 
+/ProcSet [ /PDF /ImageC /Text ] >> 
+endobj
+9 0 obj
+<<
+/S /GoTo
+/D [31 0 R /XYZ -5.0 731.0 null]
+>>
+endobj
+11 0 obj
+<<
+/S /GoTo
+/D [31 0 R /XYZ -5.0 327.106 null]
+>>
+endobj
+13 0 obj
+<<
+/S /GoTo
+/D [31 0 R /XYZ -5.0 142.772 null]
+>>
+endobj
+15 0 obj
+<<
+/S /GoTo
+/D [33 0 R /XYZ -5.0 701.42 null]
+>>
+endobj
+17 0 obj
+<<
+/S /GoTo
+/D [33 0 R /XYZ -5.0 626.026 null]
+>>
+endobj
+19 0 obj
+<<
+/S /GoTo
+/D [33 0 R /XYZ -5.0 493.172 null]
+>>
+endobj
+21 0 obj
+<<
+/S /GoTo
+/D [33 0 R /XYZ -5.0 366.998 null]
+>>
+endobj
+23 0 obj
+<<
+/S /GoTo
+/D [37 0 R /XYZ -5.0 731.0 null]
+>>
+endobj
+25 0 obj
+<<
+/S /GoTo
+/D [37 0 R /XYZ -5.0 652.266 null]
+>>
+endobj
+27 0 obj
+<<
+/S /GoTo
+/D [37 0 R /XYZ -5.0 523.613 null]
+>>
+endobj
+29 0 obj
+<<
+/S /GoTo
+/D [37 0 R /XYZ -5.0 393.48 null]
+>>
+endobj
+38 0 obj
+<<
+ /First 39 0 R
+ /Last 46 0 R
+>> endobj
+xref
+0 57
+0000000000 65535 f 
+0000013607 00000 n 
+0000013686 00000 n 
+0000013778 00000 n 
+0000000015 00000 n 
+0000000071 00000 n 
+0000001023 00000 n 
+0000001143 00000 n 
+0000001238 00000 n 
+0000013923 00000 n 
+0000001372 00000 n 
+0000013986 00000 n 
+0000001508 00000 n 
+0000014052 00000 n 
+0000001644 00000 n 
+0000014118 00000 n 
+0000001779 00000 n 
+0000014183 00000 n 
+0000001914 00000 n 
+0000014249 00000 n 
+0000002049 00000 n 
+0000014315 00000 n 
+0000002183 00000 n 
+0000014381 00000 n 
+0000002318 00000 n 
+0000014445 00000 n 
+0000002454 00000 n 
+0000014511 00000 n 
+0000002590 00000 n 
+0000014577 00000 n 
+0000002726 00000 n 
+0000005201 00000 n 
+0000005309 00000 n 
+0000008017 00000 n 
+0000008140 00000 n 
+0000008167 00000 n 
+0000008350 00000 n 
+0000009783 00000 n 
+0000014642 00000 n 
+0000009891 00000 n 
+0000010164 00000 n 
+0000010488 00000 n 
+0000010741 00000 n 
+0000010877 00000 n 
+0000011118 00000 n 
+0000011272 00000 n 
+0000011426 00000 n 
+0000011828 00000 n 
+0000012113 00000 n 
+0000012467 00000 n 
+0000012834 00000 n 
+0000012947 00000 n 
+0000013057 00000 n 
+0000013168 00000 n 
+0000013276 00000 n 
+0000013382 00000 n 
+0000013498 00000 n 
+trailer
+<<
+/Size 57
+/Root 2 0 R
+/Info 4 0 R
+>>
+startxref
+14693
+%%EOF

Added: lenya/site/1_4/reference/usecase-framework/index.html
URL: http://svn.apache.org/viewcvs/lenya/site/1_4/reference/usecase-framework/index.html?view=auto&rev=161114
==============================================================================
--- lenya/site/1_4/reference/usecase-framework/index.html (added)
+++ lenya/site/1_4/reference/usecase-framework/index.html Tue Apr 12 13:43:42 2005
@@ -0,0 +1,536 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta content="Apache Forrest" name="Generator">
+<meta name="Forrest-version" content="0.6">
+<meta name="Forrest-skin-name" content="pelt">
+<title>The Usecase Framework</title>
+<link type="text/css" href="../../../skin/basic.css" rel="stylesheet">
+<link media="screen" type="text/css" href="../../../skin/screen.css" rel="stylesheet">
+<link media="print" type="text/css" href="../../../skin/print.css" rel="stylesheet">
+<link type="text/css" href="../../../skin/profile.css" rel="stylesheet">
+<script src="../../../skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="../../../skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="../../../skin/fontsize.js" language="javascript" type="text/javascript"></script>
+<link rel="shortcut icon" href="../../../favicon.ico">
+</head>
+<body onload="init()">
+<script type="text/javascript">ndeSetTextSize();</script>
+<div id="top">
+<!--+
+    |breadtrail
+    +-->
+<div class="breadtrail">
+<a href="http://www.apache.org/">apache</a> &gt; <a href="http://lenya.apache.org/">lenya</a><script src="../../../skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script>
+</div>
+<!--+
+    |header
+    +-->
+<div class="header">
+<!--+
+    |start group logo
+    +-->
+<div class="grouplogo">
+<a href="http://lenya.apache.org"><img class="logoImage" alt="Lenya" src="../../../images/apache-lenya-light.png" title="
+  	Apache Lenya is a Java-based Open-Source Content Management System.
+  	It is based on open standards such as XML and XSLT.
+  	One of its core components is Cocoon from the Apache Software Foundation.
+  "></a>
+</div>
+<!--+
+    |end group logo
+    +-->
+<!--+
+    |start Project Logo
+    +-->
+<div class="projectlogo">
+<a href=""></a>
+</div>
+<!--+
+    |end Project Logo
+    +-->
+<!--+
+    |start Search
+    +-->
+<div class="searchbox">
+<form action="http://www.google.com/search" method="get" class="roundtopsmall">
+<input value="lenya.apache.org" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with :');" value="Search the site with :" size="25" name="q" id="query" type="text">&nbsp; 
+                    <input name="Search" value="Search" type="submit">
+</form>
+</div>
+<!--+
+    |end search
+    +-->
+<!--+
+    |start Tabs
+    +-->
+<ul id="tabs">
+<li>
+<a class="base-not-selected" href="../../../index.html">Project</a>
+</li>
+<li class="current">
+<a class="base-selected" href="../../../1_4/index.html">Version 1.4</a>
+</li>
+<li>
+<a class="base-not-selected" href="../../../1_2_x/index.html">Version 1.2</a>
+</li>
+<li>
+<a class="base-not-selected" href="../../../community/index.html">Community</a>
+</li>
+</ul>
+<!--+
+    |end Tabs
+    +-->
+</div>
+</div>
+<div id="main">
+<div id="publishedStrip">
+<!--+
+    |start Subtabs
+    +-->
+<div id="level2tabs"></div>
+<!--+
+    |end Endtabs
+    +-->
+<script type="text/javascript" language="JavaScript"><!--
+              document.write("Published: " + document.lastModified);
+              //  --></script>
+</div>
+<!--+
+    |breadtrail
+    +-->
+<div class="breadtrail">
+             
+             &nbsp;
+           </div>
+<!--+
+    |start Menu, mainarea
+    +-->
+<!--+
+    |start Menu
+    +-->
+<div id="menu">
+<div onclick="SwitchMenu('menu_selected_1.1', '../../../skin/')" id="menu_selected_1.1Title" class="menutitle" style="background-image: url('../../../skin/images/chapter_open.gif');">Version 1.4</div>
+<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a title="" href="../../../1_4/index.html">Index</a>
+</div>
+<div onclick="SwitchMenu('menu_1.1.2', '../../../skin/')" id="menu_1.1.2Title" class="menutitle">Installation</div>
+<div id="menu_1.1.2" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../../1_4/installation/index.html">Download</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../../1_4/installation/subversion.html">Subversion Access</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../../1_4/installation/source_version.html">Installation Instructions</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.3', '../../../skin/')" id="menu_1.1.3Title" class="menutitle">Concepts</div>
+<div id="menu_1.1.3" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../../1_4/concepts/wysiwyg.html">WYSIWYG</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_selected_1.1.4', '../../../skin/')" id="menu_selected_1.1.4Title" class="menutitle" style="background-image: url('../../../skin/images/chapter_open.gif');">Technical Reference</div>
+<div id="menu_selected_1.1.4" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a title="" href="../../../1_4/reference/lenya-sitemaps.html">Overview of Lenya Sitemaps</a>
+</div>
+<div class="menupage">
+<div class="menupagetitle">Usecase Framework</div>
+</div>
+<div class="menuitem">
+<a title="" href="../../../1_4/reference/publication-templating/index.html">Publication Templating</a>
+</div>
+</div>
+<div class="menuitem">
+<a title="" href="../../../../apidocs/1.4/index.html">1.4 API (Javadoc)</a>
+</div>
+</div>
+<div id="credit">
+<a href="http://forrest.apache.org/"><img border="0" title="Built with Apache Forrest" alt="Built with Apache Forrest - logo" src="../../../images/built-with-forrest-button.png" style="width: 88px;height: 31px;"></a>
+</div>
+<div id="roundbottom">
+<img style="display: none" class="corner" height="15" width="15" alt="" src="../../../skin/images/rc-b-l-15-1body-2menu-3menu.png"></div>
+<!--+
+  |alternative credits
+  +-->
+</div>
+<!--+
+    |end Menu
+    +-->
+<!--+
+    |start content
+    +-->
+<div id="content">
+<div id="skinconf-txtlink"></div>
+<div title="Portable Document Format" class="pdflink">
+<a class="dida" href="index.pdf"><img alt="PDF -icon" src="../../../skin/images/pdfdoc.gif" class="skin"><br>
+        PDF</a>
+</div>
+<h1>The Usecase Framework</h1>
+<div id="minitoc-area">
+<ul class="minitoc">
+<li>
+<a href="#Introduction">Introduction</a>
+</li>
+<li>
+<a href="#Directory+Structure">Directory Structure</a>
+<ul class="minitoc">
+<li>
+<a href="#The+Lenya+Core">The Lenya Core</a>
+</li>
+<li>
+<a href="#Your+Publication">Your Publication</a>
+</li>
+</ul>
+</li>
+<li>
+<a href="#Architecture">Architecture</a>
+</li>
+<li>
+<a href="#The+Contract+Between+Flowscript+And+Usecase+Handler">The Contract Between Flowscript And Usecase Handler</a>
+</li>
+<li>
+<a href="#Implementing+a+Custom+Usecase">Implementing a Custom Usecase</a>
+<ul class="minitoc">
+<li>
+<a href="#Prerequisites">Prerequisites</a>
+</li>
+<li>
+<a href="#Add+a+Menu+Item">Add a Menu Item</a>
+</li>
+<li>
+<a href="#Implement+the+Usecase+Handler+Class">Implement the Usecase Handler Class</a>
+</li>
+<li>
+<a href="#Implement+the+View">Implement the View</a>
+</li>
+</ul>
+</li>
+<li>
+<a href="#Overriding+Core+Usecases+in+Publications">Overriding Core Usecases in Publications</a>
+<ul class="minitoc">
+<li>
+<a href="#Overriding+Usecase+Handler+Classes">Overriding Usecase Handler Classes</a>
+</li>
+<li>
+<a href="#Overriding+JX+Templates">Overriding JX Templates</a>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+    
+    
+<a name="N1000D"></a><a name="Introduction"></a>
+<h2 class="underlined_10">Introduction</h2>
+<div class="section">
+<p>A usecase in Lenya means a user triggered action. In most cases, a usecase is triggered by a CMS menu option on
+      a specific document of the publication. This document is the object of the usecases' action (such as edit, delete, publish, ...).</p>
+<p>There are usecases which are independent of a specific document, such as the <span class="codefrag">ac.logout</span> usecase. In that case it does 
+      not matter on what document the usecase is triggered. The part of the request which specifies the document is simply ignored
+      by usecases that are document independent.</p>
+<p>The CMS menus trigger usecases by setting the <span class="codefrag">lenya.usecase</span> request parameter on the current document. If for example
+      the user selects the <em>Publish</em> option from the <em>Workflow</em> menu, a request will be triggered such as:
+      
+<span class="codefrag">
+      GET http://www.server.com/lenya/default/authoring/tutorial.html?&amp;lenya.usecase=publish
+</span>
+</p>
+<p>The Lenya <span class="codefrag">global-sitemap.xmap</span> will redirect requests with a <span class="codefrag">lenya.usecase</span> request parameter to the 
+      <span class="codefrag">$LENYA_WEBAPP/lenya/usecase.xmap</span>
+      sub-sitemap. From version 1.4 on, the following pipeline in this sitemap is used to recognonize usecases which are implemented 
+      in Java using the new 1.4 usecase framework:</p>
+<pre class="code">
+&lt;map:pipeline&gt;
+  &lt;map:match type="registered-usecase"&gt;
+    &lt;map:mount src="usecases/usecase.xmap" uri-prefix="" check-reload="yes" reload-method="synchron"/&gt;
+  &lt;/map:match&gt;
+&lt;/map:pipeline&gt;
+</pre>
+<p>The <span class="codefrag">registered-usecase</span> matcher's default implementation 
+	(<span class="codefrag">org.apache.lenya.cms.cocoon.matching.UsecaseRegistrationMatcher</span>) will use the Avalon
+	component resolver mechanism to resolve the name of the usecase to a an Avalon component. In case it cannot
+	resolve the usecase to an Avalon component, sitemap processing will continue and the usecase is treated in the
+	traditional way using the <span class="codefrag">usecase</span> and <span class="codefrag">step</span> matchers 
+	(<span class="codefrag">org.apache.cocoon.matching.WildcardRequestParameterMatcher</span>). In order for this to work
+	correctly, there should be a <span class="codefrag">lenya.step</span> parameter in the request.</p>
+<p>If the usecase could be resolved successfully into an Avalon component, processing will continue in the 
+	<span class="codefrag">$LENYA_WEBAPP/lenya/usecases/usecase.xmap</span> (as opposed to <span class="codefrag">$LENYA_WEBAPP/lenya/usecase.xmap</span>) with
+	the new JX and Java based 1.4 usecase framework.</p>
+<p>
+        The <em>usecase framework</em> in Lenya 1.4 is a simple framework to implement usecases using JX templates and Java.
+        This approach is an "85% solution". It enables the user to implement a big range of common usecases.
+      </p>
+<div class="frame note">
+<div class="label">Note</div>
+<div class="content">
+        Some special complex usecases might require a custom flowscript, in this case you can't use this framework.
+      </div>
+</div>
+</div>
+    
+    
+<a name="N10062"></a><a name="Directory+Structure"></a>
+<h2 class="underlined_10">Directory Structure</h2>
+<div class="section">
+<a name="N10068"></a><a name="The+Lenya+Core"></a>
+<h3 class="underlined_5">The Lenya Core</h3>
+<pre class="code">
+$LENYA_WEBAPP
+  /lenya/usecases                     usecase-related files
+                 /usecase.xmap        usecase dispatching sitemap
+                 /usecases.js         flowscript for usecase control flow
+                 /admin               Lenya admin usecases
+                       /addUser.jx    JX templates for usecase views
+                 ...                  more Lenya core usecases
+</pre>
+<a name="N10073"></a><a name="Your+Publication"></a>
+<h3 class="underlined_5">Your Publication</h3>
+<pre class="code">
+$PUB_HOME
+  /lenya/usecases                     usecase-related files
+                 /editHeadline.jx     JX templates for usecase views
+  /java/src/...                       usecase handler classes
+</pre>
+</div>
+    
+    
+    
+<a name="N1007F"></a><a name="Architecture"></a>
+<h2 class="underlined_10">Architecture</h2>
+<div class="section">
+<p>
+        A usecase request - denoted by the request parameter <span class="codefrag">lenya.usecase</span> - is dispatched by <span class="codefrag">$LENYA_WEBAPP/lenya/usecases/usecase.xmap</span>.
+        All usecases are handled by a single flowscript <span class="codefrag">$LENYA_WEBAPP/lenya/usecases/usecases.js</span>. This keeps javascript maintenance costs at a minimum.
+      </p>
+<p>
+        The flowscript <span class="codefrag">usecases.js</span> determines the usecase handler class using the <span class="codefrag">org.apache.lenya.cms.usecase.UsecaseResolver</span>.
+        All business code operations are delegated to the usecase handler class.
+      </p>
+<div style="text-align: center;">
+<img class="figure" alt="Usecase framework architecture" src="../../../images/live/usecase-framework-architecture.png"></div>
+</div>
+    
+    
+<a name="N1009F"></a><a name="The+Contract+Between+Flowscript+And+Usecase+Handler"></a>
+<h2 class="underlined_10">The Contract Between Flowscript And Usecase Handler</h2>
+<div class="section">
+<p>
+        The usecase handler class has to implement the interface <span class="codefrag">org.apache.lenya.cms.usecase.Usecase</span>.
+        The methods of this interface are called in a certain order when the usecase is invoked:
+      </p>
+<ol>
+        
+<li>
+<span class="codefrag">setup(String sourceUrl, Situation situation);</span> Initializes the handler.</li>
+        
+<li>
+<span class="codefrag">isInteractive()</span> Asks is the usecase is interactive, i.e. if a confirmation screen should be presented to the user.</li>
+        
+<li>
+<span class="codefrag">checkPreconditions()</span> This allows the handler to check if the usecase may be invoked in this situation.</li>
+      
+</ol>
+</div>
+    
+    
+<a name="N100BE"></a><a name="Implementing+a+Custom+Usecase"></a>
+<h2 class="underlined_10">Implementing a Custom Usecase</h2>
+<div class="section">
+<a name="N100C4"></a><a name="Prerequisites"></a>
+<h3 class="underlined_5">Prerequisites</h3>
+<ol>
+          
+<li>Choose a name to identify the usecase, e.g. editHeadline. It is possible to group usecases
+              using "." as delimiter, for instance <span class="codefrag">article.editHeadline</span>.
+          </li>
+        
+</ol>
+<a name="N100D4"></a><a name="Add+a+Menu+Item"></a>
+<h3 class="underlined_5">Add a Menu Item</h3>
+<div class="frame note">
+<div class="label">Note</div>
+<div class="content">
+          This step is necessary if you want to call the usecase from the Lenya menubar.
+        </div>
+</div>
+<ol>
+          
+<li>Add the corresponding menu item:
+            <pre class="code">&lt;item uc:usecase="article.editHeadline"&gt;Edit Headline&lt;/item&gt;</pre>
+          
+</li>
+        
+</ol>
+<a name="N100E8"></a><a name="Implement+the+Usecase+Handler+Class"></a>
+<h3 class="underlined_5">Implement the Usecase Handler Class</h3>
+<ol>
+          
+<li>Choose a name for your business logic class, e.g. <span class="codefrag">org.myproject.lenya.usecases.EditHeadline</span>.</li>
+          
+<li>The class must implement the interface <span class="codefrag">org.apache.lenya.cms.usecase.Usecase</span>.</li>
+          
+<li>
+            To simplify development, you can extend one of the following classes:
+            <ul>
+              
+<li>
+<span class="codefrag">org.apache.lenya.cms.usecase.AbstractUsecase</span>
+</li>
+              
+<li>
+<span class="codefrag">org.apache.lenya.cms.usecase.DocumentUsecase</span> (only for usecases invoked on document pages)</li>
+              
+<li>
+<span class="codefrag">org.apache.lenya.cms.usecase.SiteUsecase</span>
+</li>
+            
+</ul>
+            They have built-in support for the unit-of-work pattern (which will evolve into
+            an ACID transaction someday) as well as functionality specific to the area they are
+            supposed to be used with, e.g. the site area.
+          </li>
+          
+<li>
+            Add the usecase handler class declaration to an XPatch file, e.g. <span class="codefrag">$PUB_HOME/config/usecases.xconf</span>:
+<pre class="code">&lt;xconf xpath="/cocoon/usecases"
+       unless="/cocoon/usecases/component-instance[@name = 'article.editHeadline']"&gt;
+  &lt;component-instance name="article.editHeadline"
+                      logger="lenya.usecases.editHeadline"
+                      class="org.myproject.lenya.usecases.EditHeadline"/&gt;
+&lt;/xconf&gt;</pre>
+          
+</li>
+        
+</ol>
+<a name="N1011B"></a><a name="Implement+the+View"></a>
+<h3 class="underlined_5">Implement the View</h3>
+<p>
+            The view of a usecase is optional. If you omit the view declaration, no screen is presented
+            to the user. The view is declared in the usecase configuration:
+          </p>
+<pre class="code">  &lt;component-instance ...&gt;
+    &lt;view template="article/editHeadline" menu="false"&gt;
+      &lt;parameter name="title" value="Edit Headline"/&gt;
+      &lt;parameter name="..." value="..."/&gt;
+    &lt;/view&gt;
+  &lt;/component-instance&gt;</pre>
+<p>
+          The <span class="codefrag">&lt;view&gt;</span> element takes an optional <span class="codefrag">menu</span> attribute
+          which denotes if the menubar should be visible when the usecase screen is presented.
+          If omitted, it defaults to <span class="codefrag">false</span>.
+        </p>
+<p>
+          The <span class="codefrag">&lt;view&gt;</span> element can contain an arbitrary number of <span class="codefrag">&lt;parameter&gt;</span>
+          elements, each containing a <span class="codefrag">name</span> and <span class="codefrag">value</span> attribute. These
+          parameters can be accessed in the JX template using
+          <span class="codefrag">${usecase.getView().getParameter('...')}</span>.
+        </p>
+<p>
+          The view for a usecase is implemented using a JX template. The location of the
+          JX template is defined using the <span class="codefrag">&lt;view&gt;</span> element's <span class="codefrag">template</span>
+          attribute (relatively to the <span class="codefrag">usecases</span> directory, the suffix <span class="codefrag">.jx</span>
+          is appended). The output of the view has to be a Lenya page:
+        </p>
+<pre class="code">&lt;page:page
+  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
+  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
+  xmlns="http://www.w3.org/1999/xhtml"
+  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
+  &gt;
+
+  &lt;page:title&gt;
+    &lt;i18n:text&gt;&lt;jx:out value="${usecase.getView().getParameter('title')}"/&gt;&lt;/i18n:text&gt;
+  &lt;/page:title&gt;
+  &lt;page:body&gt;
+  
+    &lt;form&gt;
+      &lt;input type="hidden" name="lenya.continuation" value="${continuation.id}"/&gt;
+      &lt;input type="hidden" name="lenya.usecase" value="${usecase.getName()}"/&gt;
+
+      ...
+
+    &lt;/form&gt;
+
+  &lt;/page:body&gt;
+&lt;/page:page&gt;</pre>
+<p>
+          Take care of adding the hidden <span class="codefrag">lenya.usecase</span> and <span class="codefrag">lenya.continuation</span> fields as shown above.
+          </p>
+</div>
+    
+    
+<a name="N10164"></a><a name="Overriding+Core+Usecases+in+Publications"></a>
+<h2 class="underlined_10">Overriding Core Usecases in Publications</h2>
+<div class="section">
+<a name="N1016A"></a><a name="Overriding+Usecase+Handler+Classes"></a>
+<h3 class="underlined_5">Overriding Usecase Handler Classes</h3>
+<p>
+          The usecase resolver, which is responsible for obtaining the handler class for a usecase,
+          looks first if the current publication overrides the core usecase handler.
+          This can be done by declaring a usecase called <span class="codefrag">&lt;pub-id&gt;/&lt;usecase-name&gt;</span>,
+          for instance <span class="codefrag">mypub/admin.addUser</span>. To implement a core usecase using a custom
+          handler class, you need to
+        </p>
+<ol>
+          
+<li>Implement the handler class and put it in <span class="codefrag">$PUB_HOME/java/src</span>.
+          In most cases, you will extend the core usecase handler class to inherit the basic functionality.</li>
+          
+<li>
+            Declare it in an <em>xpatch</em> file, for instance <span class="codefrag">$PUB_HOME/config/usecases.xconf</span>:
+<pre class="code">&lt;xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'mypub/admin.addUser']"&gt;
+  &lt;component-instance name="mypub/admin.addUser"
+                      logger="lenya.usecases.editHeadline"
+                      class="org.myproject.lenya.usecases.AddUser"/&gt;
+&lt;/xconf&gt;</pre>
+          
+</li>
+        
+</ol>
+<p>
+          Now, when the usecase is invoked from inside the publication mypub, the custom
+          handler class will be used.
+        </p>
+<a name="N10193"></a><a name="Overriding+JX+Templates"></a>
+<h3 class="underlined_5">Overriding JX Templates</h3>
+<p>
+          Overriding the JX template of a usecase follows the
+          <a href="../publication-templating/index.html">publication templating</a> principle.
+          You just have to put a JX template with the same name in <span class="codefrag">$PUB_HOME/lenya/usecases</span>,
+          for instance <span class="codefrag">$PUB_HOME/lenya/usecases/admin/addUser.jx</span>.
+        </p>
+</div>
+    
+  
+</div>
+<!--+
+    |end content
+    +-->
+<div class="clearboth">&nbsp;</div>
+</div>
+<div id="footer">
+<!--+
+    |start bottomstrip
+    +-->
+<div class="lastmodified">
+<script type="text/javascript"><!--
+document.write("Last Published: " + document.lastModified);
+//  --></script>
+</div>
+<div class="copyright">
+ Copyright &copy; 2002-2005 The Apache Software Foundation.</div>
+<div id="logos"></div>
+<div id="feedback">
+    Send feedback about the website to:
+  <a id="feedbackto" href="mailto:dev@lenya.apache.org?subject=Feedback%C2%A0for%C2%A01_4/reference/usecase-framework/index.html">dev@lenya.apache.org</a>
+</div>
+<!--+
+    |end bottomstrip
+    +-->
+</div>
+</body>
+</html>

Added: lenya/site/1_4/reference/usecase-framework/index.pdf
URL: http://svn.apache.org/viewcvs/lenya/site/1_4/reference/usecase-framework/index.pdf?view=auto&rev=161114
==============================================================================
--- lenya/site/1_4/reference/usecase-framework/index.pdf (added)
+++ lenya/site/1_4/reference/usecase-framework/index.pdf Tue Apr 12 13:43:42 2005
@@ -0,0 +1,604 @@
+%PDF-1.3
+%ª«¬­
+4 0 obj
+<< /Type /Info
+/Producer (FOP 0.20.5) >>
+endobj
+5 0 obj
+<< /Length 962 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+Gb!<Oc...@Z>%dr!sPSk,ENhmW;lh?:R`iOlnT/C,-gb1@XiXkqi!0pkKO_GaG2AR[uO\-`Jt<I*"TREV64QhGmIjtJ8baBXMRJV#0mege/,/=-'+hL(q:4+NZSVuq[EB(iJmERJCf'*>uI:\&(Ag8FItES8H%)=f]pe&O\;:hEc=O!kDnAtaXM]F6_CdS4OY.,NKO+\pc=b98?,dh7=Nf]D$<_8.96J(\8E"^O;4!Q+R7O<XIp!^\#J;j/B!I\3Hn@LE0]@Z"0S6n\tt*3[-Dl_!J>8c$Vgj@`fQ/']0'e!IGjooUq;u4M)"UXha$er0V\XW#%gdgehT&*^DE0^P]!Q!/<-Egb"O[>hjYEh2%63[9"W&P>;hqi)\G<3P+PkM)/Yn"fEqt\6*bnh.)U:oL6np/La\R8jFYPWkIDYDb)/P(Mf`kSD=U)=N0;d&]T;V/j5N;\"nhn1Q1OgN,2=\/Z19]0YBTl&mo0Tgo*;s@;p21=(:tf=Q5>d.WGH\c>EIArk-+"lk/=G$VYR@PJj37LWD^*.,)M.WhapLg[C9(DCliRE=*rDDP9`XCl6FV*h7Ju#G:EmKXI2.7^rUiKErr9#^I;e&%p>kl8Q4jP/lG'jAl6+'d&]/Ch&^`?aJfO4&)=%^6-IM,[rM;6o#!ee9XP(lf*@a_'7X@Pn+:p$D;oIPIsU6DUrc1(gV)pR5V)LuRNLA%/L8osg^"kAjs7JaeC4Rs0C!XK%5?"eZ(%/I9<&kPW;QfP*7."/WP':=k/W#.I++]TY*(_IG!Tu&-gMGPhe9\2SYtUHV4KUmO:a_s*%jV^#S+;gBBQ!QMEq>E(C#]k`&NSs(jZ3J*[Dc1b@:JqdYC>lO'd>[ioqM)?$*5%6k>8PD`7J@2Z%^;<ZWGn*p45;Si$6NNLsdMmPGS*NBT#+Gif=^C]=Je]Xuh~>
+endstream
+endobj
+6 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 5 0 R
+/Annots 7 0 R
+>>
+endobj
+7 0 obj
+[
+8 0 R
+10 0 R
+12 0 R
+14 0 R
+16 0 R
+18 0 R
+20 0 R
+22 0 R
+24 0 R
+26 0 R
+28 0 R
+30 0 R
+32 0 R
+34 0 R
+]
+endobj
+8 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 12.0 631.666 79.328 619.666 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 9 0 R
+/H /I
+>>
+endobj
+10 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 12.0 613.466 112.976 601.466 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 11 0 R
+/H /I
+>>
+endobj
+12 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 18.0 595.266 111.476 583.266 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 13 0 R
+/H /I
+>>
+endobj
+14 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 18.0 577.066 115.832 565.066 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 15 0 R
+/H /I
+>>
+endobj
+16 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 12.0 558.866 79.976 546.866 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 17 0 R
+/H /I
+>>
+endobj
+18 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 12.0 540.666 289.94 528.666 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 19 0 R
+/H /I
+>>
+endobj
+20 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 12.0 522.466 178.316 510.466 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 21 0 R
+/H /I
+>>
+endobj
+22 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 18.0 504.266 95.492 492.266 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 23 0 R
+/H /I
+>>
+endobj
+24 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 18.0 486.066 118.484 474.066 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 25 0 R
+/H /I
+>>
+endobj
+26 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 18.0 467.866 216.128 455.866 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 27 0 R
+/H /I
+>>
+endobj
+28 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 18.0 449.666 132.152 437.666 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 29 0 R
+/H /I
+>>
+endobj
+30 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 12.0 431.466 220.64 419.466 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 31 0 R
+/H /I
+>>
+endobj
+32 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 18.0 413.266 209.12 401.266 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 33 0 R
+/H /I
+>>
+endobj
+34 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 18.0 395.066 155.48 383.066 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 35 0 R
+/H /I
+>>
+endobj
+36 0 obj
+<< /Length 2980 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+GatU6D/\4L&cSq?E=gQ%#(.pRalSEm[?)E^N=dP<I>/\?76lu^7liabZQsZoIsm(?Z[<GP_XL.XEG&pUR<`CVWE6^<b;]-LRRGosp1N+AE(2c)r.@eTAQ)'s@;U2.c+bn[H+qtsXLs&QA!0Is'Rh*[jS@q&S)$/f__tJtj^8slCCnst79oR"MN%F=`qp]Pdf9:[:EI4Ko#SKilRtCiMX7Ne)''2lnc1gWWMjKjjGGMWY=`rC(N\=>Pg'tf]mlOdoD8DUCfF=)=!Fc?m&lOD$!GFLBHR$ZjpKCo7e?oJ5kkN(8&gBK;E.(1Ur@a%q;)+J?&1'PMc8u_il(d3m]Y<QJM_^3oMpBhGEEVhLqZBKnfZ);Y6#d:SA,o.Q%eE3+lr&OR0&DZ6u.>-L#>M/UR]]@^N0`,76dc)F21]a+*1bUo]d!-V#NOm's:7@\t^6%CdrM].;!liM8_apq*OM<VEqT*\d!bSFNQshOA6(A*#jZ!9LM)+'U'-,g%FRj3DOW8,:@'KEM-(Gg_4D'U]JaT:Tb"?ao<bKk*85s1sY6))75oM=`d>I`%KF\&L6QYUM8r1;LOqWq+Z_*$"`tCSkLJ'4185;)faaPqP@0/N109!O-7E7"OITM%&thX`FXTD>s-=XJYCi:*NU8A(]qT:o%=RS]^$A3.X8B-j.&H0[22@`s6>10q#p'.FZT(8L:kIG`PBbTe7"?<LWWm(LP=X:]Xe(\KiiC:;ctuZDL3gmCR*8G7P*"cjF%g7pO+Sf$Ynmk#0L/mZ81dD$iDtuUGt`ja%*t'F)FOn0,LA1Zlg(gTYA+m:&3:I*V"l0T"_kM4Io4M*;[Gsn\t%(MW2g0n%Bpj0>/P?KnRCSb_mHinR<-na8#+Q<J(0!IF<buk*FEbYEHq#CGorM1M^p&onQZ)Hgs"PEdmXYneF?Sil<p53KTn["0di^dUb9'_kfB96cIOGp!M-Bbq*G@[Idi.4W&gZCZloXCWWXJ"[(GCpNJjXr;>mRDkCrS?/OKs!ROm/-\0_VBZ(Wo=`N>EV,ul?P+3)!R?G0IKUCq/bRiT:`/pW!9rCk2j!^>[q=@FbF-TpD&KI^)@<]'e-j8!)6`^PAP=bE(Dsug\hCWF[mt%lrk<16b_RMdPr=2':J2q@?p1<0PJEpB*\_3PPEMa?"Ust,rXo7YS=TsQJ'$Gl]X`F=Tg,>TgaZ&s,s#bY9X.r=WLb<qBd:UDq*\`)sqWVo#`%/Al"9)d)EG3ZJgaoQcp+bZ1kE6p]/2(^XgR*+I'W79bVs3KbFqo"kW9Rk;/sH:bH0["-eBe#I$5m\ZanO37X)iC;&%V`;<q9@;_:A?+cd6n/h(9ma.,`;81%@U[P4QjgX%`hV>!!">J(^5QI(0l-g<_h6b-OH'k?->H2PChimX.r#_:Qj$A&O^)(2-lQf2qZbq$bStF_-t3!tPk?M?,Cf\;e;9M^?q#/pJC$0'%S.W<YJGRXY3F#$&qb0UPnP5t[88[:LF0>@jYMqc`G7Q3Jkm@(3c2F1&`t)5q*6on+&V>@!PV7PN?R<$Y(o-[@&u#L*3<mY>*]A]HgJWYWej#`uo\3Fp&TGR)/e?8AsnlW.5"AgY7f):/&?C9Uo#BoF;@=&EO*R5&*/ep)K^ers&?T4]WLX+B2e"NHB%*sX(->-QQ!P'aNh6P0DD*COI8HUs3]pP:d)+"!Te;9abXG_#!oWj&ct^e6/@B/]gfZZSc@!#2fmh._hP_30Ou&7URI5oCo-WN(fr@n7K0UH%a+)18C[ZJ2f,H^Zl1QtHmeWfE0[.Z?^HE,!@l63]F:Q!mGTGAqAb'd&4)/=YJj;=1`0GERZSM")>_NnMCnfRXOL<)g$2pB`Jke/0d-BQIhH]]kQV%M0&lm7@)oe_K<5"4/`_3j+aI^Fs'X,UN89puP`DA-C4f,/]qu'q'b)+Bpu=PQRj.ohIMI'PT$d/bQt0UBZ!\Y1<(ljiSpp*Jc4=p,H<MVRH^rSb_E;mW\]"Tld]!^\8H6=17CX0s0a^JaAsflmUULr;?If9.W^finCE*L%d*TC!lRBQKmCJ>)as@lT3"]M/,r3Y[=&,V_M/qCr',Xmjl$bda@[(.9C2#a&pIsK[.-GrdkOpED`%_F%lMQ/=q+\na'uXi!%Xd69+`a"H;u9_bA5Y>]dp>e:LBDM:'agP5tZlj6-\4Z&sgdeEmcb2eUV@6+X*/6aNEi>&^m'_9nriQs:7cZ(Ag^=M/"GfIdup/hs&.0:,Pim(?d^F3Q(5="cYC2HfmCS[H`sj>!tYgjU#!T,bJtT,i`_gHC@P-7t$#ERnT$_-e/!C(4VEg@ZkAgYuE*B'kiS9"K#`k\[S".sj.J)gVtO7tJ^FlE,i>Pf#9U^FmpO0fju?6bZ+^a`R'2/B=Yhjl(1@b:(=eHN(9CA_9LMi3/;V.Z)CV)3k4"AfYrS%ca;4_PAD[q4Tk#'G>O7+*1T[Gp,26BhZU$Jn`qN/!DI<3'P&n040W4o&A=8FWiV![lms$*TB%/cBbERLr%l'G$sTsKj"o5V0RC6eUYeADbk`FHf`(=1KQG@m%]Go<QSDj)J02sBLSsraOYGI\\5Wub0jm\k\kX.jO?(7,ITbf-6lkiopMcg65(eS%0kCB)J/([7>r;V?[W@V2]+BtmJ^F2X?tdo1r]3KPkJm8gC\m(RI,Mfd9&%]p]P`!I&YQ'Z)an]m27%HhQ'=tM"k](F3r(V2CJh[j-j_B_i@ah[PA'Lq9#$+lfQV$jr%dZ2N)Nlr[J7SaD^sjRTPb;%Q(/.G;;fsR$q)eO(Ao%Dp$IO\"@"*p5`S;hfK(dj)Zj-L9=>0fMKVe@k'-Mm*^e.TDE0*^@>g^9\*6DqNhj#Z!!hY&3Egj!1b*rbO*,.f4]?BoaYXo*@p"a$rg?ZTtZaF"10^s9QRH<>,74b/HrPT4.T4o<n$[mI'EU9@eFkd0[O0V'`7gX*:Gg?La!0%^O^*be^I`N;(7U#CL4]0$W*Jg-b;nI_u~>
+endstream
+endobj
+37 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 36 0 R
+>>
+endobj
+38 0 obj
+<< /Length 2932 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+Gatm>HZ.[t'*$j]@UTtL"(Z,&HKX;GSCD7NZoqdVi-M>[JsNpYMC!6mC$k[Zr=(&n2:Uor^)hlB<a9Z)o:,J&Df8CRDGL0nYt3s0G-G*;^O6XMX@;'#nEJ[A5*n)M?FVEZipPm"-Z<oucJM,">OK(*SQKj\?<H^;?8T7ra!-)J\B,Q%SXjE+G[fjJMT;gXeVhDpVS4?PSuK,/aYQuh"Fa65XO9f1r-`SV6V#dD-rZ%WStaGm[/RjDP,/=0?bXC&a(bqYn7tOqk4r'+Y7Q+ZFq9IgDW)c#NsE-QQ\3(NUb;\a*nYa<`oi!d.?kL+OP?u`aZ-jcc<+*6jZ@r6/8Vd!;Vrh1q4U;@cYm`Cj;$0[NaJ+B-EVPumn1<liO'[!C%r/E'uQ@YKoSU0;"?hp]W/StAbS(@KkQaH(@Id*n+C:Mb*J;DkI$O[Yo+Rd8\L3^NuG)X(.7e#Nf*%F/f94d(3,pH8;ae.Z9$k7"W?F&JIhJMMXEDf?N'fjb<PuKp%ItQ\nBLg$i-6tm0(0\nd%+O@^Th$JVK6dX@,Ug-8hM2epX[K@\'36X%YWVELC_13Q[hB\Bg8L,%%?!_8EKI'FB5p_2>heI#B&BQYDKQ>0bQjjom8E,[)b!)T,Pc!g9HMRdY:FoBo(YgF#s?GI)QIBRrMjC="pM);>6H2\.7`@t7FXIDaA@gp`1q)@RKln,]bG*jKGP>7RnP4/,sn[UnAXV"MnjYI&52cgAK^n4I4%aNk*='dO1s_IL$(-e[UKs&^O;>-[08X&DlSGt5_-^1KjYWl5sD#PR)0d6=K;"&/FJg4pG^7jJGYKbmQPK9j[C:2`GN=I'AVO.s;UQIo#Q+&3B=l]H_GQF:Qg'GBo+.-cu7a;s..qN:BD>Bl2;I'8Y6U%c*9E$$nXPM+!O^pVHq2h/r$2lmouAdZ)>kId``oID.T\RP)n`RDUK&U:LqmkJE=+i!3M`9u(odh1Z^NC`ml7g#G:b8njU$4D]C-B`Dr,@ZrVkorRM8's'RA^0^_U.hdh*]M_fVIPe2hLi?$af>_tOo*qT+k0B+g13N[G,VkH)OlW9]C#"=Vn-\3SLV#sYq'>`\]eB'CS0%$f>J3,9eY>:ptJaV"-;d(qlr]XP\'*/7\d@HmAXL@#Tpp](7reZ&)1C76s>#'"oqu$54I=5gD<cp#7C:`n]U43)HPX7<4ll%-!DT7fmL@L[Q79edPBE(dA9K@)F:CWLg>`c*lQ..j;!>u@fu_C/pt`?%P#/)FQ!I$_Q)u70]MuqP(Q`\S]E?>V\%bOdkE9rn6PQD@pR!(2nTRZ5HWV/4UiX<4F&oLQn`=D;e.59\ZQ+<A_;n.+aa$`A%PUO+No&>X(mb-jJhQ2BAbt0WRT>Ig#tb!S*XQ]?lcXf_`$LBPdn;n7DW_(_4fR(lDjm?7L0D]&ugD=?mO2I&rG.@o;-PbS<&jkP0N3U&]Q5=@dS#$<Maom#VYLAm']jK9!@5:-)X:;gm7I]blR2En_H+dHi'i.[a:Z?5pqJEYOQ18S]2Np=QW0cUjWS\`eGJZ+[HZQ,GM]69p.ferks^8`gu;X%Q/n/Ta^IAGS#U;Sb?MiXqsIK^O3dUBgmah,IF/_#^gl#b"BK>".C[E"6XOr$\qeR*"M%<=k?c_3G.%2js(@_OZRWqJ_\\8YBt#]E4Ml]hOd6]?^W%Fj"()s*lN]m%Re9m"q_t<(;g=\.jS(%ijEE[8)\qZh"%Sm%Ok3-GXr;kF&_RJ5f1;CL[n,=oBgKN.!Q1!(b8JM_7AVu+N&Y=7P0Y,&]7o2F95X233F3IJ!AJCY+:L,*LfdfEWY3QLUH57\<bl:9@l\dUCCO=;*sNPQ)Pg[]A.@J#]KO3RGrLm]%(SUYq_:coUl-(`78BV#Y8>RVg+ajO_$c4N*e#Q02@;>ioup_Gj>"gp"/AicC:4U80JCFSu]c%1R,OBTH!>KpY!5s!N4K55k#5QUX]_+rQ'7r(,cd<(d!%)S5j*/S]8?,p)ke[9LF6f6ec9..U1<uBj6HJ4KaMq*3I<4EB2>9+O'NccT2Mh7?&pj7i/VGR^UW%p:C'ILSr)jQPSG8Lh!tB$\,F8GQ!VJI@@L(6!OmWABm;J^c1(:L4Wt_;),)aKKns"CaDn2%<KH"(00DmCX)A\7hg3&2V&5:K^:UUBVo*;kR_@qDb#n<2#k%LH4r>[r;M7="^Ttbc/<>C;(X.='\Lak"<X#lj?!tB,jb,m31`h(-7](Dp,!CU%L_HP"q11DM.-UQl"nVFI=#Z0i^]Q;*sDp60F>fJa:61i"TfU&#mc@sHf-lHVHLUNm:<WZDFI]h5\JXY79V@`C8kjF)Oq]i#GQHip:*]S%4YCV>a"R]3Q*fW&+W9X>F4eBIYV#S=]*;oLG?OT3D\:keBLhMo>pIHm,3"rK:V=M_-s`%RN#@ped03/bN!\u1X>4FK9_rE5<Tn!omj6cVC?_$h3MG*lcj,CBs8d#Cm2-7\15O"^5f8^Cg=@gWs^`Dp"Qh9cj>J]Z8\d%Z]\\!jVp^#^M.lDT9&jpZoSeA9i8X8rquJN&-)FhlF`ORXh4=G?ff-u!FYZD*ESQ\e0d)3FBRlt`'11R[G`pin&o&g#'HX8'teU/E=-a)654c,:4&#Z2p-n,Bfl1)>*2+eFa+OjF/[##4>-<Ri4$J%6;H?^d=(t:W#5O-pX;(7q^#F(#a0;&jZ'oMUFNGdWO)I3hUk(1&_GSe]u><BbDXhUI5aqILkt4C,)s->S/trjSt>Z[DD]sU!\NneUUdNBTS!^m5glu+f-pXP='>j4^#!t:]o_nEFseXf,k0<53jAt`N4sH\2FJg2eBQU,&A+DObd9-&MhFf+h)34!`7UdMR+4=^S_-,kl$?9PKPmc%G>ApAZmC*Eh3&rOAWo*ck>,Pe5H59q+:u./dF6MAYr3o8%h/UUHKGqq+*^+5d/FD`Wgs:~>
+endstream
+endobj
+39 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 38 0 R
+>>
+endobj
+40 0 obj
+<< /Length 2742 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+Gat=-H#M_$(B6Uk_?^?:#+/5],jGYu_=#NBG?T*tZY64<TICY^7,,r,P#k.iUZcpZ7ig0U7*4j@J0?@h#N,?(jG0W`j#_0FD.5,h<`eEmI74r!r4t%6ngG^`[2)Qm`NQb0399Jdc=6?/\)2+J$/b<\lp$aShS8t4q#9[?\&Hf,+Fu,CeO[L2h7t1md>%N3-@W(R]=2V,5DT2I<U_Cf&="XTc)qa`)CAQr`9*FeB^Jhom6Xeuk"ucRU#c-Ss-dQuEtRN(Vg=VO3A80S4@ZW^$+[:L*2u,3*%[f2%grq_lN>,o4sbAbpRt^>Uf!G\`4B^WI,FMkoQ9c`/!C)GV&fb5p[n3\R^m&Ek'.9Cp@oX9#^$qD?S&D[FnJ$i>Hjct)@Q41f6)qh]LJlU.,40q'WcF)d\70!8F#9)[8)C:pOcaSNo[u\@L!p/ek.MgaWXp,P!<9.Gq#J@)a"ntB-,'L8GRDC&0e]3]O$:`_68VlCfa5K>f,i&apu9sb=eH$*)cS$G[61^_0fV-Uk6pbi]>TCO!jaX?53=KhH<]`O0Ki'EQ#7>PN<FLG$GJjVr>5,+k.gSaW\[V,O`sT2^f@C35+)._.^AJM<h/E%p1QW#hL=#J;0+7;YZ6Hr!:bkJXFiB"u`135_]]/)6GHoEA40pb;'mWW^M]OhhYru1H3QNXK#As<!Fe$)<RmYCpGNV.DJhS73RtR+r46-II<0]"nOn:FaLZt_G+!8=_Qd/W-71;)tR'3,phOubMu:?fYgg5X4)7;3DM7R+hIV=.:RcRE#!s4"';06"`Au\'oHrJMGt\<@D3Fe*p,uBOK.]2UBm"\F*\(_:T-G3_l;;4D8^Tl@Ll&bXVAju4N*rMmRF!fV5mBAkQHE%4A1q`/)Q:tbQ8RkBu2]u&]5TmK1\t,dPF=P0o3\DSu\t42q4%"M[=%VoF7RO(WEVNCU<bjJ"qM#bmro[D=5Njf/mtG6G&f$q7S?bABdaRjdpC_hob+8Sc6sE2pc&PT&9N%QZ0Z'jK)'8l45q0*p]o5>`"l,OJ(ff.^ii&&.L:`+fCE(P!q5^dR2PLi?&fQXT/u-lWVRL,j%o9=K4g9<i"FS-L7^AS&@8)>[B`7ZW+5ZA!<Xckn@\pVJ2+;[lF[giftmiY`7T3FB,YailTW%jg8GobQTPV,kd<P(-.Gu/3gk<E,JOT<oPg.NZD6?V?=9fjY3Hd,N779"NO*Dg[R,_1$%FaG\0sdX3(g%o<k4@E(Ds]or/dG_F!\sV-rtW5P"H&??b@s?Sju,^-b$_1d>*j%+^gIU8INEiWMDH#''3(LMS!p^hsD9&)/?]mU$Hbf:0)$h&AhnK6G4*QEL>\7Tl#q?!%o_bJBji][eiLZK3K.V>M4>M6r?VD2UKdE1/L,>!Oh&'@6W+:\JtVP6O<\*&cn:d5/&$&2Qa:62bmp48Eg4,#ln6JnE[R><=u-1=&,&*VDt!*D,V5-gk[oOco0+IOO)<]H$@G$4T\rE-"m#Wl<*Z"EVqBd50<eCI=`bqH7H7h.AN0-=74iAJQB\>E]0YaUZ\5[b=U)QH6GB5e=kF/rr(37j<[:!DRmboN+NpOe>=B<S`YS_r.$Anc+H%s-T05D*&jMqu>2[h4i?uH0h.g+[%`_"V%,L[ordQd+VL*n#'9Y@;B4Q^.GCkorQGA;H_1!M.<T%jj1KgBe]j%]n7slEai^KF+"'!j*9A1]9gOYF/(1:2U>W.[,Q_k0ut_Y83Drn/Jgb1GBECpB[-3+P7hNL@3p.2j.;!s@BSGH3G4bnEcMfN/Z>H7KOkhSZlA-[lAIm?niR_g`BRte2d]A=5_lb^<6IZd@'@@,fOGr_WIa*6:'Z)7Mm#M7qADDXi:62E&f1);V&&C58$MG!6]]SK9^,[]WZX8W30(d6"'4kufBPAJK#G"WBV8;!H+9V?mc\+^O46k/ll.8cH%GJ0jI&S=jgd-Qms91ml2YBiYh,br)P?!(:jFQg1pV89G6O^t94kpu9@;K,U#>'tGA;RE+5qrG_WPso%QqT.o.&LD!#+1Fpq?4E1;&fnI]a;=f<,Vs'K5Ca?67kT@DqP6pLh1g;[3;:b>HBi7o7bBj/kiYPZ>f'Hq$os5t<!%_#?XP<fA[l_M_\a4_$r];.eR($%cuk>Z[_KG_ON4Q0J_Z?o?DMpIWJsAc-_^e!]=Q--s-GY+&%UF?!@lo3A2W"+]_4Wa9VXI/WQ,cThBgPOT:"L.7:qF2q7?9<99AHpWZFE17Tb.3-jn.6$T^P4W[C/32SR,rJ"X/%+mr,?C`%3TK*B9V`W!:YoP4_a6a>'<<s)%_kGX,j3%bPXh7G9%Nh-0i8nd>B:lDmI`Y<:41k0?Ppmja&+i=G$ug=f!I25!&L4I;QW@(LD?dikA9OjW#SfcQ"M1rc!?abSMH:Zr%Nn^Ckp@\]<a;6D.T*$/:YJ;$%_LiAp;O+Z.2hE8tmp+X`>FUQhK2s??a:o[g*&sX#/d(0j^Tb)#EnYc1,U?qPXdET0g##Pe#0Un=/=Tf5Hh?7u;B1-"/TpBGcfmg"QBWJC>"YB'V>##89ft#5<hR="V\%QrbA2HThka"$G`A"2rf=peD=$q^hcEpqHI5*$AZFD,3N,P[W"fX3T,QP\$FlMh_loYZp@!l>r%^RY-lD_o*h7jT/u\DuU\3F+42nXg(*&]43JES$H]!CbaYY=f,oh_%5ir.D,RpIDX@Gs.$46I9R[p1LsK(2\RYbCPls";CbS:G7G+2Xfn3T_u1+O]C,O~>
+endstream
+endobj
+41 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 40 0 R
+>>
+endobj
+42 0 obj
+<< /Length 913 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+GasIfD/7l[&H;*)+iZ^Ad$uE$ndB8dG-i9DXki9Z`]Aia.u@Kbb%)l6s8?IgM<$K...@Qp6kk>WeN5rOc*$[r47qP?3Kt-FM6CSjn.a+[NA0[4$Ii*bJ6(m:COrn$S>'kn#/pqXp\9*+n%*8)LW>t#L'VuH=9K52LESRONN#?mSTOfsR^:i2,G2-4/W5AbJ8<+b1_=P2Ac*EX9j'TK=C!*A.a@,[LRkU"p#9CS>@[[G$Y/n/>/P6:V;6:2DRsFuR2iE4<Skq0'P3i"Q;mOQ]\:qdoW%n)Ld>U_+4L,Aqt%R0DSBGeH5O5_@<eT/4I'ijMfWXb]<iI+9i@hc#VV`])?>2DPFH)o?E$kaBm>"h6BXeHBHPfa+1cr*LD7gA>/spkK6HermS->uMG'qs^(U"9hb*;,_Q)Z?@*$qP0Mp?gX3"s\OhIpJ?Ah9gcaV$Go#,@mRnX,2%6S716MhrM;?fFBnQF(CA3QPA#3\?I"X?m'ktiDEW-T&Jc'-YCn&2#)-.5P>=B(]+0sJm5n_XYA5]+VJ^"Uo9!L:%lq8qXa~>
+endstream
+endobj
+43 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 42 0 R
+/Annots 44 0 R
+>>
+endobj
+44 0 obj
+[
+45 0 R
+]
+endobj
+45 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 251.616 661.827 359.952 649.827 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A << /URI (../publication-templating/index.html)
+/S /URI >>
+/H /I
+>>
+endobj
+47 0 obj
+<<
+ /Title (\376\377\0\61\0\40\0\111\0\156\0\164\0\162\0\157\0\144\0\165\0\143\0\164\0\151\0\157\0\156)
+ /Parent 46 0 R
+ /Next 48 0 R
+ /A 9 0 R
+>> endobj
+48 0 obj
+<<
+ /Title (\376\377\0\62\0\40\0\104\0\151\0\162\0\145\0\143\0\164\0\157\0\162\0\171\0\40\0\123\0\164\0\162\0\165\0\143\0\164\0\165\0\162\0\145)
+ /Parent 46 0 R
+ /First 49 0 R
+ /Last 50 0 R
+ /Prev 47 0 R
+ /Next 51 0 R
+ /Count -2
+ /A 11 0 R
+>> endobj
+49 0 obj
+<<
+ /Title (\376\377\0\62\0\56\0\61\0\40\0\124\0\150\0\145\0\40\0\114\0\145\0\156\0\171\0\141\0\40\0\103\0\157\0\162\0\145)
+ /Parent 48 0 R
+ /Next 50 0 R
+ /A 13 0 R
+>> endobj
+50 0 obj
+<<
+ /Title (\376\377\0\62\0\56\0\62\0\40\0\131\0\157\0\165\0\162\0\40\0\120\0\165\0\142\0\154\0\151\0\143\0\141\0\164\0\151\0\157\0\156)
+ /Parent 48 0 R
+ /Prev 49 0 R
+ /A 15 0 R
+>> endobj
+51 0 obj
+<<
+ /Title (\376\377\0\63\0\40\0\101\0\162\0\143\0\150\0\151\0\164\0\145\0\143\0\164\0\165\0\162\0\145)
+ /Parent 46 0 R
+ /Prev 48 0 R
+ /Next 52 0 R
+ /A 17 0 R
+>> endobj
+52 0 obj
+<<
+ /Title (\376\377\0\64\0\40\0\124\0\150\0\145\0\40\0\103\0\157\0\156\0\164\0\162\0\141\0\143\0\164\0\40\0\102\0\145\0\164\0\167\0\145\0\145\0\156\0\40\0\106\0\154\0\157\0\167\0\163\0\143\0\162\0\151\0\160\0\164\0\40\0\101\0\156\0\144\0\40\0\125\0\163\0\145\0\143\0\141\0\163\0\145\0\40\0\110\0\141\0\156\0\144\0\154\0\145\0\162)
+ /Parent 46 0 R
+ /Prev 51 0 R
+ /Next 53 0 R
+ /A 19 0 R
+>> endobj
+53 0 obj
+<<
+ /Title (\376\377\0\65\0\40\0\111\0\155\0\160\0\154\0\145\0\155\0\145\0\156\0\164\0\151\0\156\0\147\0\40\0\141\0\40\0\103\0\165\0\163\0\164\0\157\0\155\0\40\0\125\0\163\0\145\0\143\0\141\0\163\0\145)
+ /Parent 46 0 R
+ /First 54 0 R
+ /Last 57 0 R
+ /Prev 52 0 R
+ /Next 58 0 R
+ /Count -4
+ /A 21 0 R
+>> endobj
+54 0 obj
+<<
+ /Title (\376\377\0\65\0\56\0\61\0\40\0\120\0\162\0\145\0\162\0\145\0\161\0\165\0\151\0\163\0\151\0\164\0\145\0\163)
+ /Parent 53 0 R
+ /Next 55 0 R
+ /A 23 0 R
+>> endobj
+55 0 obj
+<<
+ /Title (\376\377\0\65\0\56\0\62\0\40\0\101\0\144\0\144\0\40\0\141\0\40\0\115\0\145\0\156\0\165\0\40\0\111\0\164\0\145\0\155)
+ /Parent 53 0 R
+ /Prev 54 0 R
+ /Next 56 0 R
+ /A 25 0 R
+>> endobj
+56 0 obj
+<<
+ /Title (\376\377\0\65\0\56\0\63\0\40\0\111\0\155\0\160\0\154\0\145\0\155\0\145\0\156\0\164\0\40\0\164\0\150\0\145\0\40\0\125\0\163\0\145\0\143\0\141\0\163\0\145\0\40\0\110\0\141\0\156\0\144\0\154\0\145\0\162\0\40\0\103\0\154\0\141\0\163\0\163)
+ /Parent 53 0 R
+ /Prev 55 0 R
+ /Next 57 0 R
+ /A 27 0 R
+>> endobj
+57 0 obj
+<<
+ /Title (\376\377\0\65\0\56\0\64\0\40\0\111\0\155\0\160\0\154\0\145\0\155\0\145\0\156\0\164\0\40\0\164\0\150\0\145\0\40\0\126\0\151\0\145\0\167)
+ /Parent 53 0 R
+ /Prev 56 0 R
+ /A 29 0 R
+>> endobj
+58 0 obj
+<<
+ /Title (\376\377\0\66\0\40\0\117\0\166\0\145\0\162\0\162\0\151\0\144\0\151\0\156\0\147\0\40\0\103\0\157\0\162\0\145\0\40\0\125\0\163\0\145\0\143\0\141\0\163\0\145\0\163\0\40\0\151\0\156\0\40\0\120\0\165\0\142\0\154\0\151\0\143\0\141\0\164\0\151\0\157\0\156\0\163)
+ /Parent 46 0 R
+ /First 59 0 R
+ /Last 60 0 R
+ /Prev 53 0 R
+ /Count -2
+ /A 31 0 R
+>> endobj
+59 0 obj
+<<
+ /Title (\376\377\0\66\0\56\0\61\0\40\0\117\0\166\0\145\0\162\0\162\0\151\0\144\0\151\0\156\0\147\0\40\0\125\0\163\0\145\0\143\0\141\0\163\0\145\0\40\0\110\0\141\0\156\0\144\0\154\0\145\0\162\0\40\0\103\0\154\0\141\0\163\0\163\0\145\0\163)
+ /Parent 58 0 R
+ /Next 60 0 R
+ /A 33 0 R
+>> endobj
+60 0 obj
+<<
+ /Title (\376\377\0\66\0\56\0\62\0\40\0\117\0\166\0\145\0\162\0\162\0\151\0\144\0\151\0\156\0\147\0\40\0\112\0\130\0\40\0\124\0\145\0\155\0\160\0\154\0\141\0\164\0\145\0\163)
+ /Parent 58 0 R
+ /Prev 59 0 R
+ /A 35 0 R
+>> endobj
+61 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F3
+/BaseFont /Helvetica-Bold
+/Encoding /WinAnsiEncoding >>
+endobj
+62 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F5
+/BaseFont /Times-Roman
+/Encoding /WinAnsiEncoding >>
+endobj
+63 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F6
+/BaseFont /Times-Italic
+/Encoding /WinAnsiEncoding >>
+endobj
+64 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F1
+/BaseFont /Helvetica
+/Encoding /WinAnsiEncoding >>
+endobj
+65 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F9
+/BaseFont /Courier
+/Encoding /WinAnsiEncoding >>
+endobj
+66 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F2
+/BaseFont /Helvetica-Oblique
+/Encoding /WinAnsiEncoding >>
+endobj
+67 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F7
+/BaseFont /Times-Bold
+/Encoding /WinAnsiEncoding >>
+endobj
+1 0 obj
+<< /Type /Pages
+/Count 5
+/Kids [6 0 R 37 0 R 39 0 R 41 0 R 43 0 R ] >>
+endobj
+2 0 obj
+<< /Type /Catalog
+/Pages 1 0 R
+ /Outlines 46 0 R
+ /PageMode /UseOutlines
+ >>
+endobj
+3 0 obj
+<< 
+/Font << /F3 61 0 R /F5 62 0 R /F1 64 0 R /F6 63 0 R /F9 65 0 R /F2 66 0 R /F7 67 0 R >> 
+/ProcSet [ /PDF /ImageC /Text ] >> 
+endobj
+9 0 obj
+<<
+/S /GoTo
+/D [37 0 R /XYZ -5.0 731.0 null]
+>>
+endobj
+11 0 obj
+<<
+/S /GoTo
+/D [37 0 R /XYZ -5.0 246.696 null]
+>>
+endobj
+13 0 obj
+<<
+/S /GoTo
+/D [37 0 R /XYZ -5.0 215.562 null]
+>>
+endobj
+15 0 obj
+<<
+/S /GoTo
+/D [37 0 R /XYZ -5.0 106.629 null]
+>>
+endobj
+17 0 obj
+<<
+/S /GoTo
+/D [39 0 R /XYZ -5.0 701.42 null]
+>>
+endobj
+19 0 obj
+<<
+/S /GoTo
+/D [39 0 R /XYZ -5.0 561.586 null]
+>>
+endobj
+21 0 obj
+<<
+/S /GoTo
+/D [39 0 R /XYZ -5.0 456.452 null]
+>>
+endobj
+23 0 obj
+<<
+/S /GoTo
+/D [39 0 R /XYZ -5.0 425.318 null]
+>>
+endobj
+25 0 obj
+<<
+/S /GoTo
+/D [39 0 R /XYZ -5.0 368.865 null]
+>>
+endobj
+27 0 obj
+<<
+/S /GoTo
+/D [39 0 R /XYZ -5.0 268.142 null]
+>>
+endobj
+29 0 obj
+<<
+/S /GoTo
+/D [41 0 R /XYZ -5.0 731.0 null]
+>>
+endobj
+31 0 obj
+<<
+/S /GoTo
+/D [41 0 R /XYZ -5.0 239.667 null]
+>>
+endobj
+33 0 obj
+<<
+/S /GoTo
+/D [41 0 R /XYZ -5.0 208.533 null]
+>>
+endobj
+35 0 obj
+<<
+/S /GoTo
+/D [43 0 R /XYZ -5.0 690.08 null]
+>>
+endobj
+46 0 obj
+<<
+ /First 47 0 R
+ /Last 58 0 R
+>> endobj
+xref
+0 68
+0000000000 65535 f 
+0000018156 00000 n 
+0000018242 00000 n 
+0000018334 00000 n 
+0000000015 00000 n 
+0000000071 00000 n 
+0000001124 00000 n 
+0000001244 00000 n 
+0000001360 00000 n 
+0000018479 00000 n 
+0000001493 00000 n 
+0000018542 00000 n 
+0000001629 00000 n 
+0000018608 00000 n 
+0000001765 00000 n 
+0000018674 00000 n 
+0000001901 00000 n 
+0000018740 00000 n 
+0000002036 00000 n 
+0000018805 00000 n 
+0000002171 00000 n 
+0000018871 00000 n 
+0000002307 00000 n 
+0000018937 00000 n 
+0000002442 00000 n 
+0000019003 00000 n 
+0000002578 00000 n 
+0000019069 00000 n 
+0000002714 00000 n 
+0000019135 00000 n 
+0000002850 00000 n 
+0000019199 00000 n 
+0000002985 00000 n 
+0000019265 00000 n 
+0000003120 00000 n 
+0000019331 00000 n 
+0000003255 00000 n 
+0000006328 00000 n 
+0000006436 00000 n 
+0000009461 00000 n 
+0000009569 00000 n 
+0000012404 00000 n 
+0000012512 00000 n 
+0000013517 00000 n 
+0000013640 00000 n 
+0000013667 00000 n 
+0000019396 00000 n 
+0000013857 00000 n 
+0000014020 00000 n 
+0000014279 00000 n 
+0000014463 00000 n 
+0000014660 00000 n 
+0000014838 00000 n 
+0000015244 00000 n 
+0000015561 00000 n 
+0000015741 00000 n 
+0000015944 00000 n 
+0000016266 00000 n 
+0000016474 00000 n 
+0000016842 00000 n 
+0000017145 00000 n 
+0000017383 00000 n 
+0000017496 00000 n 
+0000017606 00000 n 
+0000017717 00000 n 
+0000017825 00000 n 
+0000017931 00000 n 
+0000018047 00000 n 
+trailer
+<<
+/Size 68
+/Root 2 0 R
+/Info 4 0 R
+>>
+startxref
+19447
+%%EOF



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org