--- /dev/null
+all: Presentation.pdf
+
+REPEAT_TEXT = 'Rerun to get cross-references right'
+
+%.pdf: %.dvi
+ dvipdf $(basename $@)
+
+%.ps: %.svg
+ inkscape $(addsuffix .svg,$(basename $@)) --export-ps=$@
+
+Presentation.dvi: *.tex beamerthemerecore.sty images/*.ps
+ latex '\scrollmode\input $(basename $@)' || exit 1; \
+ latex '\scrollmode\input $(basename $@)' || exit 1; \
+ while grep -s $(REPEAT_TEXT) $(addsuffix .log,$(basename $@)) ; do \
+ latex '\scrollmode\input $(basename $@)' || exit 1; \
+ done
+
+clean:
+ rm -f *.ps *.pdf *.dvi *.log *.toc *.out *.aux *.bbl *.blg *.lof *.nav *.snm
--- /dev/null
+\documentclass[hyperref={pdfpagelabels=false}]{beamer}
+
+%\setbeameroption{show notes}
+
+\mode<presentation>
+{
+ %\useinnertheme{echt}
+ %\useinnertheme{proef}
+ \usetheme{recore}
+ \setbeamercovered{transparent}
+%\setbeamertemplate{footline}[frame number]
+}
+
+\usepackage[english]{babel}
+\usepackage[latin1]{inputenc}
+\usepackage{times}
+\usepackage[T1]{fontenc}
+\usepackage{acronym}
+\usepackage{tikz}
+\usepackage{multimedia}
+\usepackage{subfigure}
+\usepackage{booktabs}
+% Can use a tiny fontsize
+\usepackage{fancyvrb}
+
+
+%\usepackage{pgfpages}
+%\pgfpagesuselayout{4 on 1}[a4paper,border shrink=5mm]
+
+%For handouts, use the following two lines:
+%\usepackage{pgfpages}
+%\pgfpagesuselayout{2 on 1}[a4paper,border shrink=5mm]
+
+
+\title
+{MontiumC Transforming}
+
+\author {Matthijs Kooijman}
+
+\institute[Recore Systems and University of Twente]
+{
+ \inst{}%
+ Recore Systems
+ \and
+ \inst{}%
+ Faculty of Electrical Engineering, Mathematics and Computer Science\\
+ University of Twente
+ }
+
+\begin{document}
+
+\begin{frame}
+ \titlepage
+\end{frame}
+
+\begin{frame}{Contents}
+ \tableofcontents
+\end{frame}
+
+\section{Introduction}
+ \begin{frame}{Montium Tile Processor}
+ \begin{itemize}
+ \item Explicitely parallel processor
+ \item Multilevel reconfiguration
+ \item Separate memory addressing units
+ \item Data oriented, limited control flow
+ \item Redesign on the way
+ \end{itemize}
+ \end{frame}
+
+ \begin{frame}{MontiumC}
+ \begin{itemize}
+ \item Subset of C
+ \item Operations on data using MontiumC API
+ \item Compilable by gcc (as C++)
+ \item Under constant improvement
+ \end{itemize}
+ \end{frame}
+
+ \begin{frame}{Low Level Virtual Machine (LLVM)}
+ \begin{itemize}
+ \item Compiler framework.
+ \item Provides:
+ \begin{itemize}
+ \item C Frontend
+ \item Intermediate representation (LLVM IR)
+ \item Transformation passes
+ \item Native codegenerators
+ \item JIT compilation
+ \end{itemize}
+ \item Very modular
+ \end{itemize}
+ \end{frame}
+
+ \begin{frame}{Compiling MontiumC}
+ \pgfdeclareimage[width=\textwidth]{Compiling}{images/Compiling}
+ \pgfuseimage{Compiling}
+ \begin{itemize}
+ \item Focus: montiumccfe and transformations
+ \end{itemize}
+ \end{frame}
+
+\section{Tasks}
+
+ \subsection{Original tasks}
+ \begin{frame}{Original tasks}
+ \begin{itemize}
+ \item Select LLVM transformations
+ \item Improve and add transformations
+ \item Provide debugging information
+ \end{itemize}
+ \end{frame}
+
+ \subsection{Extra tasks}
+ \begin{frame}{Extra tasks}
+ \begin{itemize}
+ \item What is MontiumC?
+ \item What is Montium IR?
+ \item Reconfigurable binaries
+ \end{itemize}
+ \end{frame}
+
+ \begin{frame}{What is MontiumC?}
+ \note{Two angles: What do we want, and what do we support.}
+ \begin{itemize}
+ \item Status: Specification is ongoing
+ \item Challenges:
+ \begin{itemize}
+ \item Clang is nontransparent
+ \note[item]{Clang --- A lot of special cases}
+ \item C is complex
+ \note[item]{Complex C --- A lot of corner cases}
+ \item C is limited
+ \note[item]{Limited C --- Need to use annotations, limited amount of types}
+ \item Assembly vs. High level
+ \note[item]{Tradeoffs -- Code size vs compiler complexity, clarity
+ vs control, clarity vs determinism}
+ \end{itemize}
+ \end{itemize}
+ \end{frame}
+
+ \begin{frame}[containsverbatim]
+ \begin{columns}
+ \begin{column}{0.5\textwidth}
+ Low level
+ \begin{Verbatim}[fontsize=\tiny]
+mem input;
+mem output;
+word factor;
+
+void run(void) {
+ factor = from_int(2);
+ input = alloc_mem(P0M0);
+ output = alloc_mem(P0M1);
+ set_base(input, 0);
+ set_offset(input, 0);
+ set_base(output, -1);
+ set_offset(output, -1);
+
+ next_cycle();
+ word in = read_mem(input);
+ word out = p0o0(imul(ra1(in), rc1(factor)))
+ add_offset(input, 1);
+ add_offset(output, 1);
+ init_loop(LC1, 8);
+ do {
+ write_mem(output, out);
+ in = read_mem(input);
+ out = p0m0(imul(ra1(in), rc1(factor)))
+ add_offset(input, 1);
+ add_offset(output, 1);
+ } while(loop_next(LC1));
+
+ write_mem(output, out);
+\end{Verbatim}
+ \end{column}
+ \begin{column}{0.5\textwidth}
+ High level
+ \begin{Verbatim}[fontsize=\tiny]
+P0M0 int input[10];
+P0M1 int output[10];
+
+void run(void) {
+ for (int i=0; i<10; ++i)
+ output[i] = input[i] * 2;
+}
+ \end{Verbatim}
+ \end{column}
+ \end{columns}
+ \end{frame}
+ \note{} % Empty filler note page
+
+ \begin{frame}{What is Montium IR?}
+ \begin{itemize}
+ \item Status: Initial version
+ \item Challenges:
+ \begin{itemize}
+ \item Backend is a fast moving target
+ \item Corner cases
+ \note[item]{Corner case --- global constants}
+ \item Hardware dependencies
+ \note[item]{Hardware --- Limited number of conditionals possible}
+ \end{itemize}
+ \end{itemize}
+ \end{frame}
+
+ \begin{frame}{Selecting LLVM transformations}
+ \begin{itemize}
+ \item Status: Done
+ \item Challenges:
+ \begin{itemize}
+ \item LLVM Passes assume a lot
+ \note[item]{Assumptions --- Immediates are not free}
+ \item Montium has specific constraints
+ \note[item]{Constraint --- Implicit cycle boundaries and ordering}
+ \end{itemize}
+ \end{itemize}
+ \end{frame}
+
+ \begin{frame}{Improving / adding transformations}
+ \begin{itemize}
+ \item Status: Ongoing
+ \item Challenges:
+ \begin{itemize}
+ \item Staying generic
+ \note[item]{Generic --- LLVM maintained passes are a lot easier}
+ \item New LLVM features
+ \note[item]{Features --- Multiple return values, inlining and
+ annotation attributes}
+ \end{itemize}
+ \end{itemize}
+ \end{frame}
+
+ \begin{frame}{Debugging information}
+ \begin{itemize}
+ \item Status: Not started
+ \item Challenges:
+ \begin{itemize}
+ \item Not much LLVM support yet
+ \note[item]{LLVM support --- New in clang/backend, no support in
+ transformations yet.}
+ \item Transformations
+ \note[item]{Transformations --- Global arguments, argument addition,
+ removal, etc.}
+ \end{itemize}
+ \end{itemize}
+ \end{frame}
+
+ \begin{frame}{Reconfigurable binaries}
+ \begin{itemize}
+ \item Status: Recently started
+ \item Challenges:
+ \begin{itemize}
+ \item Tracking variables
+ \note[item]{Tracking --- Through all steps of the process}
+ \item Loss of optimizations
+ \note[item]{Optimizations --- Hard to encode constraints}
+ \item Mostly a backend problem
+ \end{itemize}
+ \end{itemize}
+ \end{frame}
+
+\section{Work process}
+ \begin{frame}{Working at Recore}
+ \begin{itemize}
+ \item Smart people
+ \item Fast communication
+ \note[item]{Communication --- Mixed teams, easy to "listen in".}
+ \item Constructive brainstorming
+ \note[item]{Brainstorming --- Evaluating different ideas and approaches.}
+ \end{itemize}
+ \end{frame}
+
+ \begin{frame}{Working with LLVM}
+ \begin{itemize}
+ \item Large community
+ \note[item]{Community --- Companies involved, a lot of full time
+ developers.}
+ \item Great support
+ \note[item]{Support --- mailing list, bug reports solved within 1/2 days.}
+ \item Slightly conflicting goals
+ \note[item]{Goals --- LLVM aims mainly at "regular" architectures.}
+ \end{itemize}
+ \end{frame}
+
+\section{Conclusions}
+ \begin{frame}{Conclusions}
+ \begin{itemize}
+ \item LLVM is very suitable
+ \item Defining the problem is harder than solving it
+ \item Three months is short!
+ \end{itemize}
+ \end{frame}
+
+\end{document}
--- /dev/null
+\mode<presentation>
+
+%\setbeamerfont{block title}{size={}}
+
+\setbeamercolor*{footer}{parent=structure,bg=recoreblue}
+\setbeamercolor*{date in head/foot}{parent=footer}
+\setbeamercolor*{confidential in head/foot}{parent=footer,fg=gray}
+
+\setbeamercolor*{section in head/foot}{parent=palette tertiary}
+\setbeamercolor*{subsection in head/foot}{parent=palette primary}
+
+\defbeamertemplate*{footline}{recore}
+{
+ \leavevmode%
+ \hbox{%
+ \begin{beamercolorbox}[wd=.5\paperwidth,ht=2.25ex,dp=1ex,left]{date in head/foot}%
+ \usebeamerfont{date in head/foot}\hspace*{2ex}%
+ \insertframenumber{} / \inserttotalframenumber%
+ \hspace*{2em}\insertshortdate{}%
+ \end{beamercolorbox}%
+ \begin{beamercolorbox}[wd=.5\paperwidth,ht=2.25ex,dp=1ex,right]{confidential in head/foot}%
+ \usebeamerfont{confidential in head/foot}Confidential
+ \end{beamercolorbox}%
+ }%
+ \vskip0pt%
+}
+
+\defbeamertemplate*{headline}{recore}
+{
+ \leavevmode%
+ \pgfdeclareimage[width=\paperwidth]{recore_logo_bow}{images/recore_logo_bow}%
+ \pgfuseimage{recore_logo_bow}%
+}
+
+%\setbeamersize{text margin left=1em,text margin right=1em}
+
+\definecolor{recoreblue}{RGB}{0,75,133}
+\definecolor{recoreorange}{RGB}{249,160,058}
+
+\setbeamercolor*{normal text}{fg=recoreblue,bg=white}
+
+\setbeamercolor*{example text}{fg=green!65!black}
+
+\setbeamercolor*{structure}{fg=recoreorange}
+
+\setbeamercolor{palette primary}{use={structure,normal text},fg=structure.fg,bg=normal text.bg!75!black}
+\setbeamercolor{palette secondary}{use={structure,normal text},fg=structure.fg,bg=normal text.bg!60!black}
+\setbeamercolor{palette tertiary}{use={structure,normal text},fg=structure.fg,bg=normal text.bg!45!black}
+\setbeamercolor{palette quaternary}{use={structure,normal text},fg=structure.fg,bg=normal text.bg!30!black}
+
+\setbeamercolor*{block body}{bg=normal text.bg!90!black}
+\setbeamercolor*{block body alerted}{bg=normal text.bg!90!black}
+\setbeamercolor*{block body example}{bg=normal text.bg!90!black}
+\setbeamercolor*{block title}{parent=structure,bg=normal text.bg!75!black}
+\setbeamercolor*{block title alerted}{use={normal text,alerted text},fg=alerted text.fg!75!normal text.fg,bg=normal text.bg!75!black}
+\setbeamercolor*{block title example}{use={normal text,example text},fg=example text.fg!75!normal text.fg,bg=normal text.bg!75!black}
+
+\setbeamercolor{item projected}{fg=black}
+
+\setbeamercolor*{sidebar}{parent=palette primary}
+
+\setbeamercolor{palette sidebar primary}{use=normal text,fg=normal text.fg}
+\setbeamercolor{palette sidebar secondary}{use=structure,fg=structure.fg}
+\setbeamercolor{palette sidebar tertiary}{use=normal text,fg=normal text.fg}
+\setbeamercolor{palette sidebar quaternary}{use=structure,fg=structure.fg}
+
+\setbeamercolor*{separation line}{}
+\setbeamercolor*{fine separation line}{}
+
+
+\mode
+<all>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="713.73669"
+ height="138.20781"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.45.1"
+ sodipodi:docbase="/home/kooijman/Documents/Internship/Progress presentation/images"
+ sodipodi:docname="Compiling.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ version="1.0">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path3345"
+ d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend"
+ style="overflow:visible">
+ <path
+ id="path3351"
+ d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ gridtolerance="10000"
+ guidetolerance="10"
+ objecttolerance="10"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.4142136"
+ inkscape:cx="359.52171"
+ inkscape:cy="158.42162"
+ inkscape:document-units="px"
+ inkscape:current-layer="g3314"
+ inkscape:window-width="1278"
+ inkscape:window-height="963"
+ inkscape:window-x="0"
+ inkscape:window-y="15"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ width="21cm"
+ height="29.7cm"
+ units="cm" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-14.255012,-26.907749)">
+ <g
+ id="g3180"
+ transform="translate(-16.726286,-14.77335)">
+ <path
+ transform="translate(-34.343241,13.355705)"
+ style="fill:#aeaeae;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+ d="M 138.32693 97.429298 A 36.251198 35.297218 0 1 1 65.824539,97.429298 A 36.251198 35.297218 0 1 1 138.32693 97.429298 z"
+ sodipodi:ry="35.297218"
+ sodipodi:rx="36.251198"
+ sodipodi:cy="97.429298"
+ sodipodi:cx="102.07574"
+ id="path3170"
+ sodipodi:type="arc" />
+ <flowRoot
+ transform="translate(-5.0214103,-64.733604)"
+ id="flowRoot3172"
+ xml:space="preserve"><flowRegion
+ id="flowRegion3174"><rect
+ y="168.02374"
+ x="41.975071"
+ height="36.251198"
+ width="93.489929"
+ id="rect3176" /></flowRegion><flowPara
+ id="flowPara3178">MontiumC</flowPara></flowRoot> </g>
+ <g
+ id="g3314"
+ transform="matrix(0.7031005,0,0,1,9.5385053,-18.589261)">
+ <rect
+ y="45.925751"
+ x="142.07994"
+ height="137.35033"
+ width="412.09082"
+ id="rect3187"
+ style="fill:none;stroke:#000000;stroke-width:1.02262473;stroke-opacity:1" />
+ <flowRoot
+ transform="translate(4.3300162,-7.3223024)"
+ id="flowRoot3189"
+ xml:space="preserve"><flowRegion
+ id="flowRegion3191"><rect
+ y="54.500244"
+ x="143.09683"
+ height="25.757431"
+ width="201.28955"
+ id="rect3193" /></flowRegion><flowPara
+ id="flowPara3195">montiumccfe</flowPara></flowRoot> </g>
+ <g
+ id="g3224"
+ transform="translate(-41.987664,-21.558106)">
+ <rect
+ y="67.998032"
+ x="157.33481"
+ height="99.143456"
+ width="47.842403"
+ id="rect3197"
+ style="fill:none;stroke:#000000;stroke-width:0.85654122;stroke-opacity:1" />
+ <flowRoot
+ transform="translate(4.9229946,29.606816)"
+ id="flowRoot3199"
+ xml:space="preserve"><flowRegion
+ id="flowRegion3201"><rect
+ y="79.303696"
+ x="160.26846"
+ height="19.079578"
+ width="63.916588"
+ id="rect3203" /></flowRegion><flowPara
+ id="flowPara3205">clang</flowPara></flowRoot> </g>
+ <g
+ id="g3217"
+ transform="translate(38.184753,-4.3192682)">
+ <rect
+ y="50.812233"
+ x="253.73969"
+ height="99.037376"
+ width="103.06709"
+ id="rect3207"
+ style="fill:none;stroke:#000000;stroke-width:0.96262336;stroke-opacity:1" />
+ <flowRoot
+ transform="translate(3.1970634,10.687314)"
+ id="flowRoot3209"
+ xml:space="preserve"><flowRegion
+ id="flowRegion3211"><rect
+ y="82.165634"
+ x="257.57431"
+ height="19.079578"
+ width="91.581978"
+ id="rect3213" /></flowRegion><flowPara
+ id="flowPara3215">Transformation</flowPara></flowRoot> </g>
+ <g
+ id="g3248"
+ transform="translate(97.220016,3.9276496)">
+ <rect
+ y="42.565315"
+ x="426.55948"
+ height="99.037376"
+ width="103.06709"
+ id="rect3233"
+ style="fill:none;stroke:#000000;stroke-width:0.96262336;stroke-opacity:1" />
+ <flowRoot
+ transform="translate(178.0354,1.2773104)"
+ id="flowRoot3235"
+ xml:space="preserve"><flowRegion
+ id="flowRegion3237"><rect
+ y="82.165634"
+ x="257.57431"
+ height="19.079578"
+ width="91.581978"
+ id="rect3239" /></flowRegion><flowPara
+ id="flowPara3241">SynC backend</flowPara></flowRoot> </g>
+ <g
+ transform="translate(386.41162,-14.77335)"
+ id="g3267">
+ <g
+ id="g3294">
+ <path
+ sodipodi:type="arc"
+ id="path3257"
+ sodipodi:cx="102.07574"
+ sodipodi:cy="97.429298"
+ sodipodi:rx="36.251198"
+ sodipodi:ry="35.297218"
+ d="M 138.32693 97.429298 A 36.251198 35.297218 0 1 1 65.824539,97.429298 A 36.251198 35.297218 0 1 1 138.32693 97.429298 z"
+ style="fill:#aeaeae;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+ transform="translate(-29.101838,13.355705)" />
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot3259"
+ transform="translate(-3.5915308,-64.733604)"><flowRegion
+ id="flowRegion3261"><rect
+ id="rect3263"
+ width="93.489929"
+ height="36.251198"
+ x="41.975071"
+ y="168.02374" /></flowRegion><flowPara
+ id="flowPara3265">Montium IR</flowPara></flowRoot> </g>
+ </g>
+ <g
+ transform="translate(159.79796,-14.77335)"
+ id="g3274">
+ <path
+ transform="translate(-34.343241,13.355705)"
+ style="fill:#aeaeae;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+ d="M 138.32693 97.429298 A 36.251198 35.297218 0 1 1 65.824539,97.429298 A 36.251198 35.297218 0 1 1 138.32693 97.429298 z"
+ sodipodi:ry="35.297218"
+ sodipodi:rx="36.251198"
+ sodipodi:cy="97.429298"
+ sodipodi:cx="102.07574"
+ id="path3276"
+ sodipodi:type="arc" />
+ <flowRoot
+ transform="translate(2.1944101,-64.833213)"
+ id="flowRoot3278"
+ xml:space="preserve"><flowRegion
+ id="flowRegion3280"><rect
+ y="168.02374"
+ x="41.975071"
+ height="36.251198"
+ width="93.489929"
+ id="rect3282" /></flowRegion><flowPara
+ id="flowPara3284">LLVM IR</flowPara></flowRoot> </g>
+ <g
+ transform="translate(749.40184,-241.27515)"
+ id="g3321">
+ <g
+ id="g3323">
+ <path
+ sodipodi:type="arc"
+ id="path3325"
+ sodipodi:cx="102.07574"
+ sodipodi:cy="97.429298"
+ sodipodi:rx="36.251198"
+ sodipodi:ry="35.297218"
+ d="M 138.32693 97.429298 A 36.251198 35.297218 0 1 1 65.824539,97.429298 A 36.251198 35.297218 0 1 1 138.32693 97.429298 z"
+ style="fill:#aeaeae;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+ transform="translate(-160.23705,239.8575)" />
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot3327"
+ transform="translate(-147.46893,153.10511)"
+ style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Bitstream Vera Sans"><flowRegion
+ id="flowRegion3329"><rect
+ id="rect3331"
+ width="93.489929"
+ height="36.251198"
+ x="41.975071"
+ y="168.02374"
+ style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Bitstream Vera Sans" /></flowRegion><flowPara
+ id="flowPara3333">Montium </flowPara><flowPara
+ id="flowPara3335">binary</flowPara></flowRoot> </g>
+ </g>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow1Lend);stroke-opacity:1"
+ d="M 87.757408,96.011653 L 114.91887,96.011653"
+ id="path3337"
+ inkscape:connector-type="polyline"
+ inkscape:connection-start="#g3180"
+ inkscape:connection-end="#g3224" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-mid:none;marker-end:url(#Arrow1Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 163.61782,96.011653 L 190.77926,96.011653"
+ id="path3541"
+ inkscape:connector-type="polyline"
+ inkscape:connection-start="#g3224"
+ inkscape:connection-end="#g3274" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Lend);stroke-opacity:1"
+ d="M 264.28165,96.011653 L 291.44313,96.011653"
+ id="path3543"
+ inkscape:connector-type="polyline"
+ inkscape:connection-start="#g3274"
+ inkscape:connection-end="#g3217" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Lend);stroke-opacity:1"
+ d="M 395.47284,96.011653 L 422.63432,96.011653"
+ id="path3545"
+ inkscape:connector-type="polyline"
+ inkscape:connection-start="#g3217"
+ inkscape:connection-end="#g3267" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-mid:none;marker-end:url(#Arrow1Lend);stroke-opacity:1"
+ d="M 496.13672,96.011653 L 523.29818,96.011653"
+ id="path3547"
+ inkscape:connector-type="polyline"
+ inkscape:connection-start="#g3267"
+ inkscape:connection-end="#g3248" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Lend);stroke-opacity:1"
+ d="M 627.3279,96.011651 L 654.48933,96.01165"
+ id="path3549"
+ inkscape:connector-type="polyline"
+ inkscape:connection-start="#g3248"
+ inkscape:connection-end="#g3321" />
+ </g>
+</svg>
--- /dev/null
+The recore_logo_bow postscript file was created using pdftops on the pdf file.
+
+The pdf file was created using OpenOffice draw, by importing the logo eps file
+and manually drawing a new bow, based on the eps file (using the imported eps
+file didn't work, since it is not transparent). Using the export to pdf function
+produced the pdf.
--- /dev/null
+%!PS-Adobe-3.0
+%%Creator: Draw
+%%LanguageLevel: 2
+%%DocumentSuppliedResources: (atend)
+%%DocumentMedia: plain 562 63 0 () ()
+%%BoundingBox: 0 0 562 63
+%%Pages: 1
+%%EndComments
+%%BeginDefaults
+%%PageMedia: plain
+%%EndDefaults
+%%BeginProlog
+%%BeginResource: procset xpdf 3.00 0
+%%Copyright: Copyright 1996-2004 Glyph & Cog, LLC
+/xpdf 75 dict def xpdf begin
+% PDF special state
+/pdfDictSize 15 def
+/pdfSetup {
+ 3 1 roll 2 array astore
+ /setpagedevice where {
+ pop 3 dict begin
+ /PageSize exch def
+ /ImagingBBox null def
+ /Policies 1 dict dup begin /PageSize 3 def end def
+ { /Duplex true def } if
+ currentdict end setpagedevice
+ } {
+ pop pop
+ } ifelse
+} def
+/pdfStartPage {
+ pdfDictSize dict begin
+ /pdfFillCS [] def
+ /pdfFillXform {} def
+ /pdfStrokeCS [] def
+ /pdfStrokeXform {} def
+ /pdfFill [0] def
+ /pdfStroke [0] def
+ /pdfFillOP false def
+ /pdfStrokeOP false def
+ /pdfLastFill false def
+ /pdfLastStroke false def
+ /pdfTextMat [1 0 0 1 0 0] def
+ /pdfFontSize 0 def
+ /pdfCharSpacing 0 def
+ /pdfTextRender 0 def
+ /pdfTextRise 0 def
+ /pdfWordSpacing 0 def
+ /pdfHorizScaling 1 def
+ /pdfTextClipPath [] def
+} def
+/pdfEndPage { end } def
+% PDF color state
+/cs { /pdfFillXform exch def dup /pdfFillCS exch def
+ setcolorspace } def
+/CS { /pdfStrokeXform exch def dup /pdfStrokeCS exch def
+ setcolorspace } def
+/sc { pdfLastFill not { pdfFillCS setcolorspace } if
+ dup /pdfFill exch def aload pop pdfFillXform setcolor
+ /pdfLastFill true def /pdfLastStroke false def } def
+/SC { pdfLastStroke not { pdfStrokeCS setcolorspace } if
+ dup /pdfStroke exch def aload pop pdfStrokeXform setcolor
+ /pdfLastStroke true def /pdfLastFill false def } def
+/op { /pdfFillOP exch def
+ pdfLastFill { pdfFillOP setoverprint } if } def
+/OP { /pdfStrokeOP exch def
+ pdfLastStroke { pdfStrokeOP setoverprint } if } def
+/fCol {
+ pdfLastFill not {
+ pdfFillCS setcolorspace
+ pdfFill aload pop pdfFillXform setcolor
+ pdfFillOP setoverprint
+ /pdfLastFill true def /pdfLastStroke false def
+ } if
+} def
+/sCol {
+ pdfLastStroke not {
+ pdfStrokeCS setcolorspace
+ pdfStroke aload pop pdfStrokeXform setcolor
+ pdfStrokeOP setoverprint
+ /pdfLastStroke true def /pdfLastFill false def
+ } if
+} def
+% build a font
+/pdfMakeFont {
+ 4 3 roll findfont
+ 4 2 roll matrix scale makefont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /Encoding exch def
+ currentdict
+ end
+ definefont pop
+} def
+/pdfMakeFont16 {
+ exch findfont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /WMode exch def
+ currentdict
+ end
+ definefont pop
+} def
+% graphics state operators
+/q { gsave pdfDictSize dict begin } def
+/Q {
+ end grestore
+ /pdfLastFill where {
+ pop
+ pdfLastFill {
+ pdfFillOP setoverprint
+ } {
+ pdfStrokeOP setoverprint
+ } ifelse
+ } if
+} def
+/cm { concat } def
+/d { setdash } def
+/i { setflat } def
+/j { setlinejoin } def
+/J { setlinecap } def
+/M { setmiterlimit } def
+/w { setlinewidth } def
+% path segment operators
+/m { moveto } def
+/l { lineto } def
+/c { curveto } def
+/re { 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+ neg 0 rlineto closepath } def
+/h { closepath } def
+% path painting operators
+/S { sCol stroke } def
+/Sf { fCol stroke } def
+/f { fCol fill } def
+/f* { fCol eofill } def
+% clipping operators
+/W { clip newpath } def
+/W* { eoclip newpath } def
+/Ws { strokepath clip newpath } def
+% text state operators
+/Tc { /pdfCharSpacing exch def } def
+/Tf { dup /pdfFontSize exch def
+ dup pdfHorizScaling mul exch matrix scale
+ pdfTextMat matrix concatmatrix dup 4 0 put dup 5 0 put
+ exch findfont exch makefont setfont } def
+/Tr { /pdfTextRender exch def } def
+/Ts { /pdfTextRise exch def } def
+/Tw { /pdfWordSpacing exch def } def
+/Tz { /pdfHorizScaling exch def } def
+% text positioning operators
+/Td { pdfTextMat transform moveto } def
+/Tm { /pdfTextMat exch def } def
+% text string operators
+/cshow where {
+ pop
+ /cshow2 {
+ dup {
+ pop pop
+ 1 string dup 0 3 index put 3 index exec
+ } exch cshow
+ pop pop
+ } def
+}{
+ /cshow2 {
+ currentfont /FontType get 0 eq {
+ 0 2 2 index length 1 sub {
+ 2 copy get exch 1 add 2 index exch get
+ 2 copy exch 256 mul add
+ 2 string dup 0 6 5 roll put dup 1 5 4 roll put
+ 3 index exec
+ } for
+ } {
+ dup {
+ 1 string dup 0 3 index put 3 index exec
+ } forall
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/awcp {
+ exch {
+ false charpath
+ 5 index 5 index rmoveto
+ 6 index eq { 7 index 7 index rmoveto } if
+ } exch cshow2
+ 6 {pop} repeat
+} def
+/Tj {
+ fCol
+ 1 index stringwidth pdfTextMat idtransform pop
+ sub 1 index length dup 0 ne { div } { pop pop 0 } ifelse
+ pdfWordSpacing pdfHorizScaling mul 0 pdfTextMat dtransform 32
+ 4 3 roll pdfCharSpacing pdfHorizScaling mul add 0
+ pdfTextMat dtransform
+ 6 5 roll Tj1
+} def
+/Tj16 {
+ fCol
+ 2 index stringwidth pdfTextMat idtransform pop
+ sub exch div
+ pdfWordSpacing pdfHorizScaling mul 0 pdfTextMat dtransform 32
+ 4 3 roll pdfCharSpacing pdfHorizScaling mul add 0
+ pdfTextMat dtransform
+ 6 5 roll Tj1
+} def
+/Tj16V {
+ fCol
+ 2 index stringwidth pdfTextMat idtransform exch pop
+ sub exch div
+ 0 pdfWordSpacing pdfTextMat dtransform 32
+ 4 3 roll pdfCharSpacing add 0 exch
+ pdfTextMat dtransform
+ 6 5 roll Tj1
+} def
+/Tj1 {
+ 0 pdfTextRise pdfTextMat dtransform rmoveto
+ currentpoint 8 2 roll
+ pdfTextRender 1 and 0 eq {
+ 6 copy awidthshow
+ } if
+ pdfTextRender 3 and dup 1 eq exch 2 eq or {
+ 7 index 7 index moveto
+ 6 copy
+ currentfont /FontType get 3 eq { fCol } { sCol } ifelse
+ false awcp currentpoint stroke moveto
+ } if
+ pdfTextRender 4 and 0 ne {
+ 8 6 roll moveto
+ false awcp
+ /pdfTextClipPath [ pdfTextClipPath aload pop
+ {/moveto cvx}
+ {/lineto cvx}
+ {/curveto cvx}
+ {/closepath cvx}
+ pathforall ] def
+ currentpoint newpath moveto
+ } {
+ 8 {pop} repeat
+ } ifelse
+ 0 pdfTextRise neg pdfTextMat dtransform rmoveto
+} def
+/TJm { pdfFontSize 0.001 mul mul neg 0
+ pdfTextMat dtransform rmoveto } def
+/TJmV { pdfFontSize 0.001 mul mul neg 0 exch
+ pdfTextMat dtransform rmoveto } def
+/Tclip { pdfTextClipPath cvx exec clip newpath
+ /pdfTextClipPath [] def } def
+% Level 2 image operators
+/pdfImBuf 100 string def
+/pdfIm {
+ image
+ { currentfile pdfImBuf readline
+ not { pop exit } if
+ (%-EOD-) eq { exit } if } loop
+} def
+/pdfImM {
+ fCol imagemask
+ { currentfile pdfImBuf readline
+ not { pop exit } if
+ (%-EOD-) eq { exit } if } loop
+} def
+/pr { 2 index 2 index 3 2 roll putinterval 4 add } def
+/pdfImClip {
+ gsave
+ 0 2 4 index length 1 sub {
+ dup 4 index exch 2 copy
+ get 5 index div put
+ 1 add 3 index exch 2 copy
+ get 3 index div put
+ } for
+ pop pop rectclip
+} def
+/pdfImClipEnd { grestore } def
+% shading operators
+/colordelta {
+ false 0 1 3 index length 1 sub {
+ dup 4 index exch get 3 index 3 2 roll get sub abs 0.004 gt {
+ pop true
+ } if
+ } for
+ exch pop exch pop
+} def
+/funcCol { func n array astore } def
+/funcSH {
+ dup 0 eq {
+ true
+ } {
+ dup 6 eq {
+ false
+ } {
+ 4 index 4 index funcCol dup
+ 6 index 4 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 5 index 5 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 6 index 8 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ colordelta or or or
+ } ifelse
+ } ifelse
+ {
+ 1 add
+ 4 index 3 index add 0.5 mul exch 4 index 3 index add 0.5 mul exch
+ 6 index 6 index 4 index 4 index 4 index funcSH
+ 2 index 6 index 6 index 4 index 4 index funcSH
+ 6 index 2 index 4 index 6 index 4 index funcSH
+ 5 3 roll 3 2 roll funcSH pop pop
+ } {
+ pop 3 index 2 index add 0.5 mul 3 index 2 index add 0.5 mul
+ funcCol sc
+ dup 4 index exch mat transform m
+ 3 index 3 index mat transform l
+ 1 index 3 index mat transform l
+ mat transform l pop pop h f*
+ } ifelse
+} def
+/axialCol {
+ dup 0 lt {
+ pop t0
+ } {
+ dup 1 gt {
+ pop t1
+ } {
+ dt mul t0 add
+ } ifelse
+ } ifelse
+ func n array astore
+} def
+/axialSH {
+ dup 0 eq {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index axialCol 2 index axialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index axialSH
+ exch 3 2 roll axialSH
+ } {
+ pop 2 copy add 0.5 mul
+ axialCol sc
+ exch dup dx mul x0 add exch dy mul y0 add
+ 3 2 roll dup dx mul x0 add exch dy mul y0 add
+ dx abs dy abs ge {
+ 2 copy yMin sub dy mul dx div add yMin m
+ yMax sub dy mul dx div add yMax l
+ 2 copy yMax sub dy mul dx div add yMax l
+ yMin sub dy mul dx div add yMin l
+ h f*
+ } {
+ exch 2 copy xMin sub dx mul dy div add xMin exch m
+ xMax sub dx mul dy div add xMax exch l
+ exch 2 copy xMax sub dx mul dy div add xMax exch l
+ xMin sub dx mul dy div add xMin exch l
+ h f*
+ } ifelse
+ } ifelse
+} def
+/radialCol {
+ dup t0 lt {
+ pop t0
+ } {
+ dup t1 gt {
+ pop t1
+ } if
+ } ifelse
+ func n array astore
+} def
+/radialSH {
+ dup 0 eq {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index dt mul t0 add radialCol
+ 2 index dt mul t0 add radialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index radialSH
+ exch 3 2 roll radialSH
+ } {
+ pop 2 copy add 0.5 mul dt mul t0 add
+ radialCol sc
+ encl {
+ exch dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 0 360 arc h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 360 0 arcn h f
+ } {
+ 2 copy
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arcn
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arcn h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arc
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arc h f
+ } ifelse
+ } ifelse
+} def
+end
+%%EndResource
+%%EndProlog
+%%BeginSetup
+xpdf begin
+562 63 false pdfSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageOrientation: Portrait
+pdfStartPage
+0 0 562 63 re W
+%%EndPageSetup
+[] 0 d
+1 i
+0 j
+0 J
+10 M
+1 w
+/DeviceGray {} cs
+[0] sc
+/DeviceGray {} CS
+[0] SC
+false op
+false OP
+{} settransfer
+q
+0.1 w
+q
+0 -0.4 561.7 63.4 re
+W*
+q
+[76.9 0 0 20.7 2.8 35.6] cm
+[/Indexed /DeviceRGB 255 <
+ 0000330000660000990000cc003300003333003366003399
+ 0033cc0033ff0066000066330066660066990066cc0066ff
+ 0099000099330099660099990099cc0099ff00cc0000cc33
+ 00cc6600cc9900cccc00ccff00ff3300ff6600ff9900ffcc
+ 3300003300333300663300993300cc3300ff333300333333
+ 3333663333993333cc3333ff336600336633336666336699
+ 3366cc3366ff3399003399333399663399993399cc3399ff
+ 33cc0033cc3333cc6633cc9933cccc33ccff33ff0033ff33
+ 33ff6633ff9933ffcc33ffff660000660033660066660099
+ 6600cc6600ff6633006633336633666633996633cc6633ff
+ 6666006666336666666666996666cc6666ff669900669933
+ 6699666699996699cc6699ff66cc0066cc3366cc6666cc99
+ 66cccc66ccff66ff0066ff3366ff6666ff9966ffcc66ffff
+ 9900009900339900669900999900cc9900ff993300993333
+ 9933669933999933cc9933ff996600996633996666996699
+ 9966cc9966ff9999009999339999669999999999cc9999ff
+ 99cc0099cc3399cc6699cc9999cccc99ccff99ff0099ff33
+ 99ff6699ff9999ffcc99ffffcc0000cc0033cc0066cc0099
+ cc00cccc00ffcc3300cc3333cc3366cc3399cc33cccc33ff
+ cc6600cc6633cc6666cc6699cc66cccc66ffcc9900cc9933
+ cc9966cc9999cc99cccc99ffcccc00cccc33cccc66cccc99
+ ccccccccccffccff00ccff33ccff66ccff99ccffccccffff
+ ff0033ff0066ff0099ff00ccff3300ff3333ff3366ff3399
+ ff33ccff33ffff6600ff6633ff6666ff6699ff66ccff66ff
+ ff9900ff9933ff9966ff9999ff99ccff99ffffcc00ffcc33
+ ffcc66ffcc99ffccccffccffffff33ffff66ffff99ffffcc
+ 110000001100000011111111220000002200000022222222
+ 440000004400000044444444550000005500000055555555
+ 770000007700000077777777880000008800000088888888
+ aa000000aa000000aaaaaaaabb000000bb000000bbbbbbbb
+ dd000000dd000000ddddddddee000000ee000000eeeeeeee
+ 0000000000ff00ff0000ffffff0000ff00ffffff00ffffff
+>] setcolorspace
+<<
+ /ImageType 1
+ /Width 297
+ /Height 79
+ /ImageMatrix [297 0 0 -79 0 79]
+ /BitsPerComponent 8
+ /Decode [0 255]
+ /DataSource currentfile
+ /ASCII85Decode filter
+ /RunLengthDecode filter
+>>
+pdfIm
+qu7)(=q(]G"q:eH"q=ahg]%XbKE_kj%0d7H%9frds-Wft2$OKoITh2'ITh1)%0d7p
+IcCA>WEK`8%0d8EITh2'IKg5c22$P\SGs>&%0g"7ITd0c%0d8FIY=n.%0d7pWTX9q
+>$2%=#C_?0>(0Wa#;o\<s*b.]W.Fu?rtpCu#,kZ603Wh(KW$P-0*_]1KW$O5"ttYq
+rsO8[%0h97IP1p10.?iQ!)rnM"pPMiW%SU5JcDAB#Rq$<03X&/WW3!t"/r2PWW.DR
+0+A,=s+CRc0<+F?!a6$;s&oH&0E2In02bqNI8YK:I<L$:0*\U5%B+jXU&P1C#-%VU
+"f_O$YGeH#VuqLIIY@`Ms&o[5%54Y_%0eJ=oD];L"q<5a=Z$C:/lOB$;H*Qm$@Ga!
+G'nHd#,qe[JcDGD!s^\e%K6;7WJ"DX=fHkLIY<0's*b5P2$Z!l=pGL?pAY5n=pGN:
+KG4Y#"tqT-/lPYH;LMGk;LN_9G+a6_0*6e3WIb)Ert&<BKEkZ[WW.DV#(B]4"pYV;
+=Uom`IT]iQ=U#+6W@nJ\WVQQ:0*_]1KJ*N="tqAX/lOAU-jKqc"pY>A/pqhiFpE[0
+07j.urtJWAW<WC+s+Ci[KNa%4K`?^/%0g#9IK<W$s'#FU"UB^Z%0p)7s!"WO%54n<
+%0eHp0.p0U0.m\=KW)(XKNa&-=tZLrTMgFr%>"PSrrE<]s&p5;s/7SR2$OKo%0d7G
+IY</'%51j_>#SW)0*VV6KJ`rCK`D&s0*Vl=IKg5c%0eHi0*X'6IY</'%0d7G%0d8p
+%<eCf;D3J'JcDMF$4U0l=g+e(#H7o2rr3P5=q(ZF07JRX#;9"Z;d(hXrs]B?Y6PM?
+%0nbD=pGK@rs]Dj"tp2j>-D*="q<57W;ll$IKkHY;g/26!tAEC>(Q^LrsAsZ03Y<R
+W!ul7K_tcXW*'Q6#?e#Z#7Xii;uSEe#;<&0#6q/1#6kVA%0d7G%0h970*Vk=Ies'O
+#;:NYI!)(dIKk7Ps.oZ$%9a4>WMm!*KEh2N$A8Tm#DB$Z#?icar@\iiWEQJY%0m=I
+%0eHj%9fqg%0hKaq#:I$%9c\Xs.BH'rs`._s.oZ$#(A4/KW'P5=q10)#?_K?08+cY
+%K.pm%5.o="q:bG"q:bG"uV&e"q=c/rsB2gIP-"kTE_>!IY%NprsB3=IP7[RW<S"\
+WV$2pKEhr>s"=i[0+\RG#7UnI#7UkH#H:l9#?e"trsB![>#TgAHjs6g>(Q^LrrE=Q
+s&fPTW."u)%9`9%(G?!tIY7q10+BQ=%0d7G%0d%jW@nK0WUp,sKFM';/tdB8#(?c-
+s.fT$%0qP>WJ%5TY6TaNrs>W-#?q.2#;6N>rs]5=%0m?@KEhrinc&iI#H7p#I%XC;
+=o]"_s.fSu=Ug#nIY<1M=TLAan,Et/"ttW="q:bG"q:boKJ*NeK^f!K0+ERDG+a4\
+=Z$D7s.fT%IKlt\KRSS-2-LHfnc&\o#)$1[%0/']%0m+I#C_=8#Cc+@$4SYA;P83+
+#H7o\JcDMF$\Saf2(sD]IKofVIe3ROKJ`t40+A.>"q:bG#,s6\#-%%j$[r;/##]W;
+FUa!/=b6UIrr<9&=p'5,IP:_)!!i/r"fMk8W@n_\0*)M8rs])aY:g><m/IGH%B'_`
+TR9lqKEeW2s.]MtIKlbUIT_."0*58cK_GENKFJ-b0+A.>rs]/:%54Xa%9i,u$\Ssm
+IP.::TI>7B%>"PQrsN!>=q*-6=agUT#$Ud$"/lY6WVnIN%57_j">?q`%B0(%!iQR,
+p\tDG#-S8ZG5n3;%K?l@JcDDC$O/7e03MIW03N`.WVQPsKEh^\0E2If0+BQ=%9]V6
+%>=NV">:2g#DDmP$O/7e%<d,A;D3J'WIb)BrsOJars+!UIT$]S%57SX"/lY5YPU!Q
+%0NP4#$Ug%#H9?c0<#-bW;?N%=q.E6;P8E1#D<9jJcDAB%"o'm2(r-3=pKL0%>=ZZ
+"b[<hW%SV[0*_q>#7Z>D"u#cO$)n+<=fF'Q"q?7_rsK8hW!7WmTMc5P%9\8^T)T0O
+%>50n>#ST0W<QQ(rrcI/KN\i`0E2I`W&4c_q#:MH"q@Lg#6-=YW<Ng1rVm.P#-T[Y
+G+a49s&oC-JcD;@!e(?&r\"7Ss"=IW0*\ESrs+2^0<#./#;?)^",&N90DPPP2$P^e
+2$P]ds"=GP"uZAZ$O/8;%<d,AHj6MRIY%NhrsK8?Y6S60=t^>`%57YZ"fMk`W<P$U
+%0NP4#?pp&$*ORCrs]33/m2*P0*8<^>6"U2=q.E6;P8E1/qbkeW.Fu=rsW'?=Z%j2
+03SQ5=Ug&^rs:=f0;o'aKJ*NepAZ)2"ttW=##d-Q/e'I_"ttW=07F+QG'm0sKFKTk
+rtC'7>(0V'>(0V'>(0V'>(0V'>(6)C(5.->ITh2'ITh2'ITh2'ITh2'ITh2RoD]5t
+=agPa"q:bG#(BaSli.>rIP2-7%0d7GIT`Z@rtDA8IT_,'IT_,'IT_,'IT_,'ITc7A
+'j5uhIT_,'IT_,'IT_,'IT_,'IT_-srriW:KFKS;s"=HZW<Nh/rs(1d>(2-.#?g^!
+(9[s#KFKP4;HYU]KN\U`#-S8ZG+a49s&oF.WS[XkIKg5d%0d7H%0d7H%0d7H%0d7H
+%0g"7p\u"^#7UkH#7UkH#7UkH#7UkH#7UkH#CcCH&ZJqC#7UkH#7UkH#7UkH#7Xl+
+rt/ED"q:eH"q:eH"q:eH"q<5bp&>h3%0m=H%0m=H%0m=H%0m=H%0m=H%9fb)rtPtI
+%0m=H%0m=H%0m=H%0m=H%0m=Hqu6_H#(HD%!e(?&qu6gQ%9Y=g2=gbNIKhHY%5.ZY
+&5t1dKJ`s_=YFrGFaOCl"uY6:)-I1K%0d%A%0d%A%0d%A%0d%A%0d%A%54[Urt\`H
+"pY>A"pY>A"pY>A"pY>A"pY>A=nhq1IKg#]%0d%A%0d%A%0d%A%0d%AWV$3*IKg5c
+#6kVA#6kVA#6kVA#6kVA080*"(k)Yu"pY>A"pY>A"pY>A"pY>A"pY>A"u#`N'a=mI
+%0d%A%0d%A%0d%A%0d%A%0d(6rrW]7Y6Y(\#$NYhW*0G*qu6aO%0g#*rteiC>,Vl_
+I8YJG%B'`7%8rjHTEg-'%B/+_)MA;(#7UkH#7UkH#7UkH#7UkH#7UkH#7Um@qYq=a
+#7UkH#7UkH#7UkH#7UkH#7UkH#DDpQ(T:LB%0d7H%0d7H%0d7H%0d7H%0d7H>5%t4
+=p>E@%0d7H%0d7H%0d7H%0d7H%0d9?q#;48%0m=H%0m=H%0m=H%0m=H%0m=H%0m=H
+>58+4%0d7H%0d7H%0d7H%0d7H%0d7H%0l\/"G@4e2$X%5rs]$_%57VY!iZAWmf+"T
+#(A37;HZn@"uZE6/pqhi/iA:k=ks#q=q(ZF"q:bG"q:bG"q:bG"q:bG"q:bG"q<6^
+rt\`H"q:bG"q:bG"q:bG"q:bG"q:bG>5A18%0d7G%0d7G%0d7G%0d7G%0d7G%0d7G
+W;-B12$OKo%0d7G%0d7G%0d7G%0d7G%0d7G%>=QW)L_l""q:bG"q:bG"q:bG"q:bG
+"q:bG"q:ccq>V06%0d7G%0d7G%0d7G%0d7G%0d7G%Jg#+0+ERDr@\9Y2-LGmjo5Bb
+#-\%[%T7^QI0L,cI!2/\%>7mig]&1F#7UkH#7UkH07I)X>(0Wa#7UkH#7UkH#7^P0
+(4HGs#7UkH#7W>>>(0Y.>(0Y.>(0YYqYqF:#7UkH#7UkH#7Ulj>$2%=#7UkH#7UkH
+#PnB<IKg5d%0d7H%0d7H=^$I`%0d7H%0d7H%0d:;ru,&M"q:eH"q:f?>(g(.>(d+i
+"q:eH"q:eH#5S96%0m=H%0m=H%9e3aKN`h.KN`h.KNe3O"/uJX=oSp90*VjiW%SU5
+jo5B8#-%VU!E+=F;?R2%G'nH40*6S,WS@FZ=UbQ?"q:bA#(HFK$E447"q:bA"q:cc
+qu6t*#6kVA#6kVAId[4DW!3\8#6kVA#6kWjr;R*W%0d%A%0d%A%>=TX$3g_>%0d%A
+%0d&?r;R.X#6kVA#6kVA#6oYRrs=,Y#6kVA#6kW?qYpjT#6kVA#6kVA#PnB*"q:bA
+"q:bA#4)9jKEeX[0*)M8rs]&7Y6S7mrt21=#H7o+G("O^I%Yk8#H7o2gA_J4#7UkH
+#7UkH>5A1)%0d7H%0d7H%9iZ/$%rKl#7UkH#7Xl)rsCCg#7UkH#7UkHW;?Ms0+A*p
+#QJ!&rsDp="q:eH"q:eH>5J7+W!rt@"q:eH"q:h6rs;j<"q:eH"q:fjq>U^)%0m=H
+%0m=Hq>U^0#7UkH#7UkHlMh8%#,qe9"q:eH0<#./jo5mF%54Xa;g*P3I!0lAW@n^6
+gA_I^%0d7G%0d7GIes'OW<Ne9%0d7G%0h:Yrt8KE"q:bG"q:bG"q:bG"q:bG0DGJQ
+%0d7G%0d7G%57MV!a:&+p&>=U"q:bG"q:bG#5J3*=UbQE"q:bG"q?7_rs=,Y%0d7G
+%0d8FqYpkT%0d7G%0d7G%Jg#:"q:bG"q:bG"q:bG"q:bG"q?7Xrs#D208'Q>#Q>24
+=oel-jo5fo%53/7I<L!]TIr**%9hHb)L_l"#7UkH#7W>>>(0Y.>(-Yb#7UkH#7UkH
+qYq.\#7UkH#7UkH#7UkH#7UkH0D>DP#7UkH#7UkH#Cbq;#mLhD%0d7H%0hL\rsG_0
+%0m=H%0m=HK_tcT=q(]G"q:eH#6.j;IThD.IP2-8%0d7H%0d7Hq>V$9"q:eH"q:eH
+"q:eH"q:eHW:Krt"ttW="q:bG"p]f=#,pY`$ni'C0*ZfII!#mO#6ri\)Hd:L%0d%A
+%0d%A%0d%A%0d%A%0d%A%0d&?qYq+0%0d%A%0d%A%0d%A%0d%jpAYJQ%0d%A%0d%A
+%9_rq#mUYD"pY>A"p\<*rs8o7%0d%A%0d&?qu7R`"q:bA"q:bA"q:bA"q:bA"q:bA
+"q:bA#-%Fu&-`@D%0d%A%0d%A%0d%A%>=<P%PJ9i=pGKA%0m=H%B'^?jSoVn%B'_6
+TR<D1>,Vl`g&DqC"q:eH"q:eH"q:eH"q:eH"q:eH"q:eH0DYVYKEhqj%0m=H%0m=H
+%0m=qp&>BUkH#7UkH#DD@A#mLhD%0d7H%0hL[rs8l=#7UkH#7Uljqu7O;%0m=H
+%0m=H%0m=H%0m=H%0m=H%0m=H>58+-%0d7H%0d7H%0d7H%0g#+rt'hm>(-Yb"q:bG
+"q:boKFKTrrsbq308'd4TQZt\IP2.`gA`!n%0d7G%0d7G%0d7G%0d7G%0d7G%0d8F
+q#:h,%0d7G%0d7G%0d7G%57>Q#n7(J"q:bG"q=c#rs9,=%0d7G%0d8Eq#:\S%0d7G
+%0d7G%9`T.(k)Yu"q:bG"q:bG"q:bG"q:bG"q:bG#,q:r%0d7G%0d7G%0d7G%0eKT
+rt,\EY6PL@%0m=H%0m=HKJ*cfjo5C8#Cc\+!.=g>"FLHR"qB;d(5)o%"q:eH"q:eH
+"q:eH"q:eH"q:fdpAYGJ"q:eH"q:eH>42Cs"q:eH"q:eH#$Ug%!NB8prs8o>"q:eH
+"q:eHq#:\S#7UkH#7UkH#H@V#(0V.O%0m=H%0m=H%0m=H%0m=H%0m>Gp&>:,#7UkH
+#7UkHm/I`J#,j0a"q:bG"q:bG"q:d90*d0lrsUahW!6.BTQO-cW!7_*rt\`H"pY>A
+"pY>i=ajK_"pY>A"pY>A0D>DP=U,-?"pY>A#(H"?$82Sm"pY>A"pY@3qYp_u"pY>i
+K_PKRIKg#]%0d%A%0h:Wrs8l="pY>A"pY>AqYq=["pY>A"pY>A07I%]"pY>A"pY>A
+"u#ZL#R1_B#6kVA#6sSq!Nub.=pGKA%0d7HKEhDb"pQ^cW@n^Zmf*?e%B04)"fMk`
+Y6TISTE#H$=o\f^rs=>`%0d7H%0d8Frr3<Y%0d7H%0d7H%9iN+$%rKl#7UkH#7Xl)
+rsPb7#7UkH#7UkH#H@Y$$%rNm"q:eH#)&rOrsPb7"q:eH"q:eH#))pS$`Pcg#7UkH
+#7UkH>5J7*=q(ZF#7UkH#DE*V$<dWC#7UkH#7Um@pAYC-#7UkH#7UkHmJdqT%>5/p
+%0d7G22%n4%0d7G%0ia8%>=6N",%*f%K$/6=q+Ul/tei0FUa!50AQR6=UbQE"q:bG
+#(HON$3gqD%0d7G%0d8pq#;+5%0d7G%0d7G03Na-IT_,'IT_,'ITcOI)D;O(%0d7G
+%0d7G%9\-`%0d7G%0d7G%0d8FqYqHe%0d7G%0d7G%0d8FIT\N4%0d7G%0d7G%0lY.
+$%<'f"q:bG"q=c8rsOJh"q:bG"q:bG#-%@s('Y3P%0d7G%0h8bIT_,'IT_,'IT_,Q
+r;RD.%9eDi%0d7H%>50o2$P]B0+@k6"/uJ6W:Blj%0hIj=o84-0+ERDG+bJE/q,G_
+W87I[IKg5d%0d7H%9i`1$a0dE"q:eH"q:eHW;6H/KEhqj%0m=H%0m=H%0m=H%0m=H
+%0m@=ru%d?%0m=H%0m=H%0m=H%0m=H%0m=H%0m=qq#;3b%0d7H%0d7H%0d7H%0d7H
+%0d7H%0d7HWVQQ#=q(]G"q:eH#))sT$E+C<%0m=H%0m=qp\u!<"q:eH"q:eH"q:eH
+"q:eH"q:eH#))pS))VVs"q:bG"q?5="q?5="tp06"q<5a"q?7Wrrt=bW*+QRIf03K
+W<P"Y%K;t&TEbE#2;S9==U,-?"pY>A#(HLM$@W0a"q:bA"q:biq>V45%0d%A%0d%A
+%0d%A%0d%A%0d%A%0lY.(T7NI"pY>A"pY>A"pY>A"pY>A"pY>A0D>D^0*_[j"pY>A
+"pY>A"pY>A"pY>A"pY@3q#:YL"q:bA"q:bA=oA:,0*_[j"pY>A"pZgVrtYeD"q:bA
+"q:bA"q:bA"q:bA"q:bA=oJ@%Y6Ta\0*2S9%0%sgW<S#/%B*G80.p0Us"=JX#7[X)
+rs2d5W@n^Z=pD2.rsW'8Y:k9qaMCe.KEnL5rs=>_%0m=H%0m>Gqu7","q:eH"q:eH
+#$Um'(5)o%"q:eH"q:eH"q:eH"q:eH"q:eHp\tp\%0d7H%0d7H%0d7H%0d7H%0d8F
+o`#Y0%0m=H%0m=H%0m=H%0m=H%0m=qYP8&'=q(]G"q:eH#))mR$3gqE%0d7H%0d8F
+q>V3>"q:eH"q:eH"q:eH"q:eH"q:eH#))sT)_VYR%0eHi0*\B[%KEC3%>5/p0.9aO
+%54[b0D>DP0*\C/%5&*C%0l_0$Om<>#/QqJFUa!50Ac^8=q(ZF"q:bG#(HFK$4R1K
+"q:bG"q:ccqu7F7%0d7G%0d7G%0d7G%0d7G%0d7G%0lP+&VMeA%0d7G%0d7G%0d7G
+%0h:Nrt0\a%0d7G%0d7G%0d7G%0e\Cp&>>I"q:bG"q:bG=o84,W!3\8%0d7G%0d8p
+qYq<8%0d7G%0d7G%0d7G%0d7G%0d7G%9`]1!N6J-=pPNi/h[Ge=q+[8rsGq721uDk
+;_D!$%KD(^#?gj%$X*e70+Cg,-sEPY0DthN=q1L8!)ij5"ir<F=q.Ffrs>l4IThD.
+IThE'qYpo$IThD.IThD.ITlXK(9(Jj>(0Y.>(0Y.>(0Y.>(0Y.>(0Y.oD]5tKN\fh
+%0m=H%9e4Zm/IKmITd0c%0d7H%9eF`o)B#pIThD.IThD.WVZW%WEOsYIThD.IThF$
+rt^8kIThD.IThD.IThD.IThD.IThD.WW)o*2$Tu`0.8IX%>4s>rVm>+"ttW=-rU<Z
+KJ*NeK_bWW0*\C/#?#qmHj5%&#?h!)!sT!`%KF6JT:cCe"uUu3T)T&!#D?86/lOD&
+0*6e2YPeD-KEbVY%0d9?=pA1+rsu%;#-TZh;PAK2;@TR.#$Us)#_WD807:UW_,LA;
+!!e)TT)T1$%>50=;_B^-W<P$Prs17^22!W92$P`0rssbl#,j0a;LEY\;@P:."u#iQ
+$Om<>#/QqJFUa!5>(Q^GrsK8hKEb@-;_Bq2%B0+&#$D.6W!rs7q>Uu(%0j!h%8rjH
+TMc4PW<QQ%rrH:4s&oD#s1niZ#CZjdJcDDC!iZBQs"=R/;_AN4#6sr&">9rg#,q@t
+",%*fW;eLW;LEY8;?nkS"u#`N!sT!5%KF6JT6;l:#-!1RU&PL(%K?l8;c6O!W<S%L
+rrQ@/WVQPr0+BS6s"=\+TQZuO%54mi>5%t(KEeUbTY\^c%K?l@JcDGD$4SY;##eDu
+#(A37li.JK%54[b06V_dHr:E,0*X<+rsB2gIT""S_(L0@%>"PRrrT/(K`<\0;HZm,
+rs^XKrt).6%9f_8;gb6]TQUct=pJ4%rrXn`KFRps"+2bN#(cfKrrZC/KFRoYs"=G&
+#(H"?&:OfgKJ`s3G'nI\"q?5="uYuO"F^Q(#,)"4"J6-V#?cWXU]1[S#-S8[;LL0N
+0+ICM&ZAk<>5qbYI=.]8TIp\P=pA1"rrW]`KMqid"NUhI#)%R-U]1E#03Kt-;?IA]
+%575N&m>_KIY8.7I!0m\TMc5%W<Nf7nG`SD%>52j_$$BX=q([es.fT$%9e35I8YIt
+Y6TOIrt_Re%54\6%8rjBTR<D[TQUbtY:g><YO_\rKEnI\aT''Y;M83_JcDMF!X=)X
+s&'#J;?p>6K_,3\IKg$[W<OtQTQZuNI!)*)TQVplWEBH12=phNKFM&hTDu_0;D3J'
+JcDMF#n:&IG("O408'T&rsr9B#?n'0#?-#CI%Yj?#;?%K#bQMM>,YU0%9iE(!saK4
+I/^q`%9a3ls.fT##(?c(;LC*G=Uk*)+FXM(#,tc8#(1TeFeEme0<$T6FeGA"T:deG
+=fF%`#(H:G!tAF_;?"B6#(?cTJcDPG#n:&IG'nI3>(-\NrsDp="q=b80+E)tI/]cS
+;@Qg/#-V2>;So'CT>I300<\Og"q=c2rsAs`>("0-_$sQW>(Q^LrsAsZ##]Vl;@Qb6
+K`(ik=YBsg07JR3##]T:G+`u*-ng62"pY>iKJ+aHT>@0"_$O!D22$E3%0eIgqu6s-
+=Z'*nT>:_\#(cfLrtu8LKMnIdTa1T%%9eE<%0m=HKW'PW%8rjHrLa^)#DB#b#?q.2
+#7[Vb#COA/rkSo^;@P:_W*0B7#QIs-K`>3W#-S:3_#_VTs&oC3JcDMF"pQ_`06V_d
+s">:h0+A*p07JSQ=Ucu]FeF,TFeEme0<$T6#-%V%#H7n:0<$T6FoK2WTDu_;Fp8CZ
+W*+QR%0d7GIT\<'_$$BX=t^)2s.fT-KEnI\TR<D[0*cr0KN`gX%0odSqk+1A/e)!`
+"q<6^rs(1d#-V2>/ti3[!6G2V"a*`K%9eGarrfMY%<]bl_#jnF#?gm&"/plVWIb)Q
+rs=>f=YBuPFeEkTs"49Ur_a;MTR3>STV%m"0*ZlY2$O;=q#:\S#6m&=IKhEI_4U_C
+&td!_;CDtY#6o?o_4SPA#D<OhqYp^P#?`ng07j/,rr`Q9W"!q?TEoot%9f_a%0qRY
+rs48_%54ng%5+=Q_#VRU_#VRU_#VRU_$.oP%B*G8qYpe(%9eEgW<S$,s02MBW<P#/
+%8rjeTV%mLTV%mLTV%lT%0h972$OLCnc&ur0+A,7KRO+X;Sf")_#U,,_#U,,_$+rj
+07F+SqYpd00+A*p#,h`Ws0)G.=pHp<%5(PN_Z-8=T>I4J;@NjgKWd$<#$Rtnrro?(
+"q<5bs&oL002eJB_#VRU_$7tY%54mi=o&(&#)!3j"qCSAJcDnQ(,Z:LKRO+1"tidY
+"q:cc=fGO/"q=_6lMhWu0+A*j=fGOW"q:c7;0GhB"uV'_"uZ2U#7"B@"pZf\#(cfV
+rt9th%53C5s&t)Ss/:TS%0m=qK]N.GKE_kj%9eGbWEOsYKW)(X%0g#1rs(1d>,b\Y
+#D@[.XT&g0=UbQE"q:bG"q:bG07JT4rssd3"q:bG"q:bG"q:bG0<"RD"YV`:IP3R0
+s/>r'Y?HBYKN`h.YLrjYIThCX%0li9!Ih!<rrZGX>(2&&YQ"~>
+%-EOD-
+Q
+/DeviceRGB {} CS
+[0 0 0.502] SC
+q
+1.4433 w
+0 J
+1 j
+2.8 2.2 m
+56.8 56.2 290.8 56.2 290.8 56.2 c
+290.8 56.2 452.8 56.2 558.1 38.2 c
+S
+Q
+Q
+Q
+showpage
+%%PageTrailer
+pdfEndPage
+%%Trailer
+end
+%%DocumentSuppliedResources:
+%%EOF
+++ /dev/null
-all: Presentation.pdf
-
-REPEAT_TEXT = 'Rerun to get cross-references right'
-
-%.pdf: %.dvi
- dvipdf $(basename $@)
-
-%.ps: %.svg
- inkscape $(addsuffix .svg,$(basename $@)) --export-ps=$@
-
-Presentation.dvi: *.tex beamerthemerecore.sty images/*.ps
- latex '\scrollmode\input $(basename $@)' || exit 1; \
- latex '\scrollmode\input $(basename $@)' || exit 1; \
- while grep -s $(REPEAT_TEXT) $(addsuffix .log,$(basename $@)) ; do \
- latex '\scrollmode\input $(basename $@)' || exit 1; \
- done
-
-clean:
- rm -f *.ps *.pdf *.dvi *.log *.toc *.out *.aux *.bbl *.blg *.lof *.nav *.snm
+++ /dev/null
-\documentclass[hyperref={pdfpagelabels=false}]{beamer}
-
-\setbeameroption{show notes}
-
-\mode<presentation>
-{
- %\useinnertheme{echt}
- %\useinnertheme{proef}
- \usetheme{recore}
- \setbeamercovered{transparent}
-%\setbeamertemplate{footline}[frame number]
-}
-
-\usepackage[english]{babel}
-\usepackage[latin1]{inputenc}
-\usepackage{times}
-\usepackage[T1]{fontenc}
-\usepackage{acronym}
-\usepackage{tikz}
-\usepackage{multimedia}
-\usepackage{subfigure}
-\usepackage{booktabs}
-% Can use a tiny fontsize
-\usepackage{fancyvrb}
-
-
-%\usepackage{pgfpages}
-%\pgfpagesuselayout{4 on 1}[a4paper,border shrink=5mm]
-
-%For handouts, use the following two lines:
-%\usepackage{pgfpages}
-%\pgfpagesuselayout{2 on 1}[a4paper,border shrink=5mm]
-
-
-\title
-{MontiumC Transforming}
-
-\author {Matthijs Kooijman}
-
-\institute[Recore Systems and University of Twente]
-{
- \inst{}%
- Recore Systems
- \and
- \inst{}%
- Faculty of Electrical Engineering, Mathematics and Computer Science\\
- University of Twente
- }
-
-\begin{document}
-
-\begin{frame}
- \titlepage
-\end{frame}
-
-\begin{frame}{Contents}
- \tableofcontents
-\end{frame}
-
-\section{Introduction}
- \begin{frame}{Montium Tile Processor}
- \begin{itemize}
- \item Explicitely parallel processor
- \item Multilevel reconfiguration
- \item Separate memory addressing units
- \item Data oriented, limited control flow
- \item Redesign on the way
- \end{itemize}
- \end{frame}
-
- \begin{frame}{MontiumC}
- \begin{itemize}
- \item Subset of C
- \item Operations on data using MontiumC API
- \item Compilable by gcc (as C++)
- \item Under constant improvement
- \end{itemize}
- \end{frame}
-
- \begin{frame}{Low Level Virtual Machine (LLVM)}
- \begin{itemize}
- \item Compiler framework.
- \item Provides:
- \begin{itemize}
- \item C Frontend
- \item Intermediate representation (LLVM IR)
- \item Transformation passes
- \item Native codegenerators
- \item JIT compilation
- \end{itemize}
- \item Very modular
- \end{itemize}
- \end{frame}
-
- \begin{frame}{Compiling MontiumC}
- \pgfdeclareimage[width=\textwidth]{Compiling}{images/Compiling}
- \pgfuseimage{Compiling}
- \begin{itemize}
- \item Focus: montiumccfe and transformations
- \end{itemize}
- \end{frame}
-
-\section{Tasks}
-
- \subsection{Original tasks}
- \begin{frame}{Original tasks}
- \begin{itemize}
- \item Select LLVM transformations
- \item Improve and add transformations
- \item Provide debugging information
- \end{itemize}
- \end{frame}
-
- \subsection{Extra tasks}
- \begin{frame}{Extra tasks}
- \begin{itemize}
- \item What is MontiumC?
- \item What is Montium IR?
- \item Reconfigurable binaries
- \end{itemize}
- \end{frame}
-
- \begin{frame}{What is MontiumC?}
- \note{Two angles: What do we want, and what do we support.}
- \begin{itemize}
- \item Status: Specification is ongoing
- \item Challenges:
- \begin{itemize}
- \item Clang is nontransparent
- \note[item]{Clang --- A lot of special cases}
- \item C is complex
- \note[item]{Complex C --- A lot of corner cases}
- \item C is limited
- \note[item]{Limited C --- Need to use annotations, limited amount of types}
- \item Assembly vs. High level
- \note[item]{Tradeoffs -- Code size vs compiler complexity, clarity
- vs control, clarity vs determinism}
- \end{itemize}
- \end{itemize}
- \end{frame}
-
- \begin{frame}[containsverbatim]
- \begin{columns}
- \begin{column}{0.5\textwidth}
- Low level
- \begin{Verbatim}[fontsize=\tiny]
-mem input;
-mem output;
-word factor;
-
-void run(void) {
- factor = from_int(2);
- input = alloc_mem(P0M0);
- output = alloc_mem(P0M1);
- set_base(input, 0);
- set_offset(input, 0);
- set_base(output, -1);
- set_offset(output, -1);
-
- next_cycle();
- word in = read_mem(input);
- word out = p0o0(imul(ra1(in), rc1(factor)))
- add_offset(input, 1);
- add_offset(output, 1);
- init_loop(LC1, 8);
- do {
- write_mem(output, out);
- in = read_mem(input);
- out = p0m0(imul(ra1(in), rc1(factor)))
- add_offset(input, 1);
- add_offset(output, 1);
- } while(loop_next(LC1));
-
- write_mem(output, out);
-\end{Verbatim}
- \end{column}
- \begin{column}{0.5\textwidth}
- High level
- \begin{Verbatim}[fontsize=\tiny]
-P0M0 int input[10];
-P0M1 int output[10];
-
-void run(void) {
- for (int i=0; i<10; ++i)
- output[i] = input[i] * 2;
-}
- \end{Verbatim}
- \end{column}
- \end{columns}
- \end{frame}
- \note{} % Empty filler note page
-
- \begin{frame}{What is Montium IR?}
- \begin{itemize}
- \item Status: Initial version
- \item Challenges:
- \begin{itemize}
- \item Backend is a fast moving target
- \item Corner cases
- \note[item]{Corner case --- global constants}
- \item Hardware dependencies
- \note[item]{Hardware --- Limited number of conditionals possible}
- \end{itemize}
- \end{itemize}
- \end{frame}
-
- \begin{frame}{Selecting LLVM transformations}
- \begin{itemize}
- \item Status: Done
- \item Challenges:
- \begin{itemize}
- \item LLVM Passes assume a lot
- \note[item]{Assumptions --- Immediates are not free}
- \item Montium has specific constraints
- \note[item]{Constraint --- Implicit cycle boundaries and ordering}
- \end{itemize}
- \end{itemize}
- \end{frame}
-
- \begin{frame}{Improving / adding transformations}
- \begin{itemize}
- \item Status: Ongoing
- \item Challenges:
- \begin{itemize}
- \item Staying generic
- \note[item]{Generic --- LLVM maintained passes are a lot easier}
- \item New LLVM features
- \note[item]{Features --- Multiple return values, inlining and
- annotation attributes}
- \end{itemize}
- \end{itemize}
- \end{frame}
-
- \begin{frame}{Debugging information}
- \begin{itemize}
- \item Status: Not started
- \item Challenges:
- \begin{itemize}
- \item Not much LLVM support yet
- \note[item]{LLVM support --- New in clang/backend, no support in
- transformations yet.}
- \item Transformations
- \note[item]{Transformations --- Global arguments, argument addition,
- removal, etc.}
- \end{itemize}
- \end{itemize}
- \end{frame}
-
- \begin{frame}{Reconfigurable binaries}
- \begin{itemize}
- \item Status: Recently started
- \item Challenges:
- \begin{itemize}
- \item Tracking variables
- \note[item]{Tracking --- Through all steps of the process}
- \item Loss of optimizations
- \note[item]{Optimizations --- Hard to encode constraints}
- \item Mostly a backend problem
- \end{itemize}
- \end{itemize}
- \end{frame}
-
-\section{Work process}
- \begin{frame}{Working at Recore}
- \begin{itemize}
- \item Smart people
- \item Fast communication
- \note[item]{Communication --- Mixed teams, easy to "listen in".}
- \item Constructive brainstorming
- \note[item]{Brainstorming --- Evaluating different ideas and approaches.}
- \end{itemize}
- \end{frame}
-
- \begin{frame}{Working with LLVM}
- \begin{itemize}
- \item Large community
- \note[item]{Community --- Companies involved, a lot of full time
- developers.}
- \item Great support
- \note[item]{Support --- mailing list, bug reports solved within 1/2 days.}
- \item Slightly conflicting goals
- \note[item]{Goals --- LLVM aims mainly at "regular" architectures.}
- \end{itemize}
- \end{frame}
-
-\section{Conclusions}
- \begin{frame}{Conclusions}
- \begin{itemize}
- \item LLVM is very suitable
- \item Defining the problem is harder than solving it
- \item Three months is short!
- \end{itemize}
- \end{frame}
-
-\end{document}
+++ /dev/null
-\mode<presentation>
-
-%\setbeamerfont{block title}{size={}}
-
-\setbeamercolor*{footer}{parent=structure,bg=recoreblue}
-\setbeamercolor*{date in head/foot}{parent=footer}
-\setbeamercolor*{confidential in head/foot}{parent=footer,fg=gray}
-
-\setbeamercolor*{section in head/foot}{parent=palette tertiary}
-\setbeamercolor*{subsection in head/foot}{parent=palette primary}
-
-\defbeamertemplate*{footline}{recore}
-{
- \leavevmode%
- \hbox{%
- \begin{beamercolorbox}[wd=.5\paperwidth,ht=2.25ex,dp=1ex,left]{date in head/foot}%
- \usebeamerfont{date in head/foot}\hspace*{2ex}%
- \insertframenumber{} / \inserttotalframenumber%
- \hspace*{2em}\insertshortdate{}%
- \end{beamercolorbox}%
- \begin{beamercolorbox}[wd=.5\paperwidth,ht=2.25ex,dp=1ex,right]{confidential in head/foot}%
- \usebeamerfont{confidential in head/foot}Confidential
- \end{beamercolorbox}%
- }%
- \vskip0pt%
-}
-
-\defbeamertemplate*{headline}{recore}
-{
- \leavevmode%
- \pgfdeclareimage[width=\paperwidth]{recore_logo_bow}{images/recore_logo_bow}%
- \pgfuseimage{recore_logo_bow}%
-}
-
-%\setbeamersize{text margin left=1em,text margin right=1em}
-
-\definecolor{recoreblue}{RGB}{0,75,133}
-\definecolor{recoreorange}{RGB}{249,160,058}
-
-\setbeamercolor*{normal text}{fg=recoreblue,bg=white}
-
-\setbeamercolor*{example text}{fg=green!65!black}
-
-\setbeamercolor*{structure}{fg=recoreorange}
-
-\setbeamercolor{palette primary}{use={structure,normal text},fg=structure.fg,bg=normal text.bg!75!black}
-\setbeamercolor{palette secondary}{use={structure,normal text},fg=structure.fg,bg=normal text.bg!60!black}
-\setbeamercolor{palette tertiary}{use={structure,normal text},fg=structure.fg,bg=normal text.bg!45!black}
-\setbeamercolor{palette quaternary}{use={structure,normal text},fg=structure.fg,bg=normal text.bg!30!black}
-
-\setbeamercolor*{block body}{bg=normal text.bg!90!black}
-\setbeamercolor*{block body alerted}{bg=normal text.bg!90!black}
-\setbeamercolor*{block body example}{bg=normal text.bg!90!black}
-\setbeamercolor*{block title}{parent=structure,bg=normal text.bg!75!black}
-\setbeamercolor*{block title alerted}{use={normal text,alerted text},fg=alerted text.fg!75!normal text.fg,bg=normal text.bg!75!black}
-\setbeamercolor*{block title example}{use={normal text,example text},fg=example text.fg!75!normal text.fg,bg=normal text.bg!75!black}
-
-\setbeamercolor{item projected}{fg=black}
-
-\setbeamercolor*{sidebar}{parent=palette primary}
-
-\setbeamercolor{palette sidebar primary}{use=normal text,fg=normal text.fg}
-\setbeamercolor{palette sidebar secondary}{use=structure,fg=structure.fg}
-\setbeamercolor{palette sidebar tertiary}{use=normal text,fg=normal text.fg}
-\setbeamercolor{palette sidebar quaternary}{use=structure,fg=structure.fg}
-
-\setbeamercolor*{separation line}{}
-\setbeamercolor*{fine separation line}{}
-
-
-\mode
-<all>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="713.73669"
- height="138.20781"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.45.1"
- sodipodi:docbase="/home/kooijman/Documents/Internship/Progress presentation/images"
- sodipodi:docname="Compiling.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- version="1.0">
- <defs
- id="defs4">
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend"
- style="overflow:visible">
- <path
- id="path3345"
- d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Mend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Mend"
- style="overflow:visible">
- <path
- id="path3351"
- d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.4,0,0,-0.4,-4,0)" />
- </marker>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10000"
- guidetolerance="10"
- objecttolerance="10"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.4142136"
- inkscape:cx="359.52171"
- inkscape:cy="158.42162"
- inkscape:document-units="px"
- inkscape:current-layer="g3314"
- inkscape:window-width="1278"
- inkscape:window-height="963"
- inkscape:window-x="0"
- inkscape:window-y="15"
- showguides="true"
- inkscape:guide-bbox="true"
- width="21cm"
- height="29.7cm"
- units="cm" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(-14.255012,-26.907749)">
- <g
- id="g3180"
- transform="translate(-16.726286,-14.77335)">
- <path
- transform="translate(-34.343241,13.355705)"
- style="fill:#aeaeae;fill-opacity:1;stroke:#000000;stroke-opacity:1"
- d="M 138.32693 97.429298 A 36.251198 35.297218 0 1 1 65.824539,97.429298 A 36.251198 35.297218 0 1 1 138.32693 97.429298 z"
- sodipodi:ry="35.297218"
- sodipodi:rx="36.251198"
- sodipodi:cy="97.429298"
- sodipodi:cx="102.07574"
- id="path3170"
- sodipodi:type="arc" />
- <flowRoot
- transform="translate(-5.0214103,-64.733604)"
- id="flowRoot3172"
- xml:space="preserve"><flowRegion
- id="flowRegion3174"><rect
- y="168.02374"
- x="41.975071"
- height="36.251198"
- width="93.489929"
- id="rect3176" /></flowRegion><flowPara
- id="flowPara3178">MontiumC</flowPara></flowRoot> </g>
- <g
- id="g3314"
- transform="matrix(0.7031005,0,0,1,9.5385053,-18.589261)">
- <rect
- y="45.925751"
- x="142.07994"
- height="137.35033"
- width="412.09082"
- id="rect3187"
- style="fill:none;stroke:#000000;stroke-width:1.02262473;stroke-opacity:1" />
- <flowRoot
- transform="translate(4.3300162,-7.3223024)"
- id="flowRoot3189"
- xml:space="preserve"><flowRegion
- id="flowRegion3191"><rect
- y="54.500244"
- x="143.09683"
- height="25.757431"
- width="201.28955"
- id="rect3193" /></flowRegion><flowPara
- id="flowPara3195">montiumccfe</flowPara></flowRoot> </g>
- <g
- id="g3224"
- transform="translate(-41.987664,-21.558106)">
- <rect
- y="67.998032"
- x="157.33481"
- height="99.143456"
- width="47.842403"
- id="rect3197"
- style="fill:none;stroke:#000000;stroke-width:0.85654122;stroke-opacity:1" />
- <flowRoot
- transform="translate(4.9229946,29.606816)"
- id="flowRoot3199"
- xml:space="preserve"><flowRegion
- id="flowRegion3201"><rect
- y="79.303696"
- x="160.26846"
- height="19.079578"
- width="63.916588"
- id="rect3203" /></flowRegion><flowPara
- id="flowPara3205">clang</flowPara></flowRoot> </g>
- <g
- id="g3217"
- transform="translate(38.184753,-4.3192682)">
- <rect
- y="50.812233"
- x="253.73969"
- height="99.037376"
- width="103.06709"
- id="rect3207"
- style="fill:none;stroke:#000000;stroke-width:0.96262336;stroke-opacity:1" />
- <flowRoot
- transform="translate(3.1970634,10.687314)"
- id="flowRoot3209"
- xml:space="preserve"><flowRegion
- id="flowRegion3211"><rect
- y="82.165634"
- x="257.57431"
- height="19.079578"
- width="91.581978"
- id="rect3213" /></flowRegion><flowPara
- id="flowPara3215">Transformation</flowPara></flowRoot> </g>
- <g
- id="g3248"
- transform="translate(97.220016,3.9276496)">
- <rect
- y="42.565315"
- x="426.55948"
- height="99.037376"
- width="103.06709"
- id="rect3233"
- style="fill:none;stroke:#000000;stroke-width:0.96262336;stroke-opacity:1" />
- <flowRoot
- transform="translate(178.0354,1.2773104)"
- id="flowRoot3235"
- xml:space="preserve"><flowRegion
- id="flowRegion3237"><rect
- y="82.165634"
- x="257.57431"
- height="19.079578"
- width="91.581978"
- id="rect3239" /></flowRegion><flowPara
- id="flowPara3241">SynC backend</flowPara></flowRoot> </g>
- <g
- transform="translate(386.41162,-14.77335)"
- id="g3267">
- <g
- id="g3294">
- <path
- sodipodi:type="arc"
- id="path3257"
- sodipodi:cx="102.07574"
- sodipodi:cy="97.429298"
- sodipodi:rx="36.251198"
- sodipodi:ry="35.297218"
- d="M 138.32693 97.429298 A 36.251198 35.297218 0 1 1 65.824539,97.429298 A 36.251198 35.297218 0 1 1 138.32693 97.429298 z"
- style="fill:#aeaeae;fill-opacity:1;stroke:#000000;stroke-opacity:1"
- transform="translate(-29.101838,13.355705)" />
- <flowRoot
- xml:space="preserve"
- id="flowRoot3259"
- transform="translate(-3.5915308,-64.733604)"><flowRegion
- id="flowRegion3261"><rect
- id="rect3263"
- width="93.489929"
- height="36.251198"
- x="41.975071"
- y="168.02374" /></flowRegion><flowPara
- id="flowPara3265">Montium IR</flowPara></flowRoot> </g>
- </g>
- <g
- transform="translate(159.79796,-14.77335)"
- id="g3274">
- <path
- transform="translate(-34.343241,13.355705)"
- style="fill:#aeaeae;fill-opacity:1;stroke:#000000;stroke-opacity:1"
- d="M 138.32693 97.429298 A 36.251198 35.297218 0 1 1 65.824539,97.429298 A 36.251198 35.297218 0 1 1 138.32693 97.429298 z"
- sodipodi:ry="35.297218"
- sodipodi:rx="36.251198"
- sodipodi:cy="97.429298"
- sodipodi:cx="102.07574"
- id="path3276"
- sodipodi:type="arc" />
- <flowRoot
- transform="translate(2.1944101,-64.833213)"
- id="flowRoot3278"
- xml:space="preserve"><flowRegion
- id="flowRegion3280"><rect
- y="168.02374"
- x="41.975071"
- height="36.251198"
- width="93.489929"
- id="rect3282" /></flowRegion><flowPara
- id="flowPara3284">LLVM IR</flowPara></flowRoot> </g>
- <g
- transform="translate(749.40184,-241.27515)"
- id="g3321">
- <g
- id="g3323">
- <path
- sodipodi:type="arc"
- id="path3325"
- sodipodi:cx="102.07574"
- sodipodi:cy="97.429298"
- sodipodi:rx="36.251198"
- sodipodi:ry="35.297218"
- d="M 138.32693 97.429298 A 36.251198 35.297218 0 1 1 65.824539,97.429298 A 36.251198 35.297218 0 1 1 138.32693 97.429298 z"
- style="fill:#aeaeae;fill-opacity:1;stroke:#000000;stroke-opacity:1"
- transform="translate(-160.23705,239.8575)" />
- <flowRoot
- xml:space="preserve"
- id="flowRoot3327"
- transform="translate(-147.46893,153.10511)"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Bitstream Vera Sans"><flowRegion
- id="flowRegion3329"><rect
- id="rect3331"
- width="93.489929"
- height="36.251198"
- x="41.975071"
- y="168.02374"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Bitstream Vera Sans" /></flowRegion><flowPara
- id="flowPara3333">Montium </flowPara><flowPara
- id="flowPara3335">binary</flowPara></flowRoot> </g>
- </g>
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow1Lend);stroke-opacity:1"
- d="M 87.757408,96.011653 L 114.91887,96.011653"
- id="path3337"
- inkscape:connector-type="polyline"
- inkscape:connection-start="#g3180"
- inkscape:connection-end="#g3224" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-mid:none;marker-end:url(#Arrow1Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 163.61782,96.011653 L 190.77926,96.011653"
- id="path3541"
- inkscape:connector-type="polyline"
- inkscape:connection-start="#g3224"
- inkscape:connection-end="#g3274" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Lend);stroke-opacity:1"
- d="M 264.28165,96.011653 L 291.44313,96.011653"
- id="path3543"
- inkscape:connector-type="polyline"
- inkscape:connection-start="#g3274"
- inkscape:connection-end="#g3217" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Lend);stroke-opacity:1"
- d="M 395.47284,96.011653 L 422.63432,96.011653"
- id="path3545"
- inkscape:connector-type="polyline"
- inkscape:connection-start="#g3217"
- inkscape:connection-end="#g3267" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-mid:none;marker-end:url(#Arrow1Lend);stroke-opacity:1"
- d="M 496.13672,96.011653 L 523.29818,96.011653"
- id="path3547"
- inkscape:connector-type="polyline"
- inkscape:connection-start="#g3267"
- inkscape:connection-end="#g3248" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Lend);stroke-opacity:1"
- d="M 627.3279,96.011651 L 654.48933,96.01165"
- id="path3549"
- inkscape:connector-type="polyline"
- inkscape:connection-start="#g3248"
- inkscape:connection-end="#g3321" />
- </g>
-</svg>
+++ /dev/null
-The recore_logo_bow postscript file was created using pdftops on the pdf file.
-
-The pdf file was created using OpenOffice draw, by importing the logo eps file
-and manually drawing a new bow, based on the eps file (using the imported eps
-file didn't work, since it is not transparent). Using the export to pdf function
-produced the pdf.
+++ /dev/null
-%!PS-Adobe-3.0
-%%Creator: Draw
-%%LanguageLevel: 2
-%%DocumentSuppliedResources: (atend)
-%%DocumentMedia: plain 562 63 0 () ()
-%%BoundingBox: 0 0 562 63
-%%Pages: 1
-%%EndComments
-%%BeginDefaults
-%%PageMedia: plain
-%%EndDefaults
-%%BeginProlog
-%%BeginResource: procset xpdf 3.00 0
-%%Copyright: Copyright 1996-2004 Glyph & Cog, LLC
-/xpdf 75 dict def xpdf begin
-% PDF special state
-/pdfDictSize 15 def
-/pdfSetup {
- 3 1 roll 2 array astore
- /setpagedevice where {
- pop 3 dict begin
- /PageSize exch def
- /ImagingBBox null def
- /Policies 1 dict dup begin /PageSize 3 def end def
- { /Duplex true def } if
- currentdict end setpagedevice
- } {
- pop pop
- } ifelse
-} def
-/pdfStartPage {
- pdfDictSize dict begin
- /pdfFillCS [] def
- /pdfFillXform {} def
- /pdfStrokeCS [] def
- /pdfStrokeXform {} def
- /pdfFill [0] def
- /pdfStroke [0] def
- /pdfFillOP false def
- /pdfStrokeOP false def
- /pdfLastFill false def
- /pdfLastStroke false def
- /pdfTextMat [1 0 0 1 0 0] def
- /pdfFontSize 0 def
- /pdfCharSpacing 0 def
- /pdfTextRender 0 def
- /pdfTextRise 0 def
- /pdfWordSpacing 0 def
- /pdfHorizScaling 1 def
- /pdfTextClipPath [] def
-} def
-/pdfEndPage { end } def
-% PDF color state
-/cs { /pdfFillXform exch def dup /pdfFillCS exch def
- setcolorspace } def
-/CS { /pdfStrokeXform exch def dup /pdfStrokeCS exch def
- setcolorspace } def
-/sc { pdfLastFill not { pdfFillCS setcolorspace } if
- dup /pdfFill exch def aload pop pdfFillXform setcolor
- /pdfLastFill true def /pdfLastStroke false def } def
-/SC { pdfLastStroke not { pdfStrokeCS setcolorspace } if
- dup /pdfStroke exch def aload pop pdfStrokeXform setcolor
- /pdfLastStroke true def /pdfLastFill false def } def
-/op { /pdfFillOP exch def
- pdfLastFill { pdfFillOP setoverprint } if } def
-/OP { /pdfStrokeOP exch def
- pdfLastStroke { pdfStrokeOP setoverprint } if } def
-/fCol {
- pdfLastFill not {
- pdfFillCS setcolorspace
- pdfFill aload pop pdfFillXform setcolor
- pdfFillOP setoverprint
- /pdfLastFill true def /pdfLastStroke false def
- } if
-} def
-/sCol {
- pdfLastStroke not {
- pdfStrokeCS setcolorspace
- pdfStroke aload pop pdfStrokeXform setcolor
- pdfStrokeOP setoverprint
- /pdfLastStroke true def /pdfLastFill false def
- } if
-} def
-% build a font
-/pdfMakeFont {
- 4 3 roll findfont
- 4 2 roll matrix scale makefont
- dup length dict begin
- { 1 index /FID ne { def } { pop pop } ifelse } forall
- /Encoding exch def
- currentdict
- end
- definefont pop
-} def
-/pdfMakeFont16 {
- exch findfont
- dup length dict begin
- { 1 index /FID ne { def } { pop pop } ifelse } forall
- /WMode exch def
- currentdict
- end
- definefont pop
-} def
-% graphics state operators
-/q { gsave pdfDictSize dict begin } def
-/Q {
- end grestore
- /pdfLastFill where {
- pop
- pdfLastFill {
- pdfFillOP setoverprint
- } {
- pdfStrokeOP setoverprint
- } ifelse
- } if
-} def
-/cm { concat } def
-/d { setdash } def
-/i { setflat } def
-/j { setlinejoin } def
-/J { setlinecap } def
-/M { setmiterlimit } def
-/w { setlinewidth } def
-% path segment operators
-/m { moveto } def
-/l { lineto } def
-/c { curveto } def
-/re { 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
- neg 0 rlineto closepath } def
-/h { closepath } def
-% path painting operators
-/S { sCol stroke } def
-/Sf { fCol stroke } def
-/f { fCol fill } def
-/f* { fCol eofill } def
-% clipping operators
-/W { clip newpath } def
-/W* { eoclip newpath } def
-/Ws { strokepath clip newpath } def
-% text state operators
-/Tc { /pdfCharSpacing exch def } def
-/Tf { dup /pdfFontSize exch def
- dup pdfHorizScaling mul exch matrix scale
- pdfTextMat matrix concatmatrix dup 4 0 put dup 5 0 put
- exch findfont exch makefont setfont } def
-/Tr { /pdfTextRender exch def } def
-/Ts { /pdfTextRise exch def } def
-/Tw { /pdfWordSpacing exch def } def
-/Tz { /pdfHorizScaling exch def } def
-% text positioning operators
-/Td { pdfTextMat transform moveto } def
-/Tm { /pdfTextMat exch def } def
-% text string operators
-/cshow where {
- pop
- /cshow2 {
- dup {
- pop pop
- 1 string dup 0 3 index put 3 index exec
- } exch cshow
- pop pop
- } def
-}{
- /cshow2 {
- currentfont /FontType get 0 eq {
- 0 2 2 index length 1 sub {
- 2 copy get exch 1 add 2 index exch get
- 2 copy exch 256 mul add
- 2 string dup 0 6 5 roll put dup 1 5 4 roll put
- 3 index exec
- } for
- } {
- dup {
- 1 string dup 0 3 index put 3 index exec
- } forall
- } ifelse
- pop pop
- } def
-} ifelse
-/awcp {
- exch {
- false charpath
- 5 index 5 index rmoveto
- 6 index eq { 7 index 7 index rmoveto } if
- } exch cshow2
- 6 {pop} repeat
-} def
-/Tj {
- fCol
- 1 index stringwidth pdfTextMat idtransform pop
- sub 1 index length dup 0 ne { div } { pop pop 0 } ifelse
- pdfWordSpacing pdfHorizScaling mul 0 pdfTextMat dtransform 32
- 4 3 roll pdfCharSpacing pdfHorizScaling mul add 0
- pdfTextMat dtransform
- 6 5 roll Tj1
-} def
-/Tj16 {
- fCol
- 2 index stringwidth pdfTextMat idtransform pop
- sub exch div
- pdfWordSpacing pdfHorizScaling mul 0 pdfTextMat dtransform 32
- 4 3 roll pdfCharSpacing pdfHorizScaling mul add 0
- pdfTextMat dtransform
- 6 5 roll Tj1
-} def
-/Tj16V {
- fCol
- 2 index stringwidth pdfTextMat idtransform exch pop
- sub exch div
- 0 pdfWordSpacing pdfTextMat dtransform 32
- 4 3 roll pdfCharSpacing add 0 exch
- pdfTextMat dtransform
- 6 5 roll Tj1
-} def
-/Tj1 {
- 0 pdfTextRise pdfTextMat dtransform rmoveto
- currentpoint 8 2 roll
- pdfTextRender 1 and 0 eq {
- 6 copy awidthshow
- } if
- pdfTextRender 3 and dup 1 eq exch 2 eq or {
- 7 index 7 index moveto
- 6 copy
- currentfont /FontType get 3 eq { fCol } { sCol } ifelse
- false awcp currentpoint stroke moveto
- } if
- pdfTextRender 4 and 0 ne {
- 8 6 roll moveto
- false awcp
- /pdfTextClipPath [ pdfTextClipPath aload pop
- {/moveto cvx}
- {/lineto cvx}
- {/curveto cvx}
- {/closepath cvx}
- pathforall ] def
- currentpoint newpath moveto
- } {
- 8 {pop} repeat
- } ifelse
- 0 pdfTextRise neg pdfTextMat dtransform rmoveto
-} def
-/TJm { pdfFontSize 0.001 mul mul neg 0
- pdfTextMat dtransform rmoveto } def
-/TJmV { pdfFontSize 0.001 mul mul neg 0 exch
- pdfTextMat dtransform rmoveto } def
-/Tclip { pdfTextClipPath cvx exec clip newpath
- /pdfTextClipPath [] def } def
-% Level 2 image operators
-/pdfImBuf 100 string def
-/pdfIm {
- image
- { currentfile pdfImBuf readline
- not { pop exit } if
- (%-EOD-) eq { exit } if } loop
-} def
-/pdfImM {
- fCol imagemask
- { currentfile pdfImBuf readline
- not { pop exit } if
- (%-EOD-) eq { exit } if } loop
-} def
-/pr { 2 index 2 index 3 2 roll putinterval 4 add } def
-/pdfImClip {
- gsave
- 0 2 4 index length 1 sub {
- dup 4 index exch 2 copy
- get 5 index div put
- 1 add 3 index exch 2 copy
- get 3 index div put
- } for
- pop pop rectclip
-} def
-/pdfImClipEnd { grestore } def
-% shading operators
-/colordelta {
- false 0 1 3 index length 1 sub {
- dup 4 index exch get 3 index 3 2 roll get sub abs 0.004 gt {
- pop true
- } if
- } for
- exch pop exch pop
-} def
-/funcCol { func n array astore } def
-/funcSH {
- dup 0 eq {
- true
- } {
- dup 6 eq {
- false
- } {
- 4 index 4 index funcCol dup
- 6 index 4 index funcCol dup
- 3 1 roll colordelta 3 1 roll
- 5 index 5 index funcCol dup
- 3 1 roll colordelta 3 1 roll
- 6 index 8 index funcCol dup
- 3 1 roll colordelta 3 1 roll
- colordelta or or or
- } ifelse
- } ifelse
- {
- 1 add
- 4 index 3 index add 0.5 mul exch 4 index 3 index add 0.5 mul exch
- 6 index 6 index 4 index 4 index 4 index funcSH
- 2 index 6 index 6 index 4 index 4 index funcSH
- 6 index 2 index 4 index 6 index 4 index funcSH
- 5 3 roll 3 2 roll funcSH pop pop
- } {
- pop 3 index 2 index add 0.5 mul 3 index 2 index add 0.5 mul
- funcCol sc
- dup 4 index exch mat transform m
- 3 index 3 index mat transform l
- 1 index 3 index mat transform l
- mat transform l pop pop h f*
- } ifelse
-} def
-/axialCol {
- dup 0 lt {
- pop t0
- } {
- dup 1 gt {
- pop t1
- } {
- dt mul t0 add
- } ifelse
- } ifelse
- func n array astore
-} def
-/axialSH {
- dup 0 eq {
- true
- } {
- dup 8 eq {
- false
- } {
- 2 index axialCol 2 index axialCol colordelta
- } ifelse
- } ifelse
- {
- 1 add 3 1 roll 2 copy add 0.5 mul
- dup 4 3 roll exch 4 index axialSH
- exch 3 2 roll axialSH
- } {
- pop 2 copy add 0.5 mul
- axialCol sc
- exch dup dx mul x0 add exch dy mul y0 add
- 3 2 roll dup dx mul x0 add exch dy mul y0 add
- dx abs dy abs ge {
- 2 copy yMin sub dy mul dx div add yMin m
- yMax sub dy mul dx div add yMax l
- 2 copy yMax sub dy mul dx div add yMax l
- yMin sub dy mul dx div add yMin l
- h f*
- } {
- exch 2 copy xMin sub dx mul dy div add xMin exch m
- xMax sub dx mul dy div add xMax exch l
- exch 2 copy xMax sub dx mul dy div add xMax exch l
- xMin sub dx mul dy div add xMin exch l
- h f*
- } ifelse
- } ifelse
-} def
-/radialCol {
- dup t0 lt {
- pop t0
- } {
- dup t1 gt {
- pop t1
- } if
- } ifelse
- func n array astore
-} def
-/radialSH {
- dup 0 eq {
- true
- } {
- dup 8 eq {
- false
- } {
- 2 index dt mul t0 add radialCol
- 2 index dt mul t0 add radialCol colordelta
- } ifelse
- } ifelse
- {
- 1 add 3 1 roll 2 copy add 0.5 mul
- dup 4 3 roll exch 4 index radialSH
- exch 3 2 roll radialSH
- } {
- pop 2 copy add 0.5 mul dt mul t0 add
- radialCol sc
- encl {
- exch dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
- 0 360 arc h
- dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
- 360 0 arcn h f
- } {
- 2 copy
- dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
- a1 a2 arcn
- dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
- a2 a1 arcn h
- dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
- a1 a2 arc
- dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
- a2 a1 arc h f
- } ifelse
- } ifelse
-} def
-end
-%%EndResource
-%%EndProlog
-%%BeginSetup
-xpdf begin
-562 63 false pdfSetup
-%%EndSetup
-%%Page: 1 1
-%%BeginPageSetup
-%%PageOrientation: Portrait
-pdfStartPage
-0 0 562 63 re W
-%%EndPageSetup
-[] 0 d
-1 i
-0 j
-0 J
-10 M
-1 w
-/DeviceGray {} cs
-[0] sc
-/DeviceGray {} CS
-[0] SC
-false op
-false OP
-{} settransfer
-q
-0.1 w
-q
-0 -0.4 561.7 63.4 re
-W*
-q
-[76.9 0 0 20.7 2.8 35.6] cm
-[/Indexed /DeviceRGB 255 <
- 0000330000660000990000cc003300003333003366003399
- 0033cc0033ff0066000066330066660066990066cc0066ff
- 0099000099330099660099990099cc0099ff00cc0000cc33
- 00cc6600cc9900cccc00ccff00ff3300ff6600ff9900ffcc
- 3300003300333300663300993300cc3300ff333300333333
- 3333663333993333cc3333ff336600336633336666336699
- 3366cc3366ff3399003399333399663399993399cc3399ff
- 33cc0033cc3333cc6633cc9933cccc33ccff33ff0033ff33
- 33ff6633ff9933ffcc33ffff660000660033660066660099
- 6600cc6600ff6633006633336633666633996633cc6633ff
- 6666006666336666666666996666cc6666ff669900669933
- 6699666699996699cc6699ff66cc0066cc3366cc6666cc99
- 66cccc66ccff66ff0066ff3366ff6666ff9966ffcc66ffff
- 9900009900339900669900999900cc9900ff993300993333
- 9933669933999933cc9933ff996600996633996666996699
- 9966cc9966ff9999009999339999669999999999cc9999ff
- 99cc0099cc3399cc6699cc9999cccc99ccff99ff0099ff33
- 99ff6699ff9999ffcc99ffffcc0000cc0033cc0066cc0099
- cc00cccc00ffcc3300cc3333cc3366cc3399cc33cccc33ff
- cc6600cc6633cc6666cc6699cc66cccc66ffcc9900cc9933
- cc9966cc9999cc99cccc99ffcccc00cccc33cccc66cccc99
- ccccccccccffccff00ccff33ccff66ccff99ccffccccffff
- ff0033ff0066ff0099ff00ccff3300ff3333ff3366ff3399
- ff33ccff33ffff6600ff6633ff6666ff6699ff66ccff66ff
- ff9900ff9933ff9966ff9999ff99ccff99ffffcc00ffcc33
- ffcc66ffcc99ffccccffccffffff33ffff66ffff99ffffcc
- 110000001100000011111111220000002200000022222222
- 440000004400000044444444550000005500000055555555
- 770000007700000077777777880000008800000088888888
- aa000000aa000000aaaaaaaabb000000bb000000bbbbbbbb
- dd000000dd000000ddddddddee000000ee000000eeeeeeee
- 0000000000ff00ff0000ffffff0000ff00ffffff00ffffff
->] setcolorspace
-<<
- /ImageType 1
- /Width 297
- /Height 79
- /ImageMatrix [297 0 0 -79 0 79]
- /BitsPerComponent 8
- /Decode [0 255]
- /DataSource currentfile
- /ASCII85Decode filter
- /RunLengthDecode filter
->>
-pdfIm
-qu7)(=q(]G"q:eH"q=ahg]%XbKE_kj%0d7H%9frds-Wft2$OKoITh2'ITh1)%0d7p
-IcCA>WEK`8%0d8EITh2'IKg5c22$P\SGs>&%0g"7ITd0c%0d8FIY=n.%0d7pWTX9q
->$2%=#C_?0>(0Wa#;o\<s*b.]W.Fu?rtpCu#,kZ603Wh(KW$P-0*_]1KW$O5"ttYq
-rsO8[%0h97IP1p10.?iQ!)rnM"pPMiW%SU5JcDAB#Rq$<03X&/WW3!t"/r2PWW.DR
-0+A,=s+CRc0<+F?!a6$;s&oH&0E2In02bqNI8YK:I<L$:0*\U5%B+jXU&P1C#-%VU
-"f_O$YGeH#VuqLIIY@`Ms&o[5%54Y_%0eJ=oD];L"q<5a=Z$C:/lOB$;H*Qm$@Ga!
-G'nHd#,qe[JcDGD!s^\e%K6;7WJ"DX=fHkLIY<0's*b5P2$Z!l=pGL?pAY5n=pGN:
-KG4Y#"tqT-/lPYH;LMGk;LN_9G+a6_0*6e3WIb)Ert&<BKEkZ[WW.DV#(B]4"pYV;
-=Uom`IT]iQ=U#+6W@nJ\WVQQ:0*_]1KJ*N="tqAX/lOAU-jKqc"pY>A/pqhiFpE[0
-07j.urtJWAW<WC+s+Ci[KNa%4K`?^/%0g#9IK<W$s'#FU"UB^Z%0p)7s!"WO%54n<
-%0eHp0.p0U0.m\=KW)(XKNa&-=tZLrTMgFr%>"PSrrE<]s&p5;s/7SR2$OKo%0d7G
-IY</'%51j_>#SW)0*VV6KJ`rCK`D&s0*Vl=IKg5c%0eHi0*X'6IY</'%0d7G%0d8p
-%<eCf;D3J'JcDMF$4U0l=g+e(#H7o2rr3P5=q(ZF07JRX#;9"Z;d(hXrs]B?Y6PM?
-%0nbD=pGK@rs]Dj"tp2j>-D*="q<57W;ll$IKkHY;g/26!tAEC>(Q^LrsAsZ03Y<R
-W!ul7K_tcXW*'Q6#?e#Z#7Xii;uSEe#;<&0#6q/1#6kVA%0d7G%0h970*Vk=Ies'O
-#;:NYI!)(dIKk7Ps.oZ$%9a4>WMm!*KEh2N$A8Tm#DB$Z#?icar@\iiWEQJY%0m=I
-%0eHj%9fqg%0hKaq#:I$%9c\Xs.BH'rs`._s.oZ$#(A4/KW'P5=q10)#?_K?08+cY
-%K.pm%5.o="q:bG"q:bG"uV&e"q=c/rsB2gIP-"kTE_>!IY%NprsB3=IP7[RW<S"\
-WV$2pKEhr>s"=i[0+\RG#7UnI#7UkH#H:l9#?e"trsB![>#TgAHjs6g>(Q^LrrE=Q
-s&fPTW."u)%9`9%(G?!tIY7q10+BQ=%0d7G%0d%jW@nK0WUp,sKFM';/tdB8#(?c-
-s.fT$%0qP>WJ%5TY6TaNrs>W-#?q.2#;6N>rs]5=%0m?@KEhrinc&iI#H7p#I%XC;
-=o]"_s.fSu=Ug#nIY<1M=TLAan,Et/"ttW="q:bG"q:boKJ*NeK^f!K0+ERDG+a4\
-=Z$D7s.fT%IKlt\KRSS-2-LHfnc&\o#)$1[%0/']%0m+I#C_=8#Cc+@$4SYA;P83+
-#H7o\JcDMF$\Saf2(sD]IKofVIe3ROKJ`t40+A.>"q:bG#,s6\#-%%j$[r;/##]W;
-FUa!/=b6UIrr<9&=p'5,IP:_)!!i/r"fMk8W@n_\0*)M8rs])aY:g><m/IGH%B'_`
-TR9lqKEeW2s.]MtIKlbUIT_."0*58cK_GENKFJ-b0+A.>rs]/:%54Xa%9i,u$\Ssm
-IP.::TI>7B%>"PQrsN!>=q*-6=agUT#$Ud$"/lY6WVnIN%57_j">?q`%B0(%!iQR,
-p\tDG#-S8ZG5n3;%K?l@JcDDC$O/7e03MIW03N`.WVQPsKEh^\0E2If0+BQ=%9]V6
-%>=NV">:2g#DDmP$O/7e%<d,A;D3J'WIb)BrsOJars+!UIT$]S%57SX"/lY5YPU!Q
-%0NP4#$Ug%#H9?c0<#-bW;?N%=q.E6;P8E1#D<9jJcDAB%"o'm2(r-3=pKL0%>=ZZ
-"b[<hW%SV[0*_q>#7Z>D"u#cO$)n+<=fF'Q"q?7_rsK8hW!7WmTMc5P%9\8^T)T0O
-%>50n>#ST0W<QQ(rrcI/KN\i`0E2I`W&4c_q#:MH"q@Lg#6-=YW<Ng1rVm.P#-T[Y
-G+a49s&oC-JcD;@!e(?&r\"7Ss"=IW0*\ESrs+2^0<#./#;?)^",&N90DPPP2$P^e
-2$P]ds"=GP"uZAZ$O/8;%<d,AHj6MRIY%NhrsK8?Y6S60=t^>`%57YZ"fMk`W<P$U
-%0NP4#?pp&$*ORCrs]33/m2*P0*8<^>6"U2=q.E6;P8E1/qbkeW.Fu=rsW'?=Z%j2
-03SQ5=Ug&^rs:=f0;o'aKJ*NepAZ)2"ttW=##d-Q/e'I_"ttW=07F+QG'm0sKFKTk
-rtC'7>(0V'>(0V'>(0V'>(0V'>(6)C(5.->ITh2'ITh2'ITh2'ITh2'ITh2RoD]5t
-=agPa"q:bG#(BaSli.>rIP2-7%0d7GIT`Z@rtDA8IT_,'IT_,'IT_,'IT_,'ITc7A
-'j5uhIT_,'IT_,'IT_,'IT_,'IT_-srriW:KFKS;s"=HZW<Nh/rs(1d>(2-.#?g^!
-(9[s#KFKP4;HYU]KN\U`#-S8ZG+a49s&oF.WS[XkIKg5d%0d7H%0d7H%0d7H%0d7H
-%0g"7p\u"^#7UkH#7UkH#7UkH#7UkH#7UkH#CcCH&ZJqC#7UkH#7UkH#7UkH#7Xl+
-rt/ED"q:eH"q:eH"q:eH"q<5bp&>h3%0m=H%0m=H%0m=H%0m=H%0m=H%9fb)rtPtI
-%0m=H%0m=H%0m=H%0m=H%0m=Hqu6_H#(HD%!e(?&qu6gQ%9Y=g2=gbNIKhHY%5.ZY
-&5t1dKJ`s_=YFrGFaOCl"uY6:)-I1K%0d%A%0d%A%0d%A%0d%A%0d%A%54[Urt\`H
-"pY>A"pY>A"pY>A"pY>A"pY>A=nhq1IKg#]%0d%A%0d%A%0d%A%0d%AWV$3*IKg5c
-#6kVA#6kVA#6kVA#6kVA080*"(k)Yu"pY>A"pY>A"pY>A"pY>A"pY>A"u#`N'a=mI
-%0d%A%0d%A%0d%A%0d%A%0d(6rrW]7Y6Y(\#$NYhW*0G*qu6aO%0g#*rteiC>,Vl_
-I8YJG%B'`7%8rjHTEg-'%B/+_)MA;(#7UkH#7UkH#7UkH#7UkH#7UkH#7Um@qYq=a
-#7UkH#7UkH#7UkH#7UkH#7UkH#DDpQ(T:LB%0d7H%0d7H%0d7H%0d7H%0d7H>5%t4
-=p>E@%0d7H%0d7H%0d7H%0d7H%0d9?q#;48%0m=H%0m=H%0m=H%0m=H%0m=H%0m=H
->58+4%0d7H%0d7H%0d7H%0d7H%0d7H%0l\/"G@4e2$X%5rs]$_%57VY!iZAWmf+"T
-#(A37;HZn@"uZE6/pqhi/iA:k=ks#q=q(ZF"q:bG"q:bG"q:bG"q:bG"q:bG"q<6^
-rt\`H"q:bG"q:bG"q:bG"q:bG"q:bG>5A18%0d7G%0d7G%0d7G%0d7G%0d7G%0d7G
-W;-B12$OKo%0d7G%0d7G%0d7G%0d7G%0d7G%>=QW)L_l""q:bG"q:bG"q:bG"q:bG
-"q:bG"q:ccq>V06%0d7G%0d7G%0d7G%0d7G%0d7G%Jg#+0+ERDr@\9Y2-LGmjo5Bb
-#-\%[%T7^QI0L,cI!2/\%>7mig]&1F#7UkH#7UkH07I)X>(0Wa#7UkH#7UkH#7^P0
-(4HGs#7UkH#7W>>>(0Y.>(0Y.>(0YYqYqF:#7UkH#7UkH#7Ulj>$2%=#7UkH#7UkH
-#PnB<IKg5d%0d7H%0d7H=^$I`%0d7H%0d7H%0d:;ru,&M"q:eH"q:f?>(g(.>(d+i
-"q:eH"q:eH#5S96%0m=H%0m=H%9e3aKN`h.KN`h.KNe3O"/uJX=oSp90*VjiW%SU5
-jo5B8#-%VU!E+=F;?R2%G'nH40*6S,WS@FZ=UbQ?"q:bA#(HFK$E447"q:bA"q:cc
-qu6t*#6kVA#6kVAId[4DW!3\8#6kVA#6kWjr;R*W%0d%A%0d%A%>=TX$3g_>%0d%A
-%0d&?r;R.X#6kVA#6kVA#6oYRrs=,Y#6kVA#6kW?qYpjT#6kVA#6kVA#PnB*"q:bA
-"q:bA#4)9jKEeX[0*)M8rs]&7Y6S7mrt21=#H7o+G("O^I%Yk8#H7o2gA_J4#7UkH
-#7UkH>5A1)%0d7H%0d7H%9iZ/$%rKl#7UkH#7Xl)rsCCg#7UkH#7UkHW;?Ms0+A*p
-#QJ!&rsDp="q:eH"q:eH>5J7+W!rt@"q:eH"q:h6rs;j<"q:eH"q:fjq>U^)%0m=H
-%0m=Hq>U^0#7UkH#7UkHlMh8%#,qe9"q:eH0<#./jo5mF%54Xa;g*P3I!0lAW@n^6
-gA_I^%0d7G%0d7GIes'OW<Ne9%0d7G%0h:Yrt8KE"q:bG"q:bG"q:bG"q:bG0DGJQ
-%0d7G%0d7G%57MV!a:&+p&>=U"q:bG"q:bG#5J3*=UbQE"q:bG"q?7_rs=,Y%0d7G
-%0d8FqYpkT%0d7G%0d7G%Jg#:"q:bG"q:bG"q:bG"q:bG"q?7Xrs#D208'Q>#Q>24
-=oel-jo5fo%53/7I<L!]TIr**%9hHb)L_l"#7UkH#7W>>>(0Y.>(-Yb#7UkH#7UkH
-qYq.\#7UkH#7UkH#7UkH#7UkH0D>DP#7UkH#7UkH#Cbq;#mLhD%0d7H%0hL\rsG_0
-%0m=H%0m=HK_tcT=q(]G"q:eH#6.j;IThD.IP2-8%0d7H%0d7Hq>V$9"q:eH"q:eH
-"q:eH"q:eHW:Krt"ttW="q:bG"p]f=#,pY`$ni'C0*ZfII!#mO#6ri\)Hd:L%0d%A
-%0d%A%0d%A%0d%A%0d%A%0d&?qYq+0%0d%A%0d%A%0d%A%0d%jpAYJQ%0d%A%0d%A
-%9_rq#mUYD"pY>A"p\<*rs8o7%0d%A%0d&?qu7R`"q:bA"q:bA"q:bA"q:bA"q:bA
-"q:bA#-%Fu&-`@D%0d%A%0d%A%0d%A%>=<P%PJ9i=pGKA%0m=H%B'^?jSoVn%B'_6
-TR<D1>,Vl`g&DqC"q:eH"q:eH"q:eH"q:eH"q:eH"q:eH0DYVYKEhqj%0m=H%0m=H
-%0m=qp&>BUkH#7UkH#DD@A#mLhD%0d7H%0hL[rs8l=#7UkH#7Uljqu7O;%0m=H
-%0m=H%0m=H%0m=H%0m=H%0m=H>58+-%0d7H%0d7H%0d7H%0g#+rt'hm>(-Yb"q:bG
-"q:boKFKTrrsbq308'd4TQZt\IP2.`gA`!n%0d7G%0d7G%0d7G%0d7G%0d7G%0d8F
-q#:h,%0d7G%0d7G%0d7G%57>Q#n7(J"q:bG"q=c#rs9,=%0d7G%0d8Eq#:\S%0d7G
-%0d7G%9`T.(k)Yu"q:bG"q:bG"q:bG"q:bG"q:bG#,q:r%0d7G%0d7G%0d7G%0eKT
-rt,\EY6PL@%0m=H%0m=HKJ*cfjo5C8#Cc\+!.=g>"FLHR"qB;d(5)o%"q:eH"q:eH
-"q:eH"q:eH"q:fdpAYGJ"q:eH"q:eH>42Cs"q:eH"q:eH#$Ug%!NB8prs8o>"q:eH
-"q:eHq#:\S#7UkH#7UkH#H@V#(0V.O%0m=H%0m=H%0m=H%0m=H%0m>Gp&>:,#7UkH
-#7UkHm/I`J#,j0a"q:bG"q:bG"q:d90*d0lrsUahW!6.BTQO-cW!7_*rt\`H"pY>A
-"pY>i=ajK_"pY>A"pY>A0D>DP=U,-?"pY>A#(H"?$82Sm"pY>A"pY@3qYp_u"pY>i
-K_PKRIKg#]%0d%A%0h:Wrs8l="pY>A"pY>AqYq=["pY>A"pY>A07I%]"pY>A"pY>A
-"u#ZL#R1_B#6kVA#6sSq!Nub.=pGKA%0d7HKEhDb"pQ^cW@n^Zmf*?e%B04)"fMk`
-Y6TISTE#H$=o\f^rs=>`%0d7H%0d8Frr3<Y%0d7H%0d7H%9iN+$%rKl#7UkH#7Xl)
-rsPb7#7UkH#7UkH#H@Y$$%rNm"q:eH#)&rOrsPb7"q:eH"q:eH#))pS$`Pcg#7UkH
-#7UkH>5J7*=q(ZF#7UkH#DE*V$<dWC#7UkH#7Um@pAYC-#7UkH#7UkHmJdqT%>5/p
-%0d7G22%n4%0d7G%0ia8%>=6N",%*f%K$/6=q+Ul/tei0FUa!50AQR6=UbQE"q:bG
-#(HON$3gqD%0d7G%0d8pq#;+5%0d7G%0d7G03Na-IT_,'IT_,'ITcOI)D;O(%0d7G
-%0d7G%9\-`%0d7G%0d7G%0d8FqYqHe%0d7G%0d7G%0d8FIT\N4%0d7G%0d7G%0lY.
-$%<'f"q:bG"q=c8rsOJh"q:bG"q:bG#-%@s('Y3P%0d7G%0h8bIT_,'IT_,'IT_,Q
-r;RD.%9eDi%0d7H%>50o2$P]B0+@k6"/uJ6W:Blj%0hIj=o84-0+ERDG+bJE/q,G_
-W87I[IKg5d%0d7H%9i`1$a0dE"q:eH"q:eHW;6H/KEhqj%0m=H%0m=H%0m=H%0m=H
-%0m@=ru%d?%0m=H%0m=H%0m=H%0m=H%0m=H%0m=qq#;3b%0d7H%0d7H%0d7H%0d7H
-%0d7H%0d7HWVQQ#=q(]G"q:eH#))sT$E+C<%0m=H%0m=qp\u!<"q:eH"q:eH"q:eH
-"q:eH"q:eH#))pS))VVs"q:bG"q?5="q?5="tp06"q<5a"q?7Wrrt=bW*+QRIf03K
-W<P"Y%K;t&TEbE#2;S9==U,-?"pY>A#(HLM$@W0a"q:bA"q:biq>V45%0d%A%0d%A
-%0d%A%0d%A%0d%A%0lY.(T7NI"pY>A"pY>A"pY>A"pY>A"pY>A0D>D^0*_[j"pY>A
-"pY>A"pY>A"pY>A"pY@3q#:YL"q:bA"q:bA=oA:,0*_[j"pY>A"pZgVrtYeD"q:bA
-"q:bA"q:bA"q:bA"q:bA=oJ@%Y6Ta\0*2S9%0%sgW<S#/%B*G80.p0Us"=JX#7[X)
-rs2d5W@n^Z=pD2.rsW'8Y:k9qaMCe.KEnL5rs=>_%0m=H%0m>Gqu7","q:eH"q:eH
-#$Um'(5)o%"q:eH"q:eH"q:eH"q:eH"q:eHp\tp\%0d7H%0d7H%0d7H%0d7H%0d8F
-o`#Y0%0m=H%0m=H%0m=H%0m=H%0m=qYP8&'=q(]G"q:eH#))mR$3gqE%0d7H%0d8F
-q>V3>"q:eH"q:eH"q:eH"q:eH"q:eH#))sT)_VYR%0eHi0*\B[%KEC3%>5/p0.9aO
-%54[b0D>DP0*\C/%5&*C%0l_0$Om<>#/QqJFUa!50Ac^8=q(ZF"q:bG#(HFK$4R1K
-"q:bG"q:ccqu7F7%0d7G%0d7G%0d7G%0d7G%0d7G%0lP+&VMeA%0d7G%0d7G%0d7G
-%0h:Nrt0\a%0d7G%0d7G%0d7G%0e\Cp&>>I"q:bG"q:bG=o84,W!3\8%0d7G%0d8p
-qYq<8%0d7G%0d7G%0d7G%0d7G%0d7G%9`]1!N6J-=pPNi/h[Ge=q+[8rsGq721uDk
-;_D!$%KD(^#?gj%$X*e70+Cg,-sEPY0DthN=q1L8!)ij5"ir<F=q.Ffrs>l4IThD.
-IThE'qYpo$IThD.IThD.ITlXK(9(Jj>(0Y.>(0Y.>(0Y.>(0Y.>(0Y.oD]5tKN\fh
-%0m=H%9e4Zm/IKmITd0c%0d7H%9eF`o)B#pIThD.IThD.WVZW%WEOsYIThD.IThF$
-rt^8kIThD.IThD.IThD.IThD.IThD.WW)o*2$Tu`0.8IX%>4s>rVm>+"ttW=-rU<Z
-KJ*NeK_bWW0*\C/#?#qmHj5%&#?h!)!sT!`%KF6JT:cCe"uUu3T)T&!#D?86/lOD&
-0*6e2YPeD-KEbVY%0d9?=pA1+rsu%;#-TZh;PAK2;@TR.#$Us)#_WD807:UW_,LA;
-!!e)TT)T1$%>50=;_B^-W<P$Prs17^22!W92$P`0rssbl#,j0a;LEY\;@P:."u#iQ
-$Om<>#/QqJFUa!5>(Q^GrsK8hKEb@-;_Bq2%B0+&#$D.6W!rs7q>Uu(%0j!h%8rjH
-TMc4PW<QQ%rrH:4s&oD#s1niZ#CZjdJcDDC!iZBQs"=R/;_AN4#6sr&">9rg#,q@t
-",%*fW;eLW;LEY8;?nkS"u#`N!sT!5%KF6JT6;l:#-!1RU&PL(%K?l8;c6O!W<S%L
-rrQ@/WVQPr0+BS6s"=\+TQZuO%54mi>5%t(KEeUbTY\^c%K?l@JcDGD$4SY;##eDu
-#(A37li.JK%54[b06V_dHr:E,0*X<+rsB2gIT""S_(L0@%>"PRrrT/(K`<\0;HZm,
-rs^XKrt).6%9f_8;gb6]TQUct=pJ4%rrXn`KFRps"+2bN#(cfKrrZC/KFRoYs"=G&
-#(H"?&:OfgKJ`s3G'nI\"q?5="uYuO"F^Q(#,)"4"J6-V#?cWXU]1[S#-S8[;LL0N
-0+ICM&ZAk<>5qbYI=.]8TIp\P=pA1"rrW]`KMqid"NUhI#)%R-U]1E#03Kt-;?IA]
-%575N&m>_KIY8.7I!0m\TMc5%W<Nf7nG`SD%>52j_$$BX=q([es.fT$%9e35I8YIt
-Y6TOIrt_Re%54\6%8rjBTR<D[TQUbtY:g><YO_\rKEnI\aT''Y;M83_JcDMF!X=)X
-s&'#J;?p>6K_,3\IKg$[W<OtQTQZuNI!)*)TQVplWEBH12=phNKFM&hTDu_0;D3J'
-JcDMF#n:&IG("O408'T&rsr9B#?n'0#?-#CI%Yj?#;?%K#bQMM>,YU0%9iE(!saK4
-I/^q`%9a3ls.fT##(?c(;LC*G=Uk*)+FXM(#,tc8#(1TeFeEme0<$T6FeGA"T:deG
-=fF%`#(H:G!tAF_;?"B6#(?cTJcDPG#n:&IG'nI3>(-\NrsDp="q=b80+E)tI/]cS
-;@Qg/#-V2>;So'CT>I300<\Og"q=c2rsAs`>("0-_$sQW>(Q^LrsAsZ##]Vl;@Qb6
-K`(ik=YBsg07JR3##]T:G+`u*-ng62"pY>iKJ+aHT>@0"_$O!D22$E3%0eIgqu6s-
-=Z'*nT>:_\#(cfLrtu8LKMnIdTa1T%%9eE<%0m=HKW'PW%8rjHrLa^)#DB#b#?q.2
-#7[Vb#COA/rkSo^;@P:_W*0B7#QIs-K`>3W#-S:3_#_VTs&oC3JcDMF"pQ_`06V_d
-s">:h0+A*p07JSQ=Ucu]FeF,TFeEme0<$T6#-%V%#H7n:0<$T6FoK2WTDu_;Fp8CZ
-W*+QR%0d7GIT\<'_$$BX=t^)2s.fT-KEnI\TR<D[0*cr0KN`gX%0odSqk+1A/e)!`
-"q<6^rs(1d#-V2>/ti3[!6G2V"a*`K%9eGarrfMY%<]bl_#jnF#?gm&"/plVWIb)Q
-rs=>f=YBuPFeEkTs"49Ur_a;MTR3>STV%m"0*ZlY2$O;=q#:\S#6m&=IKhEI_4U_C
-&td!_;CDtY#6o?o_4SPA#D<OhqYp^P#?`ng07j/,rr`Q9W"!q?TEoot%9f_a%0qRY
-rs48_%54ng%5+=Q_#VRU_#VRU_#VRU_$.oP%B*G8qYpe(%9eEgW<S$,s02MBW<P#/
-%8rjeTV%mLTV%mLTV%lT%0h972$OLCnc&ur0+A,7KRO+X;Sf")_#U,,_#U,,_$+rj
-07F+SqYpd00+A*p#,h`Ws0)G.=pHp<%5(PN_Z-8=T>I4J;@NjgKWd$<#$Rtnrro?(
-"q<5bs&oL002eJB_#VRU_$7tY%54mi=o&(&#)!3j"qCSAJcDnQ(,Z:LKRO+1"tidY
-"q:cc=fGO/"q=_6lMhWu0+A*j=fGOW"q:c7;0GhB"uV'_"uZ2U#7"B@"pZf\#(cfV
-rt9th%53C5s&t)Ss/:TS%0m=qK]N.GKE_kj%9eGbWEOsYKW)(X%0g#1rs(1d>,b\Y
-#D@[.XT&g0=UbQE"q:bG"q:bG07JT4rssd3"q:bG"q:bG"q:bG0<"RD"YV`:IP3R0
-s/>r'Y?HBYKN`h.YLrjYIThCX%0li9!Ih!<rrZGX>(2&&YQ"~>
-%-EOD-
-Q
-/DeviceRGB {} CS
-[0 0 0.502] SC
-q
-1.4433 w
-0 J
-1 j
-2.8 2.2 m
-56.8 56.2 290.8 56.2 290.8 56.2 c
-290.8 56.2 452.8 56.2 558.1 38.2 c
-S
-Q
-Q
-Q
-showpage
-%%PageTrailer
-pdfEndPage
-%%Trailer
-end
-%%DocumentSuppliedResources:
-%%EOF