write tooling and experiment setup chapter, add graphics for action architecture, testbench setup
This commit is contained in:
parent
c9e258b19a
commit
c043555d36
5 changed files with 1155 additions and 25 deletions
|
|
@ -28,7 +28,9 @@
|
|||
\newacronym{qdi}{QDI}{Quasi Delay Insensitive}
|
||||
\newacronym{set}{SET}{Single Event Transient}
|
||||
\newacronym{seu}{SEU}{Single Event Upset}
|
||||
\newacronym{sed}{SED}{Single Event Delay}
|
||||
\newacronym{prs}{PRS}{Production Rule Set}
|
||||
\newacronym{uvm}{UVM}{Universal Verification Method}
|
||||
|
||||
% Simple citation required command
|
||||
\newcommand{\citationneeded}{\textcolor{red}{[citation needed]}}
|
||||
|
|
@ -111,6 +113,32 @@ Bainbridge and Salisbury \cite{bainbridgeGlitchSensitivityDefense2009} talks abo
|
|||
In a similar fashion, Huemer et.al \cite{huemerIdentificationConfinementFault2020} presents interlocking and deadlocking versions of a \ac{wchb}. These are also meant to reduce the sensitivity window size, as well as preventing the propagation of illegal symbols. We will use their implementations for interlocking and deadlocking \acp{wchb} in this paper (more in Section \ref{sec:experiment_setup}).
|
||||
|
||||
|
||||
% should we maybe put this a bit further up the paper? I mean we want this to be the main point, no?
|
||||
\section{Tooling}
|
||||
\label{sec:tooling}
|
||||
|
||||
\begin{figure}
|
||||
\centering
|
||||
\includegraphics[width=.45\textwidth]{graphics/action_architecture.pdf}
|
||||
\caption{High level architecture of an \texttt{action} cluster}
|
||||
\label{fig:tooling/architecture}
|
||||
\end{figure}
|
||||
|
||||
\texttt{action} itself is a tool flow framework. Its main job is to provide a build system which can act both locally as well as remotely, shifting computing tasks away from the end user machine. This means that other tasks can be performed by the user or the connection to the user interrupted while computation continues remotely without further intervention.
|
||||
|
||||
To configure \texttt{action} for a certain task, a string of tool invocations is defined in a \emph{pipeline} file in YAML grammar. \texttt{action}, while primarily meant for use with the ACT toolchain, is at its core tool agnostic. As long as a corresponding tool adapter, as well has handling capability for used data types is provided, any tool (commercial or open source) can be invoked by it. This makes it particularly useful as a base framework for highly parallel and/or computationally intense applications. It can alleviate interaction with clustering software for every day tasks, as only the local command line tool needs to be invoked to perform pipeline execution.
|
||||
|
||||
On a high level, \texttt{action} in its base architecture consists of the client application, a controller/database, and several compute nodes (see Figure \ref{fig:tooling/architecture}). On invocation, the client tool first loads input data, performs local tasks, then uploads required data into the controller database. From there, nodes can fetch open tasks and reupload their results to the controller node when done. For simulation tasks, the nodes already perform pre-analysis of logs, to reduce the amount of required post-processing.
|
||||
|
||||
The fault injection tool presented in this paper is a demonstration of \texttt{action}'s testcase generation engine, as well as distributed computing capability with \texttt{actsim} as the target tool. \texttt{action} is currently in its early stages, but the process to get the code ready for future open-source release is well underway. \texttt{action} also only uses open-source dependencies, enabling cheap and easy scaling for any application without worry for potential financial impact.
|
||||
|
||||
In addition to the build system itself, we present a new simulation library which is already being shipped with \texttt{actsim}\footnote{\url{https://github.com/asyncvlsi/actsim}}, and which we use for harnessing the \ac{dut} in our tests. Using \texttt{actsim} as our simulator compared to previous attempts has the additional advantage of allowing mixed-fidelity simulation. Only the \ac{dut} itself is simulated at gate-level, while supporting logic (testbench, data sources) are simulated at higher abstraction.
|
||||
|
||||
To support \ac{set} injection in actsim, we have added the functionality as a core command to the open-source simulation engine. This offers great performance advantages, as no additional logic has to be simulated, nor does the simulation engine have to be halted. Injections are treated as an additional type of event in the simulator event queue, allowing specification of injection timing and location before the simulation engine is started. In addition, we have implemented a \acf{sed} command, which forces a node delay to a specified value once. This is not a new class of transient faults, but a specific sub-class of \acp{set}. While we do not make use of targeted timing changes in this paper, the inclusion in the simulator engine might prove useful in future investigations.
|
||||
|
||||
Finally, \texttt{actsim} can now check for violation of \texttt{excl-hi} constraints through the invocation of a new command line option, which is used to detect a erroneous coding on m-of-n coding channels.
|
||||
|
||||
|
||||
\section{System Model}
|
||||
\label{sec:system_model}
|
||||
|
||||
|
|
@ -150,7 +178,7 @@ We feel comfortable with this limitation, as transients usually occur in either
|
|||
\subsection{Failure model}
|
||||
\label{sec:system_model/failures}
|
||||
|
||||
When a transient is injected into a node, and given it is not masked by either the current state of the wire or by the child not being inside a sensitivity window currently, we can differentiate between
|
||||
When a transient is injected into a node, and given it is not masked by either the current state of the wire or by the child not being inside a sensitivity window currently, we can differentiate between:
|
||||
|
||||
\begin{itemize}
|
||||
\item Nothing; the glitch is masked either by the target already being and organically staying at the forced value for the duration of the glitch.
|
||||
|
|
@ -167,47 +195,47 @@ These failure modes are in accordance with the potential states of a circuit fro
|
|||
|
||||
To improve our failure detection per simulated injection, we aim to target our simulation efforts based on signal fanout. We use this metric for both signal selection prioritization (if the injector is not set to select all signals), as well as for determining the number of injections necessary for a given signal. This is counter to previous efforts \cite{behalExplainingFaultSensitivity2021,schwendingerEvaluationDifferentTools2022a}.
|
||||
|
||||
Signal selection is based on weighted reservoir sampling \cite{efraimidisWeightedRandomSampling2006}, with their weight being randomness with exponential falloff given their fanout, $R^{\tilde{F}}$,
|
||||
where $R$ is uniformly random and $\tilde{F}$ is the normalized fanout of the signal.
|
||||
|
||||
To calculate the number of required injections per signal, we use the Token Collector's problem. The tool is set to expect a set number of failure modes per node fanout (tokens). From this, we first calculate the expected number of required injections, then use the Markov inequality to bound this number to a specified probability of finding all tokens.
|
||||
Signal selection is based on weighted reservoir sampling \cite{efraimidisWeightedRandomSampling2006}, with their weight $\omega$ being randomness with exponential falloff given their fanout, where $R$ is uniformly random and $\tilde{F}$ is the normalized fanout of the signal.
|
||||
|
||||
\begin{align}
|
||||
E(T) = n H_n \\
|
||||
P(T \geq c n H_n) \leq \frac{1}{c}
|
||||
\omega = R^{(F_{max})/(F - F_{min})}
|
||||
\end{align}
|
||||
|
||||
where $n$ represents the number of expected failure modes per fanout, $T$ is the total required number of draws to collect all tokens, and $H_n$ is the $n$th harmonic number. Reforming this leads to the total number of expected injections $T^*$ being calculated as
|
||||
To calculate the number of required injections per signal, we use the Token Collector's problem. The tool is set to expect a set number of failure modes per node fanout $m$ (tokens). From this, we first calculate the expected number of required injections, then use the Markov inequality to bound this number to a specified probability of finding all tokens.
|
||||
|
||||
\begin{align}
|
||||
T^* = n H_n \cdot \frac{1}{(1 - P_{cov}) \cdot P_{hit}}
|
||||
n &= F \cdot m \\
|
||||
E(T) &= n H_n \\
|
||||
P(T \geq c n H_n) &\leq \frac{1}{c}
|
||||
\end{align}
|
||||
|
||||
where $P_{hit}$ additionally describes the probability of an injection hitting a sensitive window. We have set this value to $0.001$ based on previous experiments \cite{behalExplainingFaultSensitivity2021}. As this number is calculated per selected signal, the number of required injections grows linearly with the number of signals selected (given identical fanout over all) and approximately $n\log n$ over fanout per signal.
|
||||
where $F$ represents the fanout, $m$ is the assumed failure modes per fanout, $n$ is the total number of expected failure modes for this signal, $T$ is the actual total required number of draws to collect all tokens, and $H_n$ is the $n$th harmonic number. Reforming this leads to the assumed total number of injections $\hat{T}$ being calculated as
|
||||
|
||||
% should we maybe put this a bit further up the paper? I mean we want this to be the main point, no?
|
||||
\section{Proposed Fault-Injection Tool}
|
||||
\begin{align}
|
||||
\hat{T} = n H_n \cdot \frac{1}{(1 - P_{cov}) \cdot P_{hit}}
|
||||
\end{align}
|
||||
|
||||
Points to talk about
|
||||
|
||||
\begin{itemize}
|
||||
\item workflow: setup of harness, similarity to UVM, testbench design intended as design once, use for entire verification workflow
|
||||
\item why is this better than before? Performance improvements, not everything is simulated at gate level anymore, actsim is a mixed level simulator; \acs{dut} is simulated at gate level, while harness is simulated at higher level of abstraction
|
||||
\item changes to actsim? Addition of value overriding, addition of delay overriding; Addition of bounded stochastic delay?
|
||||
\item Using dflowmap means we can easily target different families of asynchronous circuits and even synchronous circuits and compare
|
||||
\item results database and post-processing
|
||||
\item single event delay (if we want to throw that in)
|
||||
\end{itemize}
|
||||
where $P_{hit}$ additionally describes the probability of an injection hitting a sensitive window. We have set this value to $0.001$ based on previous experiments \cite{behalExplainingFaultSensitivity2021}. As $\hat{T}$ is calculated per selected signal, the number of required injections grows linearly with the number of signals selected (given identical fanout over all) and approximately $n\log n$ over fanout per signal given a certain assumed number of failure modes per fanout, coverage probability, and assumed hit probability.
|
||||
|
||||
\section{Experiment Setup}
|
||||
\label{sec:experiment_setup}
|
||||
|
||||
\begin{figure}
|
||||
\centering
|
||||
\includegraphics[width=.45\textwidth]{graphics/testbench.pdf}
|
||||
\caption{Testbench architecture}
|
||||
\label{fig:setup/testbench}
|
||||
\end{figure}
|
||||
|
||||
To test our new tool, we ran our setup against previous results by Behal et.al \cite{behalExplainingFaultSensitivity2021}. We simulated the same multiplier circuit, using the same buffer styles as well. We however did not sweep over any form of pipeline load factor. We found the definition of the metric ambiguous, especially once the circuit contains non-linear pipelines. For this reason we have opted to exclude this metric from further testing.
|
||||
|
||||
The \ac{dut} is wrapped in a \acs{uvm}-like testbench setup, which is provided by our new simulation library. Our future ambition is to enable a write once - use everywhere architecture, where wrapper code has to be written once and can then be reused arbitrarily for all tests and verification procedures. The overall architecture of the test setup can be seen in Figure \ref{fig:setup/testbench}. Since, like \acs{uvm}, asynchronous logic contrary to synchronous logic inherently uses a message passing abstraction, we do not require much additional logic in the way of sequencers or monitors to interface with the \ac{dut}. Input tokens are directly forwarded to the \ac{dut}, model, and scoreboard.
|
||||
|
||||
Points to talk about
|
||||
|
||||
\begin{itemize}
|
||||
\item what was the target circuit
|
||||
\item what metrics did we sweep
|
||||
\item what was the entire workflow (in case we do two showcases, directly compared to Behal and one for a more full ACT-style workflow)
|
||||
\item how much more detail should i mention about the target circuit and families? we're starting to run low on space
|
||||
\item can I have the tikz graphics that were in the Behal paper for deadlocking, interlocking\dots
|
||||
\end{itemize}
|
||||
|
||||
|
||||
|
|
|
|||
135
graphics/action_architecture.graphml
Normal file
135
graphics/action_architecture.graphml
Normal file
|
|
@ -0,0 +1,135 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:java="http://www.yworks.com/xml/yfiles-common/1.0/java" xmlns:sys="http://www.yworks.com/xml/yfiles-common/markup/primitives/2.0" xmlns:x="http://www.yworks.com/xml/yfiles-common/markup/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd">
|
||||
<!--Created by yEd 3.24-->
|
||||
<key attr.name="Description" attr.type="string" for="graph" id="d0"/>
|
||||
<key for="port" id="d1" yfiles.type="portgraphics"/>
|
||||
<key for="port" id="d2" yfiles.type="portgeometry"/>
|
||||
<key for="port" id="d3" yfiles.type="portuserdata"/>
|
||||
<key attr.name="url" attr.type="string" for="node" id="d4"/>
|
||||
<key attr.name="description" attr.type="string" for="node" id="d5"/>
|
||||
<key for="node" id="d6" yfiles.type="nodegraphics"/>
|
||||
<key for="graphml" id="d7" yfiles.type="resources"/>
|
||||
<key attr.name="url" attr.type="string" for="edge" id="d8"/>
|
||||
<key attr.name="description" attr.type="string" for="edge" id="d9"/>
|
||||
<key for="edge" id="d10" yfiles.type="edgegraphics"/>
|
||||
<graph edgedefault="directed" id="G">
|
||||
<data key="d0" xml:space="preserve"/>
|
||||
<node id="n0">
|
||||
<data key="d6">
|
||||
<y:GenericNode configuration="com.yworks.bpmn.Artifact">
|
||||
<y:Geometry height="55.0" width="60.0" x="756.0" y="259.5"/>
|
||||
<y:Fill color="#FFFFFFE6" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="LM Roman 7" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="20.99211883544922" horizontalTextPosition="center" iconTextGap="4" modelName="eight_pos" modelPosition="s" textColor="#000000" verticalTextPosition="bottom" visible="true" width="129.808837890625" x="-34.9044189453125" xml:space="preserve" y="59.0">controller / database</y:NodeLabel>
|
||||
<y:StyleProperties>
|
||||
<y:Property class="java.awt.Color" name="com.yworks.bpmn.icon.line.color" value="#000000"/>
|
||||
<y:Property class="java.awt.Color" name="com.yworks.bpmn.icon.fill2" value="#d4d4d4cc"/>
|
||||
<y:Property class="java.awt.Color" name="com.yworks.bpmn.icon.fill" value="#ffffffe6"/>
|
||||
<y:Property class="com.yworks.yfiles.bpmn.view.BPMNTypeEnum" name="com.yworks.bpmn.type" value="ARTIFACT_TYPE_DATA_STORE"/>
|
||||
</y:StyleProperties>
|
||||
</y:GenericNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n1">
|
||||
<data key="d6">
|
||||
<y:GenericNode configuration="com.yworks.flowchart.userMessage">
|
||||
<y:Geometry height="40.0" width="106.0" x="592.0" y="267.0"/>
|
||||
<y:Fill hasColor="false" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="LM Roman 7" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="20.99211883544922" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="78.04048156738281" x="13.979759216308594" xml:space="preserve" y="9.50394058227539">action client<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
|
||||
</y:GenericNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n2">
|
||||
<data key="d6">
|
||||
<y:GenericNode configuration="com.yworks.flowchart.dataBase">
|
||||
<y:Geometry height="40.0" width="60.0" x="865.544784" y="245.94316800000001"/>
|
||||
<y:Fill color="#FFFFFF" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="4.0" x="28.0" y="18.0">
|
||||
<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
</y:GenericNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n3">
|
||||
<data key="d6">
|
||||
<y:GenericNode configuration="com.yworks.flowchart.dataBase">
|
||||
<y:Geometry height="40.0" width="60.0" x="880.0303680000002" y="260.41753600000004"/>
|
||||
<y:Fill color="#FFFFFF" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="4.0" x="28.0" y="18.0">
|
||||
<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
</y:GenericNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n4">
|
||||
<data key="d6">
|
||||
<y:GenericNode configuration="com.yworks.flowchart.dataBase">
|
||||
<y:Geometry height="40.0" width="60.0" x="893.1063520000001" y="274.5"/>
|
||||
<y:Fill color="#FFFFFF" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="LM Roman 7" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="20.99211883544922" horizontalTextPosition="center" iconTextGap="4" modelName="eight_pos" modelPosition="s" textColor="#000000" verticalTextPosition="bottom" visible="true" width="92.90859985351562" x="-16.454299926757812" xml:space="preserve" y="44.0">compute nodes</y:NodeLabel>
|
||||
</y:GenericNode>
|
||||
</data>
|
||||
</node>
|
||||
<edge id="e0" source="n1" target="n0">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="standard" target="standard"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e1" source="n3" target="n0">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="29.9609375" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="standard" target="standard"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e2" source="n4" target="n0">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="29.9609375" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="standard" target="none"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e3" source="n2" target="n0">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="29.9609375" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="standard" target="none"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
</graph>
|
||||
<data key="d7">
|
||||
<y:Resources/>
|
||||
</data>
|
||||
</graphml>
|
||||
253
graphics/action_architecture.pdf
Normal file
253
graphics/action_architecture.pdf
Normal file
|
|
@ -0,0 +1,253 @@
|
|||
%PDF-1.4
|
||||
%âãÏÓ
|
||||
1 0 obj
|
||||
<<
|
||||
/Title ()
|
||||
/Author ()
|
||||
/Subject ()
|
||||
/Keywords ()
|
||||
/Creator (yExport 1.5)
|
||||
/Producer (org.freehep.graphicsio.pdf.YPDFGraphics2D 1.5)
|
||||
/CreationDate (D:20250106173902+01'00')
|
||||
/ModDate (D:20250106173902+01'00')
|
||||
/Trapped /False
|
||||
>>
|
||||
endobj
|
||||
2 0 obj
|
||||
<<
|
||||
/Type /Catalog
|
||||
/Pages 3 0 R
|
||||
/ViewerPreferences 4 0 R
|
||||
/OpenAction [5 0 R /Fit]
|
||||
>>
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/FitWindow true
|
||||
/CenterWindow false
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/Parent 3 0 R
|
||||
/Type /Page
|
||||
/Contents 6 0 R
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/Length 7 0 R
|
||||
/Filter [/ASCII85Decode /FlateDecode]
|
||||
>>
|
||||
stream
|
||||
Gb!T\a_l".EJ<S%$GCs)p<>:d!!+iomNCOTJ:.Z#OQQLmYh#h/>=ZDYir^7)4ZN0LqdQg4j<j]c[rhWD
|
||||
RNDM,/jD%VIfAC#rU]-c?Ch`n?WpWO_&p[cjQ#?i`Q-0*0E:b:+"*\1prAHqr:St=lQ?/i9:#G#J,f'9
|
||||
^]3Ua^#\Y]rp:e'NIUt0/F0?Q^:+!@Cqe&PZM@W9rj/X(>EOEekEN&t=)(Vr\0RLbEO/=1gV4heC1`pd
|
||||
kK@31iXb)'[5f0*.sq2$?iKOrlenBNq:UQg?iHqOjo<d3ZO[a6``l`H#F'"mDke;/)X%%Lb3L&EXjof+
|
||||
Xf'd]1^s$UZ;Pu6ds0t9V%N;^EV!K(8+=W0]kU<=n#IG)pD9rcL%[UiZT[d(M"LPiVu<`i^]2JaU)nga
|
||||
ZMNZY[B[sJQD_-ibkbAOQUUI'.9eBlo%Acl45Ws)EnX_I;9jR4d3d:A%bSrjb,a$Un,"?e7sjCQMY=.D
|
||||
[\H!].#7.L,NW42[-*dB,$G1^3El,Q\QRM<4T/DYG$XAEh"%Mmq=@<%p5ZZU&Sff\AV#TT4X-i48u,Ue
|
||||
Lg"I5M3dZiRZYPUD_"=kH^bGg3@JZM.@:"A`iGnO)jE2:A0c08g[#Mul;2Df'3&)kM3]6d$)'lbKhh=X
|
||||
Bmn*4p"6]-5Xtf@HQ/s.EeGKj12[G^Hqe52oen:'Zh@**VK/%9=t.k;[OE5bD8]F,DjqBq6B1OVlsl..
|
||||
2asZ\a4RRkh2sEQCObY$WF=j9T,-fmX-6->?:W*_>qJ%$Q$QO?2Pd9#Q'ec)9"?Y5PB(si2.(9QPZf81
|
||||
CT&]NqQ^9!e/,E"$_3:I6('<:Hd[RZ-FTS9VM^[q_J[t7X-MrEiB/;@;sG++mndUFH`L]>AuQ*='eP^i
|
||||
Xdc=^&Y.^D`gn6W<Kcg&9KR>nRa'5X)F?CUlNm+ISO73t9bCRd<q4R7@;(>6;Md?tG]'];5ud2"?V%h0
|
||||
WLU?o'`WIMdAf!D[IR@VYu&R"&:;2PM3[mUep=bU'nh=4rb4rYK9F`1UXg>e(M%Eh=f=3[N5T"h5KP"`
|
||||
81Qg$^$BOcS$re+iF=U>Ytugu#As/_R;Ml3\MJDE5qIf`rc7PClU=9<9Y8utjJ6X_&\;Z].f5jD@Qkqs
|
||||
n$@m;m'SltXF*ArC6XqGo7sYc;as>aD0TWa3D"^5;)&U+ZnIpI9<(P"\6tM10Jr%T'K'cbF.(-)Qu[R.
|
||||
E[i]@6aL$<Cd-8Z=u[U#NXst/BK3]@Z$qB+)4Y9R8]amLpEQ=*j5u6pj\Q7&e:so3fUt]@/j^5Rq31$C
|
||||
.D#dC\/IU&Z?g6_Y<8U^Kob?O?Wb>1AD_O:>#I"E8S<beMf.lmT@i0o(7FNYX#(nU)*T,^Re<+$RZ7[`
|
||||
<U!R&hTro%DfoRs^L4j0Eu%R0:hsrGHBH4#]fB>@KP#5&O`H&2c@3"3_Thj#f^)>eS7g+'(n3p>11*Q<
|
||||
bosK$og,rDb!&RP4(I1!GaelaET4XE?H^BGjHP'<*89Wq-QOZVBnL+u6sete9Hd^q-g@TQH@ElejIr)O
|
||||
h%-Wl0rLPt/fQ&67eqj0*)_9mba[>5\<f.#qEK,s_@DiFoF>0ko+';K6q8>F"\frXHoQFQb3C(>,ub=L
|
||||
Ytt.+mTIZC,5eTm4N6fkPh`T#VLKj?Q]D?qf>ic5l=7kMaHVb^Eia)[--W\&(=,T$4KCjFp8n*fm-q+Q
|
||||
ZFNLWQ.=$Yg>N[9<JQ,[cfu'`a?6N[iDZdi,rFD`$DM0E9[?<Z4=ePJp8ebun/b>a;Ku6i4$'g:q&K`(
|
||||
s+G#2EnH^kAQ#78AJ1eOooLhLVO:LWcRP;,BN1J#A-<q<q\ruT.%^[o^cXDpbk/BTDME[qMqRhKCZ`Jl
|
||||
&%!g"TbisLiWQ#'`G>g9jg`89VU]pqU`D2aSi5Za_hg8qZuNGo)Quri;4:#@jt0;?Q0*J8DjpFm,aG8'
|
||||
IkK";+7keqZ:f6m^.NHcY#K*rWAKCP9;OWiniJjcf;%G\1n@X82^>4=ns["]=)#t7?Tb\g8Fr,fUcBCF
|
||||
*kq)^nS+36"J&Q,OR=E6c$pSERYU0Cl.F/#9b6<;d5C6l9='G)br-QADCHj6lOH8;5<Mr61XT+QN,lH$
|
||||
-oK\X"t?+IpOjHFC\F1-4p$)ST9Rhl.BBj?XkDAZq5JkhQ^pA&p9=/KQk5gHQBPF+TmL^CelkC9aq6/f
|
||||
PAbH8%+05-oq#@Kp">DmfkUC+7h7dN;W&):Ek*iDUoZ'mZ$t)pD8"Q=E_bNB3<)+a@EFm[_]&t!DsU;i
|
||||
mVgA3P,+Tar#,s62S4i*G"AaIenRN8mYr*R2`<a!E9<,tRl<51B5<dJJ=iUn=:i/#AKT15SZu[q@cdAu
|
||||
%c16iiN"lt'W\u9gW)56dIs-^RF^eFXI^hmHI^21]WiS"43B`.Pj+1L->%C=Cng75)`t-L$=-oNCH$1+
|
||||
2\mt$f]dlf#5VP&f<aV!*?OGTePa=)Hfu2$D's'o(WH0^=n_@q_8C#Lo-%6EPMQn\eN:.dnfO&"8s\q&
|
||||
]8i4$;MP#I!+RA^:<cN1$bbG;(IRos8ZB"b4H1WSi/%,(piSq2(M`3WpXF2f`a-;o?#;fspls!d6ujeX
|
||||
dfmsi(IO7fYO*m:F3==!#r[]gi:ee6;PGbj=k$Sed?X8[M[K,cZfjiF7@go:f1=[=&51MZ-"jQkdYI_1
|
||||
ZJ413[a8IKM%q:b0l3mFpL5F[lrBX)VlrPHd@TTr;PWNK/aBD6lbi#VEBh1Yr<#3V0sKO7";f@4AYFgd
|
||||
?THfVCa?FFk"-_<R?o5knY(-pmi9X>[DC5.\NB7&>C?X4IqqHaE2_C3(Huug*=9[?^=Q^XpDOP?<K*cN
|
||||
WLAkW3RYLV$S]-<!e4#*Im9_;)+(>`ff,)CT:\'[ed:X`_H1(@k/o>H:.&d-m5rGJ\#+"*VP1uBBI=lP
|
||||
b1I:)\2d&qb''W1TA<O$P4nNU\+sj:BsZP*)Rf)j.-Zcj'FScdRS!+J`VPdp%f97(B%lE?lH+kXXqIG>
|
||||
LP'`2&ZrIZFWMD\D&p_#A8ReOGFF:11tPI&Kf=ULk6PA%gXrf1:"86^=+\)-Fc`C:-qB,:JfM!X:Ur%1
|
||||
#`S+^/*#&qRT&6iNm*cM'6aE+6B&sO&Cb,Vkil)QrNS5FR\nssQgOW7\!H-F3j]'V#=RATG)^uLiSNCo
|
||||
+djOLmkYfMAPu$pWVtdV8:,,BBXbEccTWZ8XKp3$<9Td:R8#G\SN)WkG><9&elh`Q=)RYe^U!:F3n'O0
|
||||
?VSfI9%Q8nb1/s66E?+$-h5s(ZMBY]Y;F#QAbFLH?Wm,/="aErEO5,O$5MHR?!2C+FW]2fb:^5=q-_s4
|
||||
FiNPZC(f6FBOCY@,,7ep:&=?,T7$g4.[XJXl3=RA79;<119I]6X_s6aI`\rZAp$bTDq>n2IC8HQ<nH!*
|
||||
DK(WgC3<0)^R&!1kajB.DVk;79tQkg[A,+tRb,,I-muL86+"5GC3?l[hN]qQ##!ajY5fKPYj8Ak=37R^
|
||||
YZT^KWZ*]OZhsC%\p;tq@'QM_p'AM?q67FJT5uQjphmKA>pZtk_6gct[HU^NF"O(d=)+*TX.+5rK2soA
|
||||
qlV,D2i+o]Qr[:a?UIm2pD@/!D_DU6Rb[0LdM3\&mU9Cp6+<$=/!dR3CTUgs#J7u?.BK[D`iO(J?%&uh
|
||||
GoKKOa'+h[Q/7rAl<fpcB:k?,<`pOkXfdq'<qfH==C#pQBN6Q`#Kl=[aa"!glEQA+b*U_nMQWI,[/3Nl
|
||||
dM6t9ai_&4.,9aTQ%Q?D*6r#q/mgUYC:\G1d&%;]a*.sNp#+-OXD52BgSk5$8ng^(D4-nC9UCWc=4L-4
|
||||
<hXVQfs/kibu$GRFn$<P:5,,Ro06GFMc)(c:A^V,)Gl0:_doA]et#'ZG2"<r/a[^j6K=5Gn&/CJj*C-`
|
||||
4T0BdiI#q@E^j\1kd"J2Ug3Va=NdD@R&/?A-B>-2/s'&'[VNt[,FEm)Mr4=^F8dk*RtIND3paHnkE">6
|
||||
%hbR2dO$3.5E'IY#gO#dkDr!lSj/6uba:U_ARbY#@=QTF1'D+dd*jC(IfscjYd5gL5@hqnk)Y^%]&sTl
|
||||
U=1,D@fB3pq'0#(%oLN;5=G#8r#p&irh(^OW87'#R)G@V%]u*_P^NH9k56B#Mto`_M>;cV=j.sFF5>%8
|
||||
j8>*MrWo6A)KYlhl,T`g+aD<TnfKT98?^&2EG48$a3fI&Dr%EJJ(/AJ\=>c)ll,o"Qp48"2LcQbrh)ns
|
||||
(4].ufE^ZCQp3u/@fA&2&N@],@4=3d=ID/pZ_$bY$]bt]fJneA+d>MA*BC$khojr3b:*qdmLdWWM<=r5
|
||||
#srrQNuiZ(ju(75Q(1rb9'Fd1rG?D61WI5I=)ZL+ML8>[@NAX3cpQ!"NeI&Z+31iECNuqJd$Qc:@`5dg
|
||||
gn@@%6"sYF\^U4ko.d0[NTr9@4*$mrWa;SG>s1ua;d77.<S&g=X0+NBp/r:s+c2[3[<@hp1/qJdb\r4f
|
||||
S$qM,K4mL,?S:aMIA>@$(/qtNAX,noVL>`dGr,NTP+_n[LRPb4,s5iKZu)B*c#,g97&U!^/&h)E>0*sh
|
||||
o#X)%Z4?aM8]sk5,hB\M1mG(]Fd82iU\YEO,u?3`QQ.h=B\gUH;Z4e1g.:?!8?:<V?0;GpVm(#)\l/l]
|
||||
b$Cp4-b%&`/N0HOPU73i=7sj*I@XO'ldI2rQ8L6q^HLF)@sr@B.NBss-OPckUh+1s1c04H[LH+mO%SD,
|
||||
gTQ6i$rL>8jWBAD=V@(uAeqCn@GLTpbuUKoE>s<`/[_"<,,Gt!]uTq'H7juRJ"-(r5=rUQ)QWTa-bNWA
|
||||
\q-0faD[+o=m_-8ll.A+[n#Vud)Ir(p>+YUL\L.GgGRK-9'5/(5I+pMQOVgn>uJd\)0a966a>td)Ei^d
|
||||
dC.ot2+"43ef!lJ=Uo@j4O2U&D6Co>qn<I,(eid5)J`XVnM3"J))GOc=n"<]dl[U+S#?*Q7QUuB^O4mC
|
||||
AA'48*/<p,Vjk#+gdPjdNa-.c._WS&Q[FQ<*FUuTqQn1Wd@\,IfOH:F6B$l6?O67oE#-Hjm)ZE"6:4X[
|
||||
dT/DK'6[#"1grG!D!+O^B:YA;hV_/=:a>XL`-bA>(7HshU@p_U_aNeUI&6s:\JM2>OL8q/>h4BXj>7sc
|
||||
\rjqM]^MPuDN`JRDGH,hm)=n]MG=3hk02C.ed6BLoOgTF.!LTBKr!3-n)GV99?oL^!U64SO32(#EWi&2
|
||||
oq)h"`4M;!kDqrhR[0/g^\,sU@ell2D5kL1\eXQMs.j3)X@\-g>X*jP$phLik%&sP,PIF`LIo$jgZq9\
|
||||
)/#4gUg-_On""<Y\a(MNI)ldh_-\lp>qEZpP/TB&7dl/&*hc&o`:6#nns7r6D33=eBVVq1`YS"8-qW3.
|
||||
m7$6C*^]`pCNHq+`o1;s=k(G+k*q>UmZQhY6amnoM],(rHlHMEqO.ta)7T"&[(a\@R]rWX0\RCg-6ndY
|
||||
p!<aF)(@5-]Ue)a(2.\u3CT=XiJQA5dC%UbV6)XFRCXjs@;U.o/G??.-)n*>V&cI2:YgTIbMEVR]e*n2
|
||||
q36hV"+rORIpe*tDU+IVk&&S"dVKn%lD:5!/Q=0ITq8HtC[,^]LEZ@M4KMj-s!p%bFW@7!2"k>$%\7X6
|
||||
NKM`2IMTFWYbnL[ZBnjq04.glZ>\$UPtE?:Il-A.oG2TO4g^]\C\@AR2s`,dV3Z(jPdhPX,t=SV-4A)h
|
||||
%FI'`076NYZpPU03gX1>Xdk=\(0[4_CV+;eVobJ!5AiqbVV+]U2G'1j?S:3ilJ[]/ZpU=".as2j)HZ,<
|
||||
(BQF"T<b4KZ)9070did]>Slu!,k2EU6/NS^IT?seS[)?3JmEMf6fWc<Sd2PD[3#-qZiuLee>Q;-meWX]
|
||||
<Gfh>$#jPL_l,ag`59TYUL!SK8")Rtd8jsRV6)q6nkKV<1,)C72.+sK.5`qcCLem_qQ^91KT4ZYT`r_S
|
||||
\:SDg:(`+?=fPJ";A5r>UZH/YD:[Gt>3iVPgL2.\$`VL`%8(A@[n:75ZUI3T;[_oWMe^_N@!GU@WP3.7
|
||||
^6p4C1Z-((]C9,3\*2(LMr(-t-T;`DKL1r?DA,#Eo8+o9SNFdQ1^Pd+nrtdQhUDUp%1/m@C"<,$)4bde
|
||||
WII;%!Tg_6\'CE74KIi-(1oBC6<B>WM7$r/V70m=frR&Y"DQgQMn?2_0K.ZcVp2TU?,gKg.aHM4m?0UF
|
||||
P'AlNZsCgl]7N+Sf+l5Egi`kMG!-\M=Dj[?he$0&Mtc<a[)&^GX]L^Ofrg7dB6#577]gVXnOM#)6XG[p
|
||||
l^YL4BfN"!+02*]MNa9_m2lij2CHfb[!9(*f]<qY9e'6O)8U_,3<iEB%j&AHkE<]-rfCX]OhRg"2LC6"
|
||||
Dr&HIi8'^gVLujNGP,U=\qdsDY0G9$2<pjg/oS<[CTlr,a.W[C7NH[l_H+e7UD]cIAj!>r9(#Cme!iNM
|
||||
H[*UP?UVc#Q<R!B6EBI*>dVZ89ckG08$^Wg\MkP)oi7kJI7S4JG_DV#GAk(%gXkkQ(4tDMOa5EqS>#!R
|
||||
<kg*#.#/OWS,;^'2C%gjQ.;AlR3!pBX'XH!2Od9d@l=_^&<22'%^h/"\(fJANmj#J!7Ud.DuVAE@nh5K
|
||||
IZGNj-c1Q"^:D?u0]BkC?m0c*NW&%I+TZ-rS&)&F0RX)/*$:ZdqlY^7c&U7n2Yq[e.`Q)-&YV/fCAumR
|
||||
G*(i7D@n&:?qPM$>CM4:5<f^mh;N]JS2'l;6u9js[M`R#`oi:8&iGL%D@gFhAX@!_C4a&,/kp^K]qjno
|
||||
d_&`2L2E,4k^$ujS$(+I.l!1K6["]+k5L]m]><LoNm(K`rRjQD1Z7,mf#'ff/I/uF+F:Z>oQDOWqmW0#
|
||||
H+P<MEd0!I6uVfs?aa@125[Li=R*0Dj,*0^N5,%$QZ225BVC45#)W&HZaGkEar'boBoU0;3LmNr\Fq/S
|
||||
Rs33p.-ZPB/Wop?.n\o>Z8PWBQ!s>k`ZO,FNNM;LBW62`9OE6"mU+<rT)'6NenN>6`Q&/+-7]AIQGb(j
|
||||
k>kK`YaY`m1r=-j`O9Q\pXFMNg!,(H*,#A"QBEGAJ7jbefGU0mEO:Ono9cth74@#3OdnmjI?oMKkAV@C
|
||||
)\Yma1HX>[?'mULo-;Xl/%[`VbW0c'gOGO"A#a@i)kK##l(K!,!pU6@bk7`V_\8q"_AbBkgGX#^/8Uf\
|
||||
ff%[n1MKU3^+aIbLpg%2D-Lslm!`)FQK,D*R'uCua=7&CM%BAigEn]Gcsl$-qG_%fhJf^m=haVHB"iZb
|
||||
MmUf>pNpUX>rd^"4:ChDrpHkr.abVJ7E.\6f/N>VNQ`>B%QQSF<mA@?J1>d-9THrRj+EImpq*m.r6\4d
|
||||
>D*LSpo5<Ph8a22R=DKt5\8jO>D_[m0C6<%`nV#.anEQh_G)TG_fF%>*jLGHQM`#r"tI4ho80LiflmBH
|
||||
r`?Pa^U\%NDW]/q^0CS:8Ye2JleoC+`]fiWm4CQTG6<i8)`YD"XEJUC%S^'MFak4thV`;0UMp.MpVjo*
|
||||
D8S7#mSW4K^QT-e4/I)Y?1<l:diJ2]`V>5nhc)3$6>Xiek`5O]?bH9j[GdI=B7?JEIcNT(dBi1HIVqq6
|
||||
I^'ab'Rlis1e7J3J^+4#l2)m:4785_o$P6",=>tmK\2`WdiJ01pZ155%DTP<oD>oe74uW,HDbE/5Ii.#
|
||||
*k3^.VbiBfG(VG/EHPf9h"Gg#iuTY2CDsjLWNkgo8*8lSa8O+Cq)<*,0/(ZL4tSq['i4;j/Glp%;Cks]
|
||||
O6a/LYakDknbN57?"]/J=hsJ?Tg9-pG]mb&>eLMaI'^5<h8bg[4br$OcoX^Q^8EZaQ[4rgcH$jel"4G^
|
||||
JsMWmDalM>ln9PT>Wi>YTkam5hN6>*&r![,XbQ]C`6XhX0:J3qf"9NS3>I#G&aaI*bZA.P6"o:M0>*B[
|
||||
<:kl4B:_.fjZ:qN[[$03dRnu+s+F.^s!V_?d^/Pj3<(HWj%Vq`2r9VDqSk[qcjmU?nB`2G:tjUJA)Squ
|
||||
Z(A4(]Ou"3=P&sX.>_t!>%kseE_B!0S$^JR)mJtr%]puIN>CmH`erB0.3J4o$PMn2krV'FbK8#:GsW,3
|
||||
p]ulF0!MS9j4^HPm%MC%/(a<*YL=V9g)F@=\pF2JH_+3#)sbaEn-SW5NO<Z(-:L)@]/2-9d:Uhfl0uEo
|
||||
%Q[eS'_e'ib*JP'Mr*E<Z)')eB^"T(<ZN48caGKlKAK"ZPOKnb]]8UJY=O&=_UdtBq2;K^g3Qhk//0`=
|
||||
?A'A=ee\sY=jMLC8itjUqIaTGm=rklFqY7Wb@Mo%_qlkF/P+Z2k5j]*p#aG=QElDRJ*"jPlk\=Ah%GkG
|
||||
DKa2B0/&4E<m-)](S16dNOARSR(^2lCj-M9[Cb=:!`8"[I;S474H6IZDf8n9)*=[fqfT4=Q](TD0/CuP
|
||||
b<nVd%M@fbC4sV*U%rH/Wqqn(`I'o/E8FGBI1>?iEASU"bDXAd"(V5/H?(fQGCN8>BmDMd63lo/Ae1'k
|
||||
j[EgKUGHZHGNhBK?A2<<3ia6=7P.Y3C>.?TQ(qOpK_fCsaO*d&DqFB*bE;62>-0,i\U5]g`O%]\.`Z6V
|
||||
X?hli?QH9d;uM$15Xo#6GS8H:2Ff#^-:_^6j2Dl"l$ABtjm633c76l(-*=lg-**l,>fW;dN"htuMaKKg
|
||||
D%j&%p34u!Xo.jV/M6#m2NHC[VS?NG;:;\\3sb5\.?!<arME'+.I5(4a^87Wok#6?4#OW'<^^-9?:6nN
|
||||
_*s9-P:NdBIb]<s(cdj(Q:#umE[u#4IXGSb`7Iu2">)!<;iab'I;dIj&!$"mF84%O=sn$(dnX\T[g^"a
|
||||
:1-.b8]%jgMes[3p(Q+W:6;8WQT+!=?.cc5hbtKh##Aob1@G$1s/U"+D"$pr79IaD,.)FJ/op=#>>QNH
|
||||
^!X3p769J[NL]C<n&6&:,=st6:-n+72j<RnZi4W8T%D.VT/UgLcJs4j9M"&<&]ksUrB=`CiS<dS.s3iK
|
||||
lfQ^Uh!J)[dGaG1=k![bp+ie^PNWG@+Z]"QHuA(P;4>$X6As[p5cM`jK8aD^bM@osH,JBu+0W!Xn#Hmm
|
||||
U>njTnXuf"3!A_jZWJe(C1==^]gHt>7VLt%Dl5nG_Du+7mB`<^<q4W"a-SuVPI\:>HhRs;6TFCY&Ai.0
|
||||
_tlQM1Tj(2P&1[k##D2-k:=/EamS:81th8W-ZKl,Hp472odte<GZh`X($m=6HOr:)%IBQ14g'&<21H]W
|
||||
B>8`"f`UPdFd?arplXrl#\RBhPa\uCh4j?o>ORl*]ismQa&.b-hdFYDHj'!tr67atGhl-`oE`]ZoT$G-
|
||||
?V<c`[!i/B\moL1luVYKnWo%(e?E.>g8j7[Vc7gReQ3>EU%d%'`m69^`Z.TfoRSbr3oS*)k,C\^nKY^E
|
||||
7Zb+W8U;<#=QetTlqZE9W.2JW_`cM6,IEmE.%6f>2h%8)6i2#$<Uu]ASm?0EL3cXto(q]ClWN$cd%+9g
|
||||
;b2+U]<>*nb0#/lphJ3bhFf([(O(&l&aWX18ra_*3=e5Y&HBPk@_BspH,f/?U).KZX"n7oMA=kdjqU&9
|
||||
RQkNJ"o'.4_d;Ii)/Pn\o[OV"`9PItCq&7RG2$kM,I[=3rfiMY\Q'`iq+',Oe_na*D$@=_c?t,PGi/0l
|
||||
DmdTsL2:A2^"("`8*G'pFM=3FbZhcJI24d9;6+]?X+T&;`p349e*Gof[_DV2FkN3adr,%/#)$mKTgK@U
|
||||
*f51@eb;a:Nm=TR^+Bgj/7*@=<]T#qS46%agT$!K'HIUc^L^c9cI\u^F#6Rn)0B6/==m)`^2kFH+#e@e
|
||||
X*e2?6]8WZZ\*)oadN-?X4M,)QEOMUVS@;IU!n1^ORfP->;5j;M=,.b]J`rteFKh,YnCP<G$f<c*lI_i
|
||||
]iJb>jh>5^:qgMeI4_/L?[Z9S\G4<JTr^Gt\uD,4Zb@m.\@T_L8L)9if&fOqZP%;&dr.9R]gJjQ](r--
|
||||
*VScd==0.tM1$tB')&_<K%S\$aqk]Zh-QYG"V'U-PV[m96Mdj@b`G<V8LrPR0"Vq&*VDi;B78/r^(qhT
|
||||
=D3e2\d<:@3pU"3psQBp?.oZt9DdJMs,%97EYd$Kk&2$<+F=LE)8"1WZM:Thei2l"[sP[ZCo'TZmMAE$
|
||||
I-0d2Cu4MGmdOg?L;!i%mB(\\Vqk_-QIS7HO4Sr999.A0IZ/ME4dfZsERK!$_t-8_3gT@IZB61Z\n$I&
|
||||
KLWQFY%N(b%<8`Qg59"a?;0KbLLT^,+LITFd@SrQ"--BHMqXnDakhVsaq.Gkfj;Upf6Qm8C[`,^e?9kF
|
||||
ha0Yf7_[`l"qC>,K^.ZANb#2(N0A[<3SO19]NLl0*gDC3gY'E1nm?p@f@_NiB!]uNm1f`!FJ@AIZL+sH
|
||||
;]*(n9g@*1rZq(rPuY!)f8h[+FO!`I=$1rd@/&Vudjum@3fWBHp3F=o+SiJ3"Tai+5&'YRGb'nEK]O,o
|
||||
Fu\`/R\\0nm*iZn8:0IM$iJi%X$tchDu+Y\cuuVa;%?7M=3C/h'5&kMpDE%:Ns%4`TK`tQH`CP'L3d6t
|
||||
01NDe25qsuRJ/3m26)'NC"^U734W/b>"80$]qmZW^Va'Z%V@dQC8cK*W6qhVaM<dRYeDHk&DG9Zr4Nc`
|
||||
NV?4$.M#/CMJFl8>Wgd,7AIF&?2qq6hfPi(V]]8L:TK]I:eoS.f,iXHIDHFIS;@*n6^en+;/51X1=S?a
|
||||
maGr"hoOaa-V!gHai1q9eD<-akc%838_/rn1UL8:dHjR@BE7@+0:YQBmF;NO9ja1</P'5.EJ?:0>0-M+
|
||||
:6ta7-EMiJopaI<A/<;@D(hE0kq+4HW4jgQ&mIDV/ie0TdCMoiM8*,F>P$/-O]F&&\Z?.e?Mb?Z@EiM:
|
||||
R_R.dqJ0?cU0Y+4bJj)'f@i+3IsXKTM'"Y7gXBWXhgC[e>s6r0n/G<TDL^Y_M-jT/T$J8MH3#+]pc(C=
|
||||
n.-%:`EoJ;"+DmLEolc$JLup@*i3'8^@M&Y;]2-=I:q0\?b+?jJs1O#D8<]_N*lKfGY:lG(cfc<A7U'-
|
||||
L96]H4W.Tp3o4*j/+_'*s&&bH4Pa=Tm!Rg3^s-qRXg*76/_#$bV!.V23NG9IWH-.NflG/YRm^&W0.[i@
|
||||
^:-^GLfaFtFu8gX^h0DucSBba*6/<acSk:^]q/:&o\XNq4hqk0T)3Cs:M/iSp5\]grW;7Dab_rC#!Ma"
|
||||
2"C&48$RPnrr9`mFn\9~>
|
||||
endstream
|
||||
endobj
|
||||
7 0 obj
|
||||
11118
|
||||
endobj
|
||||
3 0 obj
|
||||
<<
|
||||
/Parent null
|
||||
/Type /Pages
|
||||
/MediaBox [0.0000 0.0000 408.00 125.00]
|
||||
/Resources 8 0 R
|
||||
/Kids [5 0 R]
|
||||
/Count 1
|
||||
>>
|
||||
endobj
|
||||
9 0 obj
|
||||
[/PDF /Text /ImageC]
|
||||
endobj
|
||||
10 0 obj
|
||||
<<
|
||||
/S /Transparency
|
||||
/CS /DeviceRGB
|
||||
/I true
|
||||
/K false
|
||||
>>
|
||||
endobj
|
||||
11 0 obj
|
||||
<<
|
||||
/Alpha1
|
||||
<<
|
||||
/ca 1.0000
|
||||
/CA 1.0000
|
||||
/BM /Normal
|
||||
/AIS false
|
||||
>>
|
||||
/Alpha2
|
||||
<<
|
||||
/ca .90196
|
||||
/CA .90196
|
||||
/BM /Normal
|
||||
/AIS false
|
||||
>>
|
||||
>>
|
||||
endobj
|
||||
8 0 obj
|
||||
<<
|
||||
/ProcSet 9 0 R
|
||||
/ExtGState 11 0 R
|
||||
>>
|
||||
endobj
|
||||
xref
|
||||
0 12
|
||||
0000000000 65535 f
|
||||
0000000015 00000 n
|
||||
0000000315 00000 n
|
||||
0000011861 00000 n
|
||||
0000000445 00000 n
|
||||
0000000521 00000 n
|
||||
0000000609 00000 n
|
||||
0000011837 00000 n
|
||||
0000012429 00000 n
|
||||
0000012031 00000 n
|
||||
0000012070 00000 n
|
||||
0000012172 00000 n
|
||||
trailer
|
||||
<<
|
||||
/Size 12
|
||||
/Root 2 0 R
|
||||
/Info 1 0 R
|
||||
>>
|
||||
startxref
|
||||
12502
|
||||
%%EOF
|
||||
431
graphics/testbench.graphml
Normal file
431
graphics/testbench.graphml
Normal file
|
|
@ -0,0 +1,431 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:java="http://www.yworks.com/xml/yfiles-common/1.0/java" xmlns:sys="http://www.yworks.com/xml/yfiles-common/markup/primitives/2.0" xmlns:x="http://www.yworks.com/xml/yfiles-common/markup/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd">
|
||||
<!--Created by yEd 3.24-->
|
||||
<key attr.name="Description" attr.type="string" for="graph" id="d0"/>
|
||||
<key for="port" id="d1" yfiles.type="portgraphics"/>
|
||||
<key for="port" id="d2" yfiles.type="portgeometry"/>
|
||||
<key for="port" id="d3" yfiles.type="portuserdata"/>
|
||||
<key attr.name="url" attr.type="string" for="node" id="d4"/>
|
||||
<key attr.name="description" attr.type="string" for="node" id="d5"/>
|
||||
<key for="node" id="d6" yfiles.type="nodegraphics"/>
|
||||
<key for="graphml" id="d7" yfiles.type="resources"/>
|
||||
<key attr.name="url" attr.type="string" for="edge" id="d8"/>
|
||||
<key attr.name="description" attr.type="string" for="edge" id="d9"/>
|
||||
<key for="edge" id="d10" yfiles.type="edgegraphics"/>
|
||||
<graph edgedefault="directed" id="G">
|
||||
<data key="d0"/>
|
||||
<node id="n0">
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="264.712" width="315.616" x="488.7840000000001" y="169.288"/>
|
||||
<y:Fill hasColor="false" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="LM Roman 7" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="20.99211883544922" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="b" textColor="#000000" verticalTextPosition="bottom" visible="true" width="61.144378662109375" x="127.2358106689453" xml:space="preserve" y="239.71988116455077">testbench</y:NodeLabel>
|
||||
<y:Shape type="rectangle"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n1">
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="63.0" width="81.0" x="632.0920000000001" y="185.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="LM Roman 7" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="20.99211883544922" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="39.64024353027344" x="20.67987823486328" xml:space="preserve" y="21.00394058227539">model<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
|
||||
<y:Shape type="rectangle"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n2">
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="63.0" width="81.0" x="632.0920000000001" y="278.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="LM Roman 7" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="37.98423767089844" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="65.764404296875" x="7.6177978515625" xml:space="preserve" y="12.507881164550781">des. under
|
||||
test<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
|
||||
<y:Shape type="hexagon"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n3">
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="37.0" width="281.0" x="506.0920000000001" y="371.0"/>
|
||||
<y:Fill color="#99CCFF" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="LM Roman 7" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="20.99211883544922" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="67.96043395996094" x="106.51978302001953" xml:space="preserve" y="8.00394058227539">scoreboard<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
|
||||
<y:Shape type="rectangle"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n4">
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="30.0" width="30.0" x="524.0920000000001" y="185.0"/>
|
||||
<y:Fill color="#00CCFF" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="LM Roman 7" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="20.99211883544922" horizontalTextPosition="center" iconTextGap="4" modelName="eight_pos" modelPosition="s" textColor="#000000" verticalTextPosition="bottom" visible="true" width="56.11634826660156" x="-13.058174133300781" xml:space="preserve" y="34.0">source A</y:NodeLabel>
|
||||
<y:Shape type="diamond"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n5">
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="30.0" width="30.0" x="524.0920000000001" y="268.5"/>
|
||||
<y:Fill color="#00CCFF" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="LM Roman 7" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="20.99211883544922" horizontalTextPosition="center" iconTextGap="4" modelName="eight_pos" modelPosition="s" textColor="#000000" verticalTextPosition="bottom" visible="true" width="55.588348388671875" x="-12.794174194335938" xml:space="preserve" y="34.0">source B</y:NodeLabel>
|
||||
<y:Shape type="diamond"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n6">
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="5.3584639999999695" width="5.3584639999999695" x="599.0342080000001" y="197.32076800000002"/>
|
||||
<y:Fill color="#000000" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="4.0" x="0.6792319999999563" y="0.6792319999999847">
|
||||
<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="ellipse"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n7">
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="5.3584639999999695" width="5.3584639999999695" x="577.8147840000003" y="280.82076800000004"/>
|
||||
<y:Fill color="#000000" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="4.0" x="0.6792319999999563" y="0.6792319999999847">
|
||||
<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="ellipse"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n8">
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="5.3584639999999695" width="5.3584639999999695" x="577.8147840000001" y="316.179232"/>
|
||||
<y:Fill color="#000000" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="4.0" x="0.6792319999999563" y="0.6792319999999847">
|
||||
<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="ellipse"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n9">
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="5.3584639999999695" width="5.3584639999999695" x="599.0342080000001" y="289.0117120000001"/>
|
||||
<y:Fill color="#000000" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="4.0" x="0.6792319999999563" y="0.6792319999999563">
|
||||
<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="ellipse"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<edge id="e0" source="n4" target="n0">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e1" source="n4" target="n0">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e2" source="n1" target="n0">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e3" source="n4" target="n0">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e4" source="n4" target="n0">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e5" source="n4" target="n0">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e6" source="n4" target="n0">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e7" source="n4" target="n0">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e8" source="n4" target="n0">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e9" source="n5" target="n0">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e10" source="n3" target="n0">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e11" source="n4" target="n3">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="-45.0" ty="-18.4765625">
|
||||
<y:Point x="601.5920000000001" y="200.0"/>
|
||||
</y:Path>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e12" source="n5" target="n3">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="-66.0" ty="-18.4921875">
|
||||
<y:Point x="580.5920000000001" y="283.5"/>
|
||||
</y:Path>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e13" source="n5" target="n0">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e14" source="n5" target="n0">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e15" source="n5" target="n1">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="-40.5234375" ty="10.5">
|
||||
<y:Point x="580.5920000000001" y="283.5"/>
|
||||
<y:Point x="580.5920000000001" y="227.0"/>
|
||||
</y:Path>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e16" source="n5" target="n2">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="-38.0703125" ty="9.5">
|
||||
<y:Point x="580.5920000000001" y="283.5"/>
|
||||
<y:Point x="580.5920000000001" y="319.0"/>
|
||||
</y:Path>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e17" source="n4" target="n1">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="-40.4765625" ty="-16.5">
|
||||
<y:Point x="603.0476160000001" y="200.0"/>
|
||||
</y:Path>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e18" source="n4" target="n2">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="-36.0390625" ty="-17.5">
|
||||
<y:Point x="601.5920000000001" y="200.0"/>
|
||||
<y:Point x="601.5920000000001" y="292.0"/>
|
||||
</y:Path>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e19" source="n2" target="n0">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e20" source="n2" target="n3">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="84.54842135386093" ty="-18.5390625">
|
||||
<y:Point x="731.140421353861" y="309.5"/>
|
||||
</y:Path>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e21" source="n1" target="n3">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="105.23553769188322" ty="-18.5390625">
|
||||
<y:Point x="751.8275376918833" y="216.5"/>
|
||||
</y:Path>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
</graph>
|
||||
<data key="d7">
|
||||
<y:Resources/>
|
||||
</data>
|
||||
</graphml>
|
||||
283
graphics/testbench.pdf
Normal file
283
graphics/testbench.pdf
Normal file
|
|
@ -0,0 +1,283 @@
|
|||
%PDF-1.4
|
||||
%âãÏÓ
|
||||
1 0 obj
|
||||
<<
|
||||
/Title ()
|
||||
/Author ()
|
||||
/Subject ()
|
||||
/Keywords ()
|
||||
/Creator (yExport 1.5)
|
||||
/Producer (org.freehep.graphicsio.pdf.YPDFGraphics2D 1.5)
|
||||
/CreationDate (D:20250106183544+01'00')
|
||||
/ModDate (D:20250106183544+01'00')
|
||||
/Trapped /False
|
||||
>>
|
||||
endobj
|
||||
2 0 obj
|
||||
<<
|
||||
/Type /Catalog
|
||||
/Pages 3 0 R
|
||||
/ViewerPreferences 4 0 R
|
||||
/OpenAction [5 0 R /Fit]
|
||||
>>
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/FitWindow true
|
||||
/CenterWindow false
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/Parent 3 0 R
|
||||
/Type /Page
|
||||
/Contents 6 0 R
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/Length 7 0 R
|
||||
/Filter [/ASCII85Decode /FlateDecode]
|
||||
>>
|
||||
stream
|
||||
Gb!<T4-+9kOe21D'ce6\2Xd!ZOamHP8.$\%)Xs9TgB3N8s++UlDdBl!\$dmSBE4T6T;TfM72Cg#@ZcRU
|
||||
r^c4ep[n7DTCN*-mcT)V5C^?EqqEpeO13j*8+=](+*kO_Mg2r6p@^.Xs)uQ\YQ+"_^OH&%q>F\#c^,jK
|
||||
TE"knhuEXNIsB/orVbJ8Sf7Y!5Oi#dAb3=s?Y/h/G*L8?-/lV=lG(L>:MnYnBLQj>#F@jM,B%a^If&ja
|
||||
;(YJbqXM!d](fjlg*UV7YO)(7Hi'H8Bc[,`AUZPsYEs`bs6&uEl\GK:>?gE'Y4k'P8(f*6e37%kIMoVp
|
||||
'%?bcg%57;p?/n/00hD?$Qa4*V0qq+hTe?4S[Vm0bB[8NkAPX,S*S,Mn"\s).8RF6;F.,uI@e+9UX_n8
|
||||
Wa@19.rX8de)"$P\#f8nr(in+ff56M/C1M\P2=6)9Nj#DT2qIHecBMSl4V<b9>^[r94\Vn[u]7q1=@S4
|
||||
8KL@LcMXq[UoO(Qa0+mW^A0lS3QdNb`L@'X.lb:r-M">L'"oE9,4?q(lL96:l<;K_]LOMNX!F\9UTE[g
|
||||
nZg*iX$[TG;u=W%Cr$0Q8u=C_qq+'gg8(-'GZ#uK<40Hrpr0Zg@rM0El:ITO6OADaFX8ur?Wp3f]Z8I/
|
||||
8?Eu7iCVE"U\qAF(ZifhrfOCu)cDs%B,B=*WSUSH6"tSiB"#-joW1Xlr*h7El(#CZEf6Zo]1$T$S(!DI
|
||||
,n6'$c6L[0i6B;]LiuF`'R=b=4)[0E8S=EO)Y--4&(eqOc7#\_[Fg*hK3AIV:F]["/36e[a-_t[H0[m&
|
||||
/PnV_fMZVL=P`2c;f43WX@'1R>,fW#26,0s,YH1k(]t(Si"14YBk=&8a<BY9Fd`j+o?&S+5]6fJ"*frA
|
||||
R**eK:MR0&e2_EpSh8^N\r;=]V5.t1g?V,t-H`0h2u<1_Q_DtRM5g*rA?AK8)O<=e?W0C.V?U#^D'YAS
|
||||
\lW"8_<K!4qZI@9*CR6dkCmtIZ*oWd/aPc9Y->>`:\K(q3%PI!Q=<7q9-[?^%(/XWmdla4[D%oEmF5"8
|
||||
DpP(SN%R,8WmSOPa,+i#On$$YI[6;:,\hLu-F:FTg9m^_R[df-f!]="e07ifqP;;GPY:Hr<C]4Opp:@7
|
||||
&l>n''7r7%<]G3Y1&V5bq?^/7+3ka(/X4L.Fc)PK<N1Ejq?b;.(SCH_r@Mfu4TCVi0;nuZbfsq8T5[>6
|
||||
'!_JE_nU1U+^!VbTKcf:r<-X,#uZtS9o_nF]6e>HXG^&C55g.)hk7I(U7uTHDXkl?3?P[q?YH3/Xbjkj
|
||||
3cAc2Mcupn,nT?."`q!%A^nkILru;)[::c0n3&Egj&A!fN+"8j2[pWN:/gPkZKO'>Fl&D\P<5U4kt4[.
|
||||
O,TqOK(:s>XLIW,riotOR<0pTF3BTl*+GWrlYT0k\O`cl+=J[aOD$3VB@[01)s8<sU-loe(+!<dUr%AD
|
||||
V%QA#"^EDMboU.lle+(-4fs-Nm,;Kn3a&(5e@>6tZHE6-R94Tcf)LndGQSJe5Z7Q:Ye>gAHL]*1'HUr.
|
||||
J.DVOE*@I#)X]%tc=QF9p&[BTs0QE9-aOUP?e.U8\rB*mU1[.!oIN@rcN_hO9qR,XD;/Y)H.'e3do307
|
||||
hnqZA%%BhLe6;j:karc74J(-*R.EE&/"`:ML7Y6M73/(OC1R=C1&]Smj9YX4b'holH#&=;n#?.+o1qg7
|
||||
q*"XSPEbm@;G1B#M3Pn&]imi(oT[nDHgR1Ubs-Wh#B([Ur]'=qgmfM]OfVi_$\rd%M5k=)E>!i;S52kF
|
||||
ki[-XlI`\^CkYHmfR;mIlG31Yp3':"lkSgKiG/:2k-Mp!*":%9mE)A$BAF9YrZUt+<Y0E:o?A.iHj/ig
|
||||
kcC0bha@6f]=?bk,,6DuM"kA5[Ze.>7HtRG'=?Uj<\,V/kC%NFm58W9BG[7NI:f!<VdI83AnWX(A[c6K
|
||||
cUto&h<E>:,B\&ZPLtL_.r4!(DE2T=WM<L`(.`.BA4,JBXE(rk-.S+,)3slXj3^0c:F1-k\RBN+kWVMS
|
||||
1l\Ad228"e`piZ/;@5'PGWo#b3_8G9CjEE)7-@#u?VrB5kiSA]_N&5VO46d?%SJB$SKjXZ15$E5;:fiP
|
||||
OlYo<b15!EKA^cXKOi?>]8u#?M`Pkc]VnrCb2VNTOqRFQ4OZZ?)l_'PS[t5u5H&,;]>KZ$\!.o_Xu)E]
|
||||
N7:1N-FQW?4V27"TCQM%].N-AbGn3`;l%"5LrMZ$#MM!RfA1%CK/l\>2/O&0T>"dEai:<bg",ER>3V/:
|
||||
l5NAj-DOmb>A'\^Xf9Dnm?sW#&oB/N^^klS]+6q<r!N0aKB\#KD>D-U*U!LuTK-\C_t<b:lo)[^B:!K$
|
||||
2A"d+2BeGGiP?oka/In(*hlB52DXsPRVid,<pR&n_:iPdNnm8uq^:qu;`<BF9\Xl>.>8QuiFIUYSQr@&
|
||||
WlBL$>D$TnND5GQ>,u*n$h@:JjVUZO4r>TBOHb+=.`Z:q+]<`3K,egcs2<4#,>S70Y/kn;EuX,n^]3O/
|
||||
Lh.Pdk1.!m13:/(AR(8-VCTLR*IE77gEUP72f+WSrcS,"rkbplVot"nF'(L--hr\AIN94p=m4(h?R_E;
|
||||
7R!SgfsBT[.Niht<X?,D)Q*-5YAp[84hbk;c&=[WX9PNV>'*4TbhM>KVC5O.npZjNB):O6Gj7]_Utc/8
|
||||
CHn%FeI0OCp_>p8/*u9=#hSe2BjO^e`pg`6Ws@>C=dcRB"]M^^Uh3)D&*`]QijQ%:OAQBLgK;mG@N.ss
|
||||
e0RP8f"9%]jb2u*(W8sO;(J`c^QRi5Z>@c:I24s0'eTe,MJUf29APDqhO/43FWgN-:I6k-<\j+p?ZJ!S
|
||||
>&@qQ:enJ>SQ1\/UDD<)2%VbW3N>hX.UjPJ8($FIaY?o<<0h+$O.mnka&bm<+qf&Z)H2ZoUtn@8"gr;0
|
||||
%Rd'T'bM7KUQ`i_*-,$0>#gF@3#0mkat]9(Hn\1X+fXTbf$.g&8F8/p>`Q:1U-DVMJO^Wj_B2[qW03Pr
|
||||
;f=ESLXqGKiJC40/9OLRet+]b\b+<2[0im3r)'EuHo@9`ir#^f.B-JqII^6B[NK(%T"c9&ksmH%#_^k-
|
||||
M4W8CQS(tA[DI:>=.jY-]kaH.oX8aie0V.ho[lW[<6%s&VqH'H!XU1&W3.8m=7_S*4k;p"2A4l0885,[
|
||||
<Q!N#'EP8JmbVBriNspn$]X+$LWG&<$?m[n9(LR4IS$o*pSWBfEO_u&_Zb*<*_t!j/m5);`p9ME2j;Q%
|
||||
SE\3k;'o`EFe.d?*nL8Kb>-!7L!V<GVS9/%&<k(G#IPG`dCa,&M0MM6Eg*i:V,kl7P<,PI7%*7[2:_(&
|
||||
05IH3hB>Og9=J=\4E^M1hk3\\A8KF+H!aq>r^'EU'8<3*@NO./S$\:;kY)\haYo=14#G2[46.s]VPbj6
|
||||
7?!F"Mj$P9i)OCQo1VG.dXt&Ne-V*tDpc*bora3nMNj6ITY>/H&#h4TFVnemV,!>Wq@!T8QFL7a1Fr/8
|
||||
BT-0<O<LF2#3TqV8U`esoWM([lU=^l.E%]AVmO?Ohl1+;,e>JT=O,F/f6k?%=VS+oX,>4Fen6/WlD]L2
|
||||
P@J?9iu5T7*BO\Sf!cD7\!!"g%9a\!4a!.2p]]O'fNS7fdE3>*Xp\)dRgi,@LD0!<F/4Qj\Up.4rGjDo
|
||||
ft,UZ`11jL]uH8KF[W8(<..TkaJqe$X^t2X,dfJ+/%'3]Dk;0PpF-k7>1BXOeIQQal,#>L9_\&u^3R>7
|
||||
".L0%S%1GtTBZLO%_n0d7V0&sC\$:n1P9Btf<Y<`1CrU62Uf``VQtP#``a%b84r";U4_3+&+s,%(?,34
|
||||
lL)PXRk/\dYKD1P+hPM4]!\E;nXu2P:7/WdS#N+#c<Ml7IS[.!lWTFs4.j+`Qf!-5qff..0,M'04a\TC
|
||||
RKf,+c<Xlf05S0OB;)k%1-CMa#"?XF:Dm(aDGMnSgc$l)A_D;qrl'jGbihANho+Fr\L%^S*,b._6J2$s
|
||||
I&r9g9O?MU<8rYnE=k=@L^,1Om>Iu^IN(6#JF!`nakTiX@mWaG'sH+1mNEj`=aq&#c,N+0j<&Dll1QZK
|
||||
1`=ZqSirBH8s"ZNh!,W;K+/8']98D=c#6CsXruT7hfU/K-oI8ZA$6@(XW=4ljIg7Wf?Rh*N=([J*EjJ(
|
||||
**.hu^rY84h[C>"e5p4QD!MjRe^VEUZh=7KTNQ3TAK2?XT!3qIq*g%"C56iP?TPZ:K/5EKTN)Ga3]+:-
|
||||
DCa7!(&\/1$T1,i,=3D`=)=DJVCKX.jMpDR7bfsS.8k/Q^rDUTq_BbV[dP.)eg/P8oZ+$lQ"q=4RG2+"
|
||||
)gfcC;G-fPg+M!;'0\0\A@oJj[bQm<FUU<(D:gq7-eAj.VYA5mgYiFWg5(kcdWpg"H#&::n#>uQDHjZ-
|
||||
X@hAg9`$.cn;F]M`B\bXF47[W(@@r::+9'[a#QnK4Q"'$X!B;=q?0:tN@S8?!DcO*E&6)+;)FY<(/*]M
|
||||
/B2;\`pMak.]+RlgdC&G5[!96Z@-2HeH,k4DX236+*r!b1+BI<AihMXfXBPP^*sqYETZX.@?nYMoU+)Y
|
||||
7N.@<GH+PdO</gH:=`XpZbKj(>0,(`Df_FplBjMEcVCN>gVuR&nZ?VCeR#`PcV:rDp-u[Ni\DL^SQfm*
|
||||
G1JT.:tMhOga!8nD6`\C@R&#D&@\8d%W0B0(9H3oFCAo+;2;.ep[B;@gG$fNb_Sa5Nd3$s*Zn62jEr*O
|
||||
b^25[m?s(t`2Q[njR$ir=X_Mgkb`Qt<Q%1k_/c"dE\f^hC='[da,+i'Omrc"O([!@N6A6*:9_I(g9dZt
|
||||
!tVcI,?ljkGu9KFc-e3\03@h,WAa$'N]B7=!j+lP.-k>7Ig"45Nlq/a2`Q^u8_s@s2CiQX;P0`iFkoRs
|
||||
`[1ZiTDB:/mSGF[m93<Y)NOgrX=lq-j!s@bYka"eY)^bP6HSCF,P)A(iIc,SF`=FaG&u6FCLXKjXLA<P
|
||||
Qs(RG_$N`"*jBWsGd)3pTJk-5\]])#[KE__bSd`kODJVQFj$8X2N2MEi+b2t)g"Qt2E6P[1OZ^k4?7h]
|
||||
kOu)6[\oXoH*^bo:fWP'0Qf!hl5]%N>!&5H=jA?EfBLnR5%idVdopF9Z"_&5*%Q\B3W"4NqL-@PqXG:o
|
||||
R@JtWD^OAH14;X`ig5ZZVTpca!nh`.XH4GFRlFQRr!IW7Rl3p<p*k@7+XHA:\&9;1m;l1m;aq^52g=Cb
|
||||
Ih"<[VsbCul6W8)A<b#F[t\.YfZ)W-oggI:=#P[a`Q.d#4!2!o.r)2.<r>SV1LhD<Hj+;)"t*g&P@'`c
|
||||
0L&o20sM'fKmK3@^Ij4R`nBDi$r+lHjT^utajJc%pgDT\LSTfe!6T<?aJl*&W^c)plTT.EcC@UF1`2]m
|
||||
GOeblWTR%KSnJdsbU/K_]e#egQ#"'LD!U2jR@ig,K`bGc?4Pt@R2kPS[;AXN)5nEjaUeICEQ8Vu]uFKY
|
||||
4e[@=AF!f:Y*YL#s0Oos]4PKLpdq*UL=U4'g*t`CA$\f=\\Burf'-sh]mSJp@g8f"f_+?'$sNTeI0I&U
|
||||
lcD=)^\*\K%FsD\Th8NBY<cIRHJ-BjbJ=H$.WN.LW7*(&X$blKaUGcj+#t7p]>i5RmiJHtj_!iS7U*i3
|
||||
K?8ft\aRYkb7>IWWhPGg/_A/^T6G-gAD)ib:Kfe`0CNW3T;IoV\Sah*A%fO1NAHNW0%I9CnY)P6,]E97
|
||||
>>gqn7?"4c(lYS`G;[,ODlo6af?6Hb0CR"_Y-"$$a84Inrfq.oN@EIBD07;.J_b2*i`b<RGG[n_[b_W]
|
||||
d)ae]`q0niP:L8=;f6Yc*No09o[J2KXdAdTpL<H"PE`292hY^_hJVKAL`MEiEP9!if<(K&(^K,Jq=,MO
|
||||
o1[\HJL3F#nIaK>a,4"=TleQU;]_BiReS5r,n&C"]T>'L52]MHc2)d,SD1,`CpX,te2rr2VN'Z<+2h=>
|
||||
fOh2BcJ1QpI=%%"<lR%%D=#3nCaIF(r$6,M.qU;oa(Y"EZd(e!!J$)lNMShq004]s#\1nXa+H27f1[5]
|
||||
3A$PGd^^>5$N3HiS3KXuF?P![_F=6qn)?3%;IP5%<D`!N/9geYFj4(VrM`lR6GNWUUFudco-66:W-Ijj
|
||||
ep!'./hUDZFniBKB*<4q.iWIc[B<K*r.TI.nn+Djk'NoMJ)Y28demGilW1<MM[.Gs#bK2M:Kj;DmGVGI
|
||||
!HDo0f\]sgs*s/-TF)NKdH""E/7<HO,o_9Hl-U2@<Tt;@&@q\X%]VA"WHUM(@a%3%14J=e-Wb2[-_sQ!
|
||||
:$YOh]:k]e'C&Ko"4"5nPLW"9(E9ZK&kf/$`acS]Y;4gB]o'//BYh'n)+'1*l(REI#<nCgh85@NN200a
|
||||
Q7DLqW'pC$hXUonB(+;`)gc8i!7.CBN625T:99Z3*_dXg.j*H!>u%\jb/:p8RAotghYM-LK9YTQRFuaX
|
||||
oq#@KrRm6TJ4K5u>(?];.Od-6&W8;9S^W5/d*R'IBNsrI]$O>2m,KO/n2P@!k>RF;aS[92P4eUgU>.\/
|
||||
@"U:\`'@@9gfii["H!0"7fVW0MFC-nBL(ieoji)u6OjUt84;U(H<_`%F`V;(Aat^9[NY%;N0Gk<4VG"D
|
||||
F[D:gs7GdclVO%Q*trFG0n;WL2bbOZD=^M&.M#/Cc9&GCJnKGFBN1=lleeM9(TF7dUcgfA:8o/,jijdR
|
||||
?eXg5jjGOnM0$pM:QC2=[17(;OfGi&.d+23&4:Ci80+]2bUYRA_]>Z<ABe"kb#(^:7CLaYf:aJ_mjCm$
|
||||
_\u@gRH&Y'TWB7-)ro[be&$]R,95s97N0)lOc&Y-=sRm-aVp_@Q"*i*D,lmk)-s0l2lfHLEem\iF]0l9
|
||||
?CY2K"kUf$C+1RYYTrcr,?8B4`Q4WSgYiCGQo?as#jLZ=.Mjb)H=s3<l3e+hh)9gS2]+o'5Jc"MJjhob
|
||||
-T43*R!up#fnXXgU4r.UAL5RfQE$1a:et/!T8QLeUOC&B(Kg[?Cjs3PWIJr05@JH!8J[BWc#iaf`qJi2
|
||||
BcXsmq[(:7'@*(JoZ'9#UUO:_XK/<MIJO82^A7HLOJ=2T&WjNdl.`uQkmq^'Jc7^:IQ"Fm`@p8;oX'>7
|
||||
s2pr5p\^iGpTN=):O_e;pj*^G)tRUEpbJ6LeO)@U.NsY_D7_Jj9PFONDBgN@Th:LHU2>\@7+DoPCf&-+
|
||||
:>Il=FqKcg.PG+q,3R)e8@0R^5$N2=MO[,*OifQ3k(P6N*Aj8JPo]YEK9/4UH.+JDKH0Q=<%$@/$_h"-
|
||||
]^3M"i%mT)PcMuHft8P7*i\r^WW073;m^[X[%)ELXl;o(].cZKX&1Ki@>[aFf3;L7=pHSd4geM[,g$fX
|
||||
/2&tmVTII;6D$(&+K8W80qtnj#;T)\**n.#YR]D?9G-;@^tL]O)OhP?(g4d(GZ%-^(\\G23F_5DXFnHA
|
||||
/JXsCH*XdMSaYWPQbn,cViGM?4*@n?UIu)gC:%p-EMADE%Bl8iB=Z2u'"'m<b\0eJ%P<O>OjaksEmhC2
|
||||
?IXR5Q9FJQ)<K:.9@ZmHiCuFN!\\ZDpJsF8CQ'6"O^CZA7!fj(Aj'%O3_6!FgHO,PMkVP#4p-u&0.Qk%
|
||||
iqf[hNBV>r)Fh&?cR-90]@t576S0$+O](=s\qTI77:/j5m7*_X(/*dO9?$iE([3oR`pe=:@9FN`qLo=C
|
||||
25>"1l3;I@D.L+(ddC^8R?\YhWepXM2lN*kH]2fJl?,t";%Ap5i0V2,[fkB>]#H]15PWL0l&0r&gFmCn
|
||||
\1GWu?!AR8rm2Zl^Vf9tcMCt,0g>c>gpOCJDX/<[!L<n\3_YFu,)a_ao.#uVV3KSoja%<[>:%:qrHb0G
|
||||
rQ.QXf`Gug5ejP+2(lPS.W_[k?9&0f$(GF+:8t+.?EPQ[Rq].Z8p(=[ep?UJFD(3H7)>R$e8_O"-H?b%
|
||||
cbffUC*`+-UT>Q7"Nt%UVTkR8)D4/@Y`jO',&a;Iaf;Q6FNi2!fXuEs?$02<EM:kRd8=o(QB[m+.]]R*
|
||||
97O]%.T+fQHms'\%grX"J(uTMWH'T%[U!^FZRA'5W;'WE;fPbY:JP5C`)3Kcn<(blBU"ihG#@dLQS:X>
|
||||
%+]3VE7pJ]:a<+1[-b.,A,DA?(^JA`;@hc68=sf:e*H/XC<@r]>1H`<g3Og]Y2%chB:X<UrG_![GFLZj
|
||||
PA]*6l^F?T>oQd(kGp_Vos/7,jb_=&c`AWm(bPUj]+4.*N58rV,BH`oirI5:d46FaC<7r8&_fL<W0=rn
|
||||
V_6Ok0<,AmiWVo=G/ECQM_e/ZdOSE^2`n(f-h?tVVlG5t$[=/7$TmD!YWZYtD2`8q88gV#ic^u+lOfq%
|
||||
.g%r=5dfE2!4UY<=uYh,YPg2]CO]MFMs8hg/aki@q,a<(1"L-MWp+qDrPPE.`+ek.4LHg.he[`E@UuAp
|
||||
N%7dF^>:f\/D"RkhGL=i];BmMeHad?ds0S]gU06m.DPR(_*[D=D7CD)Cg"-D=\ks"K8lf!GIA15nK+9"
|
||||
boDdfKpf2PRDcH.C7cF)YAV&-6nL!UnVr6t)`[)`.jarl`^;s4C%s)L\EkU/'kTKJoa8%N2sD&h8q)I3
|
||||
fr^"!f?R0`lBU*_".<0n=.&6Ne"0a!id!b3mVcsWgo30'I35bi1f`Sph>IU3dV:/C_@.O;_(W/gZ.,(2
|
||||
hSul-\iONJX<uO/NO+M=1*Wc7LIPJo5)u6q+4n0!X_5tQp!)m\H&q5g[nEtu=N._n8&LNQ:$-5$eJ57-
|
||||
/kO.\r#lkKC=utXBc3u.9q61R;(3U,VeaM"IPG60jdNfObgS>u*inFkUGl=no_#"EUoDO`X4?rWIG'4o
|
||||
'nU^7`q6W_;3Q9/Eb]c(SlWo+K][!jBi/5%>d`"<eJd'>R`[GMl=lg_m!O(^]p`T8(W#e4SsGLa>/B34
|
||||
Fe'W<Bm"luiL\VGCYA,i*Lb_79_;)de%%J-l7e^4Gj]p\bL83qdF/GZi^E\r?_1BeoK0)@S/<%_f7W6?
|
||||
Ic;glHuR[fI5l:Z?>IsV($jcqqaaH;qX5Wr>SuLrelOOq6BHT7.\GX3P9fm.;`:gRFu!9EboSi"'7)mQ
|
||||
mP2E4k')WjW$F/8^R&o2HJJWmf-]$coP#+]>cBg],cLQ.#%Tl,]X2l1aP&O(Dfnc6XVhY<\(1s-2"f@5
|
||||
3[C"\C"r@_``]&PK<aj(kWdq!`&^W4rq&n\VMA&/IQ$&o$h[]F/>mLJ8+MMNR\"fMjq7KIka!I$E;VOp
|
||||
qGUa\,n/OD00=9V>.NHB<`#N."hVc=WVWcK8I#&55D#r,bg+=CNKJWXkIoCj246#HK06?[D,:Tu,sKfT
|
||||
eN9P]]qp'1^[VAYG-.-`Fn[tApF=0@S_"6]4A&b$<Iq<FA.7roKNKsgBsA&kI*004)E^%C/#H^^+4E>$
|
||||
n[\oW"gA`*P-:73r<b&dqU!,mQGcGS8i-<k]3*B8%+C9WCEBdbOn@Xf=>>ePqOu4rlQmk#@LLJ\789#V
|
||||
@LDCDH6CT:X#u\N&\SH:7ltN2cTAc%0XgYR?+/..`>$6*PHq?Y#/k@o,!!!tl_dNb]/;`O2+L_A&	^
|
||||
p?cYC+#iM^&JME_Q%n^-lfoe;pSW`$K:TUQ2@h]J09$g7+.#H9[rprc!D7M9RdmgZ,J%%W`gp=lg@OT^
|
||||
[]U2sMoD7Zb-t.#hCcsZA#@Jk)6X9$Rl/s.@eiD4lBU(?V4P3kXkKr@fnX:R?5dh,rMACdkS&8VK^Pr2
|
||||
gE;Va=Jjb&>-+&[<:6&cC8D,6mKlq6DZ$NB@WD%a;`B=mfh=\\1>[<K8>ULUb351;.^Rj#L0cQ2P3`*`
|
||||
*iEj)\K"rIoVdeAdb&d1e`<G@c27_`j3ClrdYPZNn!H;Qhfo"ln$9E(d'4lCmd9\Y+4lSHI]'q3^#Z[a
|
||||
mJ$M=r,8d_Y;R0.C^6:#;KZL>i\R?RDFb))=\D<R"0&l:f^lmQ9oK,\SUWnfQa^'r>Q?=#477BmfN@LN
|
||||
iC8Y2s61`+\8aeK6jWND@I$b4_&Z:^Ypab3rDoAEUD\bel@UDhmNm+1cX7>G6i*Zk`4UNSWClbJI9q1,
|
||||
/GJJmdu93*FVts;A+AE)Vb3M310\(d::V5M-0A4lj8L:Z=R=ha7G`u&I54#tW-,&O;aOE`[4XUU=C*\U
|
||||
j[)m'TVA?[7Q$Z?@.Ao2.L8=E$8m?VW4K5^2(T-:D(D/\fRbR`k?U3n]5&Pu@cu=9''g[4>$*8gKTmiG
|
||||
CVO!WC_M@)\9FgU^-/`tbNP+AV])\,FIXcF`o=u3Ze/u4M)KhR-nMj^=DF%6ZnQeX,kpV)?)@pD?IY]J
|
||||
qYI#27E_Oa=fRL.6j0)>6!OZ"6&Qs0!=EJ,k0C$O9n.CO0smu,hTi%Q[4#$=Br$rSF(Mn=rQI<;\_[C5
|
||||
CPl)nOZn'BQS#/CA6EO?+2R^R;[D*5q,=5t(;9"&&uDo\02@j#UWQjmg:;ehR&;9pqWYH6$e/%oXcc8.
|
||||
DbWdAkWsa9$2)i]eZC>TeA8(/2,[VHGLC@K<U.5'$C5,W]n>?+d[IloQ1o559[Ag<5e.l0-7+$XECoeE
|
||||
dSmlA3#a&YLV%gdgs%H`_HEg72I\1gi,0GLHl$ps/c:,kCgVV]AD%:&5Sd8r>X;@+/'`k:R59.r8mYq3
|
||||
b.;DK87Xn^nHfq";83DZQ5`=5E4>Yn#%tB<%,Nk]2?]^d8/5L#IX9k.T.#M.WG,*g;V":/OIb/[A>u%V
|
||||
O]6=+[?Q<_3d;OWJf>6%4o>-\/XX1d<L:02MiHieO/P`u79EedhPN6@Br^$[Luka8k.F)FY2/7:2GoZU
|
||||
F!mei/+58LBa:]Y1u;-/)UiM'?9t8>b0Z5OY\LIi1J3$je`H2;c0Eic0hUH31@J4j*Mc)Ke9sRIX<S(e
|
||||
cuh',"S/!0@<m23QBKPHjIm">8SE,IadB"4i$u!<g8E;cJQo\mQF@Z=)/<DrdSX\Y-WQfKE\h&s<i8M>
|
||||
i2Mnt&ms[m=0OWCpQAP4&9PoCf(nVW2gO+)o"q8NW_k!\B$$>tF)6\NZspA'fR)<Ho!q'W-FXf>!Z^,L
|
||||
g]M`JD#e3@VW$,X+Cd"4(eM8U`K==tQ^&>'-+t5meX#<_UD;Y^Kjel;T:'.pjj(<Zn9VWNVPGt_GH/pt
|
||||
rB\D5(*9B<S&-C`q<<lZo@$V'U-qudPk8R;B699W/5<TZ/Xto^]T6j(]!dE3H0>aGC#aZfd&(35,4@n"
|
||||
fKel[$<$^ghELDX:1&/T&q((&0+5gfm;9[@12YGW`3j<JAO5T8T1*A92Ro3\n]Yi8IqtsK;Y[&N*b^m$
|
||||
aBHF#IbXK>_;=ad6m'F9rg[fZ`G28Edl$i8lh<H8@H.Le^4NZ9BZ?=:j.<"aNl>6d]@h@%oq&2FrRm7_
|
||||
Z^Iq4%6^bTb.;oZY7K;[cshD`mhReH^!n6KdlYlb+J/&<S+U)qpP=E8Y=GA&j]ncFe;^/&$-Nr)m;L:o
|
||||
".rATJgp9p7Sf[3+A'P=]0]CkdWr:Mnn>%"nL&UQO-V;A#M8XYR.1>\RjKon05Rm3pO7C4nuOY105gFt
|
||||
Su7]`>P>V2O6><=bB5piEOP&3a^75/P.]))A(N,`enUWi^<01:d9tA6M[$--ns?6Bd?qq,cS=qBqo&^t
|
||||
8odTTlal)?/]=rUa=b>B#gV/uR6ITK.@4:l.G"SFV6Wu^RP$\Tgf'[1:S";IEkT7Gr=?7jDrVY@"`k7c
|
||||
*5'#Hs8)rY<onI^(>IhMEtS:YHGmP+VZ0p'EW?'(q/mei@[:pq)?Y!%*<nXdg/!)6_Eco7pS>3!5X`?b
|
||||
BFL9ueg-plP5UX#<3\2SdcJIk#>`?3Ua?=HmTEk$)2Q0H,m@m)j!/1_%4I0+7@6`>>R\P.etH1g%c>dp
|
||||
W%A']qkhc"R!5r"<N/)/br]k&QZ*bep3tDf+i@c?/UhIPWMl"ZdrMNb/K:JH$)DFW2fqJ/hTQW\)*t.F
|
||||
me(U+L0B@eo4+*/1W#QWeYkp`:)T`VhBTrk6=;3-5Eb]7lks?h%h&nTC@>#Tc95U8@4,9XZVV$6cqqd!
|
||||
(eo0*S.$V#l<bhH:@1Shp/PR2mEog@A9+FRLBi_N.C#`*k`URq#-FA0\arSa^,iI<Zaar*-+_Uncb)%h
|
||||
;QH,%5b*8MQun:$hS_Z!Up!Ro>eF=l4&+7&58gW:D$%UWS_oOg_sJP^>gsMD-uA`Y0\qD*nTPpX]D/M8
|
||||
5&&LuXM.EkRt8(U]T-$q[@m"/OelfPoZ=_Z(5U`C9=7$TnmW_ZZZeLcUL+oe$cEe&\M4XSom>1$[@1jn
|
||||
9"+3K-Gsr*NLdnn_=-j%"la'::Ys65RZ<uIDQ5&&RbYIiIZL'4K'iK']J?5)3oIVO3"/,ZmH;-/B3QKr
|
||||
[7KC>c!2.S_rhY!_ZFhIp+nK9[qX6&It,Vm!ce&OijM+BEjn<hEpiSk+laFsClt`V?NOfsD:)+]H?81L
|
||||
LCt_ua]N6@I.EqIJ[e-?D[XLcAA'X\ZeLPH03]Y6=c_'D?S3Q[WAJk;MmKm$YUj_1Y`Za[Pf^5aL*6,I
|
||||
;WB_4cFPZX0g`qP[NYLt5`?qZYgHE5UE?kAle)>Zg1T(?EFHIc?i$:D3&ms:n&@V_F(-80<0N/8RRR_>
|
||||
R,q]uDG^IlJN1m8<V<lm:'pJAfVDeu(>G[&ll*bpVG1QhBmtKW[QrUrVBN.44*1-9<6\Tg$cFK4YLbU#
|
||||
8c!Q]_d@*sBb7?&cT67X`3jW,[s>88&?"%C:!!HV3ocOHZgaN=2TJm.&1gm-#0aGM1BVW$,s-$[(5PnT
|
||||
)6?U)&edWLD&@\)d+2-$F&m^=l4k,f0SYjQ`/gB,"#%:B[&t:Lli#FtC;`@W4LT55FP+?.K2pCfI4KbJ
|
||||
JHa7ibQ`)k>t7g'lKW@-;_frpFoq"28NA,I$^g#kWQ"3g#epiLq-+tZ2n'd/fI1M3VJ5-Eg(f9p.VCD\
|
||||
]a\aU-'_WE;futK(KChIf$!*<\!6@fUi!S"g3?8aVUeIuWX^G"hBqAI(dQXIPd[X_Rl%Tq$jM$XCPUQ.
|
||||
L[IEsoH^h[e&=h7*IC`Sn/,opgPFgV<U\F+YHfko2mjV5jg;6-NV<aK^@3)Ed&(Nd[S-nbp@&s+%C7%S
|
||||
+bN\B\+2'6h!I\0@Y)$HY-Hl,c3&F:T@DAG0r@1ep:Zo/P:cO#*VVT^Dp$CkiC]rL1RdiA.W7S\^>m>4
|
||||
kZQbHXJsTG#diCcBS!ZcX0NV!;b8iP]euDZe!ZlJqJtFEg=CV^#2@VDOAaM7+>2M\JN23:\MOkq\h+tf
|
||||
S6+N1r[%27Xq<Jt[?oos<*Mf:*b:bK`lZ@<%8.WjX-%X.f%)]i+2$8>r,U(3!c@E`S^h2%5oir%:"+\t
|
||||
V415oDO)0]8ttJ&HYf:\HIuI<bdhY&o=U<GH#5<tRUirIGfZF=;7I+CD0]W;)KL.L6IrI(2\N5meIgOP
|
||||
CC5Lo-hT<J,nMV,6XG[/aYl>;Xp@_46[`G+N`r=QriEH669Wp\[1u>O)FJj#\U4Xs.h2;,>8O>f[@Z(k
|
||||
bBa76;C?ASLBQ2ZT^NdXqs5SD/#uZ[?eff'k2)-7Rj%acR59?5/n*e9,]#)mKFbe]5#5LTkYpmgPCl'`
|
||||
P]Qq%c5ZK[k`^;PG;6L1,q0XKoi0G^T=jLeq=A/>s7d'"&jP^j(PG:Dd^[C+YV.!..WRpY#X=9GF=K<H
|
||||
>C)a\.sL>OUT.stN3R6_:Z?-p0/r,u-[VnkC5r#LUV>XXcp)u3^@*4M#WADC\AG=MK5dAXZPP-;K.Jl4
|
||||
7]Sg+f,I\7Ls_g<\"Jtu6(Y)6jHGZ$roG3t#B%n\^UJ5&S'YRX2P)_"TH?\(;':Qi+Ia8,P>58Id)O]M
|
||||
[jN!GA`]*1.!VcC8>!Q\q[4qKO5$=7m?5QZC!$4eIXc-RY;Lc996hZVr]4WD?Y89uUflr'pVe-O6rkqd
|
||||
oUk9bTB_X4-P94JT'[nu=Wd3?+8q,L7t3nElXN^mIG-LUfCcs$e@Og&ghu80_j)`:accMQ?hfQIncWmF
|
||||
QM7NY$,*7Gmq;Ls]fr`A+8*HB2X9lnglD6p:Oi6T"eT)_h<g'qGXBkP\ph*cDjF2P`Cf<Sj;It82]BVA
|
||||
Idh6C_fFQLT9tZe/:GkEfD<UTEQit2H!K6*,Ze:i/+p0^8H6O#>i#9ihG7\Dq+Ufol6De7d@W3sqpYS>
|
||||
r@)!Srg\0=HAJKsT(:%Y9'>SB`dc!F*q>R=\?AH`D>HYM4CRKNrIt+Hd=1?L\Uj\G+$Y7Fm/R'oCeF_-
|
||||
ms=uL\_,Q7%A!!R24LuG?f(eLeG,)CrrE1#gF`~>
|
||||
endstream
|
||||
endobj
|
||||
7 0 obj
|
||||
14134
|
||||
endobj
|
||||
3 0 obj
|
||||
<<
|
||||
/Parent null
|
||||
/Type /Pages
|
||||
/MediaBox [0.0000 0.0000 347.00 295.00]
|
||||
/Resources 8 0 R
|
||||
/Kids [5 0 R]
|
||||
/Count 1
|
||||
>>
|
||||
endobj
|
||||
9 0 obj
|
||||
[/PDF /Text /ImageC]
|
||||
endobj
|
||||
10 0 obj
|
||||
<<
|
||||
/S /Transparency
|
||||
/CS /DeviceRGB
|
||||
/I true
|
||||
/K false
|
||||
>>
|
||||
endobj
|
||||
11 0 obj
|
||||
<<
|
||||
/Alpha1
|
||||
<<
|
||||
/ca 1.0000
|
||||
/CA 1.0000
|
||||
/BM /Normal
|
||||
/AIS false
|
||||
>>
|
||||
>>
|
||||
endobj
|
||||
8 0 obj
|
||||
<<
|
||||
/ProcSet 9 0 R
|
||||
/ExtGState 11 0 R
|
||||
>>
|
||||
endobj
|
||||
xref
|
||||
0 12
|
||||
0000000000 65535 f
|
||||
0000000015 00000 n
|
||||
0000000315 00000 n
|
||||
0000014877 00000 n
|
||||
0000000445 00000 n
|
||||
0000000521 00000 n
|
||||
0000000609 00000 n
|
||||
0000014853 00000 n
|
||||
0000015331 00000 n
|
||||
0000015047 00000 n
|
||||
0000015086 00000 n
|
||||
0000015188 00000 n
|
||||
trailer
|
||||
<<
|
||||
/Size 12
|
||||
/Root 2 0 R
|
||||
/Info 1 0 R
|
||||
>>
|
||||
startxref
|
||||
15404
|
||||
%%EOF
|
||||
Loading…
Reference in a new issue