view flexbar.xml @ 0:68a4edf205f3

Uploaded Flexbar tool definition file flexbar.xml
author jtilman
date Sun, 30 Dec 2012 13:57:55 -0500
parents
children 7ba3aded92c7
line wrap: on
line source


<!-- Author: Johannes T. Roehr -->

<tool id="flexbar2.3" name="Flexbar" version="2.3" force_history_refresh="True">

	<description>flexible barcode and adapter processing</description>
    
	<requirements>
        <requirement type="binary">flexbar</requirement>
    </requirements>
	
	<version_string>flexbar --version</version_string>
	
	<command interpreter="perl">
		
		flexbar.pl flexbar
		
		--threads 1
		
		--reads $reads
		
		#if $cReads2.select == "on":
			#if $cReads2.reads2.ext == $reads.ext:
				--reads2 $cReads2.reads2
			#end if
		#end if
		
		
		#if $reads.ext == "fasta":
			--format fasta
		#end if
		#if $reads.ext == "fastq":
			--format fastq
		#end if
		#if $reads.ext == "fastqsanger":
			--format fastq-sanger
		#end if
		#if $reads.ext == "fastqsolexa":
			--format fastq-solexa
		#end if
		#if $reads.ext == "fastqillumina":
			--format fastq-i1.3
		#end if
		#if $reads.ext == "csfasta":
			--format csfasta
		#end if
		#if $reads.ext == "fastqcssanger":
			--format csfastq
		#end if
		
		
		--max-uncalled $maxUncalled
		--min-readlength $minReadLen
		
		#if $trimEnds.select == "on":
			--pre-trim-left $trimEnds.trimLeft
			--pre-trim-right $trimEnds.trimRight
		#end if
		
		#if $cTrimPhred.select == "on":
			--pre-trim-phred $cTrimPhred.trimPhred
		#end if
		
		#if $cTrimLen.select == "on":
			--post-trim-length $cTrimLen.trimLen
		#end if
		
		
		#if $cBarcodes.select == "on":
			--barcodes $cBarcodes.barcodes
			
			#if $cBarcodes.cbReads.select == "yes":
				--barcode-reads $cBarcodes.cbReads.bReads
			#end if
			
			#if $cBarcodes.cbReads.select == "no":
				$cBarcodes.cbReads.bKeep
			#end if
			
			--barcode-trim-end $cBarcodes.bTrimEnd
			
			#if $cBarcodes.cbTailLen.select == "yes":
				--barcode-tail-length $cBarcodes.cbTailLen.bTailLen
			#end if
			
			#if $cBarcodes.cbMinOverlap.select == "yes":
				--barcode-min-overlap $cBarcodes.cbMinOverlap.bMinOverlap
			#end if
			
			--barcode-threshold   $cBarcodes.bThresh
			
			#if $cBarcodes.cbAlignScores.select == "yes":
				--barcode-match    $bMatch
				--barcode-mismatch $bMismatch
				--barcode-gap      $bGap
			#end if
			
		#end if
		
		
		#if $cAdapters.select == "yes":
			
			#if $cAdapters.ccAdapters.select == "data":
				--adapters $cAdapters.ccAdapters.adaptersData
			#end if
			
			#if $cAdapters.ccAdapters.select == "seq":
				--adapter-seq $cAdapters.ccAdapters.adapterSeq
			#end if
			
			--adapter-trim-end $cAdapters.aTrimEnd
			
			#if $cAdapters.caTailLen.select == "yes":
				--adapter-tail-length $cAdapters.caTailLen.aTailLen
			#end if
			
			--adapter-min-overlap $cAdapters.aMinOverlap
			--adapter-threshold   $cAdapters.aThresh
			
			#if $cAdapters.caAlignScores.select == "on":
				--adapter-match    $aMatch
				--adapter-mismatch $aMismatch
				--adapter-gap      $aGap
			#end if
			
		#end if
		
		
		#if $cLogging.select == "show"
			$cLogging.logLevel
			$cLogging.noLenDist
			$cLogging.remTag
		#end if
		
		#if $cLogging.select == "off"
			--no-length-dist
		#end if
		
		
		$output $output.id $__new_file_path__ $reads.ext
		
	</command>
	
	<inputs>
		
		<param format="fasta,fastq,fastqsanger,fastqsolexa,fastqillumina,csfasta,fastqcssanger" name="reads" type="data" label="Sequencing reads" optional="false"/>
		
		
		<conditional name="cReads2">
			<param name="select" type="select" label="2nd read set (paired)">
				<option value="off" selected="true">Off</option>
				<option value="on">On</option>
			</param>
			<when value="on">
				<param format="fasta,fastq,fastqsanger,fastqsolexa,fastqillumina,csfasta,fastqcssanger" name="reads2" type="data" label="Reads 2" optional="false" help="same format as first read set"/>
			</when>
		</conditional>
		
		
		<param name="maxUncalled" size="4" type="integer" value="0"  label="1) Max uncalled" optional="false" help="allowed uncalled bases per read"/>
		
		<conditional name="trimEnds">
			<param name="select" type="select" label="2) Trimming of ends">
				<option value="off" selected="true">Off</option>
				<option value="on">On</option>
			</param>
			<when value="on">
				<param name="trimLeft" size="4" type="integer" value="0" label="Left" optional="false"/>
				<param name="trimRight" size="4" type="integer" value="0" label="Right" optional="false" help="trims specified number of bases from read ends"/>
			</when>
		</conditional>
		
		<conditional name="cTrimPhred">
			<param name="select" type="select" label="3) Phred-trimming">
				<option value="off" selected="true">Off</option>
				<option value="on">On</option>
			</param>
			<when value="on">
				<param name="trimPhred" size="4" type="integer" value="10" label="Threshold" optional="false" help="trim right end until specified or higher quality reached"/>
			</when>
		</conditional>
		
		
		<conditional name="cBarcodes">
			<param name="select" type="select" label="4) Barcode detection">
				<option value="off" selected="true">Off</option>
				<option value="on">On</option>
			</param>
			<when value="on">
				<param format="fasta" name="barcodes" type="data" label="Barcodes" optional="false"/>
				<conditional name="cbReads">
					<param name="select" type="select" label="Separate barcode reads">
						<option value="no" selected="true">No</option>
						<option value="yes">Yes</option>
					</param>
					<when value="yes">
						<param format="fasta,fastq,fastqsanger,fastqsolexa,fastqillumina,csfasta,fastqcssanger" name="bReads" type="data" label="Separate barcode reads" optional="false"/>
					</when>
					<when value="no">
						<param name="bKeep" type="select" label="Remove barcodes within reads">
							<option value="" selected="true">Yes</option>
							<option value="--barcode-keep">No</option>
						</param>
					</when>
				</conditional>
				<param name="bTrimEnd" type="select" label="Trim-end mode" optional="false">
					<option value="ANY" selected="true">Any</option>
					<option value="RIGHT">Right</option>
					<option value="RIGHT_TAIL">Right tail</option>
					<option value="LEFT">Left</option>
					<option value="LEFT_TAIL">Left tail</option>
				</param>
				<conditional name="cbTailLen">
					<param name="select" type="select" label="Change tail length">
						<option value="no" selected="true">No</option>
						<option value="yes">Yes</option>
					</param>
					<when value="yes">
						<param name="bTailLen" size="4" type="integer" value="10" label="Tail length" optional="false"/>
					</when>
				</conditional>
				
				<conditional name="cbMinOverlap">
					<param name="select" type="select" label="Change min-overlap" help="default: barcode length">
						<option value="no" selected="true">No</option>
						<option value="yes">Yes</option>
					</param>
					<when value="yes">
						<param name="bMinOverlap" size="4" type="integer" value="8" label="Min-overlap" optional="false"/>
					</when>
				</conditional>
				
				<param name="bThresh" size="4" type="integer" value="1" label="Threshold" optional="false" help="allowed mismatches and indels per 10 bases"/>
				
				<conditional name="cbAlignScores">
					<param name="select" type="select" label="Modify alignment scores">
						<option value="no" selected="true">No</option>
						<option value="yes">Yes</option>
					</param>
					<when value="yes">
						<param name="bMatch"    size="3" type="integer" value="1"  label="Match" optional="false"/>
						<param name="bMismatch" size="3" type="integer" value="-1" label="Mismatch" optional="false"/>
						<param name="bGap"      size="3" type="integer" value="-7" label="Gap" optional="false"/>
					</when>
				</conditional>
			</when>
		</conditional>
		
		
		<conditional name="cAdapters">
			<param name="select" type="select" label="5) Adapter removal">
				<option value="off" selected="true">Off</option>
				<option value="on">On</option>
			</param>
			
			<when value="on">
				<conditional name="ccAdapters">
					<param name="select" type="select" label="Adapter source">
						<option value="data" selected="true">Fasta</option>
						<option value="seq">Sequence</option>
						<!-- <option value="file">File</option> -->
					</param>
					<when value="data">
						<param format="fasta" name="adaptersData" type="data" label="Adapters" optional="false"/>
					</when>
					<when value="seq">
						<param name="adapterSeq" size="40" label="Adapter" type="text" value="AAAAAAAAAAAAAA" optional="false"/>
					</when>
					<!-- <when value="file">
						<param name="adaptersFile" type="file" label="Adapters file" optional="false"/>
					</when> -->
				</conditional>
				
				<param name="aTrimEnd" type="select" label="Trim-end mode" optional="false">
					<option value="ANY">Any</option>
					<option value="RIGHT" selected="true">Right</option>
					<option value="RIGHT_TAIL">Right tail</option>
					<option value="LEFT">Left</option>
					<option value="LEFT_TAIL">Left tail</option>
				</param>
				
				<conditional name="caTailLen">
					<param name="select" type="select" label="Change tail length">
						<option value="no" selected="true">No</option>
						<option value="yes">Yes</option>
					</param>
					<when value="yes">
						<param name="aTailLen" size="4" type="integer" value="10" label="Tail length" optional="false"/>
					</when>
				</conditional>
				
				<param name="aMinOverlap" size="4" type="integer" value="1" label="Min-overlap" optional="false"/>
				<param name="aThresh" size="4" type="integer" value="3" label="Threshold" optional="false" help="allowed mismatches and indels per 10 bases"/>
				
				<conditional name="caAlignScores">
					<param name="select" type="select" label="Modify alignment scores">
						<option value="no" selected="true">No</option>
						<option value="yes">Yes</option>
					</param>
					<when value="yes">
						<param name="aMatch"    size="3" type="integer" value="1"  label="Match" optional="false"/>
						<param name="aMismatch" size="3" type="integer" value="-1" label="Mismatch" optional="false"/>
						<param name="aGap"      size="3" type="integer" value="-7" label="Gap" optional="false"/>
					</when>
				</conditional>
			</when>
		</conditional>
		
		
		<conditional name="cTrimLen">
			<param name="select" type="select" label="6) Trimming to length">
				<option value="off" selected="true">Off</option>
				<option value="on">On</option>
			</param>
			<when value="on">
				<param name="trimLen" size="4" type="integer" value="30" label="Length" optional="false" help="trim reads to certain length from right"/>
			</when>
		</conditional>
		
		<param name="minReadLen"  size="4" type="integer" value="18" label="7) Minimum read length" optional="false" help="shorter reads are discarded"/>
		
		
		<conditional name="cLogging">
			<param name="select" type="select" label="Logging and tagging options">
				<option value="off" selected="true">Off</option>
				<option value="show">Show</option>
			</param>
			<when value="show">
				<param name="logLevel" type="select" label="Alignment logging">
					<option value="" selected="true">Off</option>
					<option value="--log-level ALL">All</option>
					<option value="--log-level MOD">Modified</option>
					<option value="--log-level TAB">Tabular</option>
				</param>
			
				<param name="noLenDist" type="select" label="Read length distribution">
					<option value="--no-length-dist" selected="true">Off</option>
					<option value="">On</option>
				</param>
		
				<param name="remTag" type="select" label="Read tagging">
					<option value="" selected="true">Off</option>
					<option value="--removal-tag">Removal tags</option>
				</param>
			</when>
		</conditional>

  	</inputs>
 	
	<stdio>
	    <exit_code range="1:" level="fatal" description="Error!" />
	</stdio>
	
	<outputs>
	    <data format="txt" name="output" metadata_source="reads"/>
	  </outputs>
	
	
	<help>
**Flexbar help**

Flexbar_ is a program to preprocess sequencing data. It demultiplexes barcoded runs and removes adapter sequences. Further, basic read trimming and filtering options are provided. Flexbar increases mapping rates and improves genome and transcriptome assemblies. It supports next-generation sequencing data in fasta/q and csfasta/q format from Illumina, Roche 454, and the SOLiD platform.

.. _Flexbar: https://sourceforge.net/projects/flexbar

------

**Reference**

Matthias Dodt, Johannes T. Roehr, Rina Ahmed, Christoph Dieterich: Flexbar — flexible barcode and adapter processing for next-generation sequencing platforms. Biology 2012, 1(3):895-905.

------

**Trim-end modes**

**Any:** longer part of read remains

**Left:** align before or at read end, right part remains

**Right:** align after or at read start, left part remains

**Left tail:** consider first n bases, see tail-length options

**Right tail:** use only last n bases of reads in alignment

------

**Documentation**

.. class:: warningmark

Further documentation is available on the `manual`__ wiki and via the command line help screen.

.. __: http://http://sourceforge.net/p/flexbar/wiki
	</help>

</tool>

we5s5/t~sL@DOo)ǔO@tȠ/.σod H0FLW{{]sK< liib*̹|{E)j)y)g'qX<͹;pN];&sCQ:sYR7y^92M4k,\{usShTaοYx"MTo /S_~`C@'9 '~1JY9&ܬ;bs?SwNt'|p^RճW۳zOFw4Vo:띚.{z^/1H~4pNa=R=ٯn2Wb|Kt;O꤈ 7}2xY&"evcs 0P)mi`0<@; P2BW|y01ZS𳥤*%Jl@PbD Hv^ϵ5hD4׭EME:WcJ?da(-䡜drV9}v>myoKW!P1OH?~n7q;omReg2:ڨzDJds-CGK)>߾6lq4# ]"DxG&-U[  X_ [ag{>~G_X'%==p74>eCR٫P@\Q [:B)h{Skg)jjIyfU&C!س%GWqWUA tN[k3.qVI%HEeoY  n^M$M q%1=FqɒEZ6hK)"e8$(hGzӊϳGhnZRL=uq zD(>?$k (4K8NLԏô'"!έ/$~7>.m}0@;hvud.. =:.o }wXc$ΎfVW7oQM5\qs;jސƤ>JFg0ט$ MiQFfe?O}~ ?'A:( k밄2?ta PYdPfaA5ȿ~-+WWSϧMtr6E` 0@kYd0Mz/yb893('`a89FMݷ}r*⬻5_oOJe&?؃'i$G`S.= b,UE,TȚP9LQ qAA4?b| k%e9{I2rjR\fSVN`DOͦJa)EmNE޿{+1 3؄+XxqI6ѯS<:N8׍)#5mm"8c!/5{lq_'iH}-Ycxy#ކ > :WKؗO $t9@}x&SINm=؈NGDb y"p85 DL4H#Փ9Q.%f7' C΂O 'JDIRn.MF5}j[l?@kP!rMKʘdwݮeJ.I(]4H~hP``B6E9rm0OJX"#K6 i`W8L ִT($1-)$2^=~I^"8}Z8!6i RJdh2USZ xG&Gr}CN3qʵ)7QB)Y5# zVܒsO9t O8q7R55@:Y$h ;e~c0|YKn}ҤOª j&t)OG}[ҾGo}2*m0(A{B=HOL}JH,9py[SPBrDP{g]^'!Q06o-zgy+wKN<У'ySj~5P>5z6lKw9Pē7_Z& 2;v /V1chC^26*ݹef>z~[2z>5]^j+nn{ F>JjKy#)m]{]~%Ϳw&`$HHX#@b=C_>zv_5ĝXZo1MN{iV<9ЩPtCAm_%3G{rV*ާNӍIƿ\r=}˜ݧqOxHEJqndaHV&f~ c)2 "!DʮC{#gڦa54P9p 14<#SRD $wx"Jfk38@Ldx< 8ӎ)G8?ȑK9&a&Il$fH帑Nl%q.Rf$~D!0DTP=!3=a?G`xo\~^F0ۖ,z/ X| (p4>uՓ{o=` ~H-͓@1c ~~z%5N!&fa$P0 5o}t:?ux4fx!,8 )F?11ʳdCdDx>F ФEa*,"%تZT"i)MS"@AqܷLz,@Cs8vHku! n) Fq7=1iP뵨|qg5fTkC uNJ6a\sIcKq@0%D&Dwc'}iY aYB[+C`>' jQhdPwyzW6PAI)QoѮ!@DWI{ ] u5ߴ;Qz0/p~M^,4A[~-`贿Ħ fF8sSR>eK,iȣ%ڤ&&10ꤽeetD>GaR_/.|E 29촽%fDY#=8UzkŇT8[ oFBB]&JVNfz#nwld"S=(kzH~驵`oJNߡ'A]D\q$Mx'>KEA~yOs6᭤l]ˮj*Vu&kY{L MC- }5Ywlf4vQq]: &{لq@ Z9h$bH0 D `/FfmZ/)Ҙ3VO Ce'Gd'?&;?O;:<%7F [V,㝶ʍg5{H<'~9oc-Jȝls4* #j$f$/U7(k?lT kT|OGU, !`UsZx69is)VZf(^:>'vfJ;c{VjX3PH~^]OW⩇R\z=ɱ2GN KM(j(z{ W1drlŕ_ À۱MRa0jX  >DnVIR39pG޷xeq %P-a45̌\V 011s"~+V)I9yDv˧^'KE[?ov|;9E*>N9`ouZscPã_&9B4-[4!o-J*h>U,O.*Ҭ*\bEE}t:=W"b9sp$Kuoq0xu5T#aP*hݻ h٩ܟB'~2;KF+M=)I" Dfʕ/}d򽄠mOC,'ޱR͹#ukfEeA@F ;v,l Fgf;M2V$&Q4ntu޼>QN6Ә%&}߶hݗ - >lzRz N]sZ:z*V^DS)NN6+-||ݖsZ$41@-iolOb\\ڭ}'JMkm']}&Qqr2x7r:[[{`*T8;2!0Kv41W_U-JCrţ38{Im-FD^9[yM"W/<Ɣ du'`׳{]WO.=l2^¿_t3z蜸!WCg[VB3ŭi녴SH'?"4oy0Fq= m%->|D& cI.V>hj2{\^h ig=P`E #(p7-jx~?g|a4֛qhxvwBC( 7L([<e8g{ cT-™e3}Ѫt}OU0j &>I|M99ILJ#TU檞ȫ1q}rآJsp %O د"<|}3SNxnSm2!u1zO%1mM#6<@ P- 6C6K\*Td|cJjЃ'c*q.nGRr݈^LS E5@=&$tǝHcΚWѣG3-GP0Zw& - Oķ ?gRw !7Ok}o䡔vBlkȌ00' fmN 0 /Vg~'/Ɋ6wym-2(C2 :({";0f^:]$N {.TZsO\kJRwVt?cY ~-XQ**}Өa%:m󘌖^_@},, S:0%sHmB!P;"`/I>*e0@hO7 Cz lMsysk~r޳!DnǝҔ@}n\QHez4(4,ݵ#qHAbOH5(+P7aϻ c:omP+![ç=WC/2Y - sNYqЖ-]XcVr?[uWEj?^'æLM;>]O3l:j&'̅A-[cՑsAwL.7*u+7L5gg˃uc6 {=B֏]U}ڏ_-QY)Q~WN;Y]4)=lLvfG~lae@]cq%;>8cɺج rf($Brm/[_i΍w~/!=0 3!"&,E R?%GV~?_+5S>?fiW}ùʚx|&]/ : @qJ .W~4cG~vOf,L fa{:PۿO,D&l|_ y˔ק92+ҍɬcOEX4 *H)_9? C w rr0"ωu"hir5Oҫ#@ZqK)kX}} VEmrmWj&'btTE)3Zvcś=R(⊠ ɻ"`(vq8/M_N!{tvVS]ldww̱}{t[{RSsXZH__/&ƔҸR*z-b d\O뽟 M$ezEC^yS#GOi14],W M%sOUteX vrbj0rpڟL23ONTJm |4`x9`m*fonL;m`r:x}. HxH&8C>' C%oiî8DE`ÓrBM89MN ]u|NY?C ryq/0Ɖw1I}eqO6Lh B<Ŀ 7/O:rN:;\SӬoZzTCΝϓ*ݓQ)0t AG`u'Ԇd0>"'?mc^@muڸ9gԺfCs`0ɤDL u6Q+& 뷼e6?^9ZXD,娣W'ZK6M:3rm(.߈?m.c9TJVqQ꿽MNM%gzoJ>5\7YqSs9uZGNy1& u+[jo`^Wҹ_1lAX2k#>x^ez ?]G*<9jBB%glCVDGSAЛIY0ϸq53sįD}^I;又8NJvTZrj!]kyUsF _5{m6 MKG!|d׈6bMFYr))=sҡJ!9!`29b>l/$0/pw'O) )/!BdA݄:E+O2f%捫\6dɠ(^C%(QSM@}P&HI@\2hZDBy"yzPzJM.$2D@ VPmX.oNe2T5"+HAh2CȥP@PЉBmQV-c[EjW C%IV!_H {$Bh(|dhJNӐ%̹;\Xcb7X"^&”HRaD7 zBq% M" ' 6T((_ڀ> Q2DCH7yF@9dR4l w}ūjтW*5TQcUKnmʶaME'IP(qH*+h(ѣVU[Jկd\Zh$ɮW` ~P )y)rGUbdTE>V^ W.4=Y#QbѹmTmGj5EA⹢TUsbQ[o*e\(Uɤ]V|@'"+!51 ~ʨ׍IFMIbƶ5DEEX>[*ѩ6-JiJ|ʩIQ4jJ-|lPhCF**IcrPCɗ2%4('rRҼJP"SUI[+zWIhR6أTkIbkƵ*X-ZFAW+-ll,!(L Bts(nQ@Q;M d %~PJ}W 쌇LhS!hJ+ I9j}6 mƿVH5F\1h’$)(c00*Xc#!QX^w-*jڶ-[PX?=]#h#RhSaBT@t!w#!M.AqSphJUBCM%M+C MB92N H!)]rSb& hXh9%Fs1}$HDR)nHGlsxKRnxo+^}yA+Z=2hSrUU?W%jl &ock^+ŻQ T!O C   WeJPːqBbrZ66*?=(V(*Fu5^+om+\D܂ h5)2>`;ɼ C,pqmt\d-iE&5$dI65I3E,kEb`ɵ*?E ы-EԖ4A2EF4@1=xޖޕ^5 ؋@k(QMhC${Ү%mKG!ps  *EU\67O3)`G/M[бQ[k(g[EƩ8ܹ xGh0hA6ɌW5=5nhdNm%FĕXط14c\cFM^^-F?rQ%o\Ij6*+߷ cXQUv~V4[qr(lP@2JC$Ȣv<(2ZPg {Atj)p> $rܩ\W \X r]SaxEEͻε'T;4hm\?Ues(q!n}!2;h24Bf H% $(I(wFןEPQm&#FF|6 4o·ΰ1IdH4c2űPVB1Y5h\WW1hXߕtƊRRBQ$E)fJ(I IG Oi]9/&(hJZ2Fhn{`#!AfhК#b2j1c"1F"i5IZ1 II󮠤eF(Еk$m@4hkW1ohJ4*)1dfQk] 2=da@olmDM)zp(orl1$|hџ(5,lI,Ixb7{Uv>ݹ& ňeFƉ5&(*[.jW*m\\^'$2A˶bUVżkwrg*Ktm5ndѭQչWUkҢű}5[دZ1wjnƨ 4HrEđZ")2=!6J(N"!pL 6^)vIZ G9QCE44ps4)A!mڊƓRmrƪksmFѵm )HPD=dw< h=aKevC$y9 )4=H ^ :Uz;/HWwIN{{i) T(QR[Qm[E"KP$IJqeOxt%2xCyd?7kŋ幐4IM@CBRh+d-r-j5?~qcb_-~FF|,FJHl% @4-g""RHv%J|F&xr\h!3jJMʯѣwuQE{3v>ͱN5@:IG52_M!<>}*j/vJB1@cgHS't4d4F!JIQ(F i,~AX#$cw#|wToA,QNcрԄI%LX bI68hHU5K%51w@_AIF~#,F6 *[\."$Dc@Rob0_,h.%=koco ěR!DDj!~z&I@\LDFD4AHi~sLk\YRH!&ji@ʮkWUZǒ-\dBu B.HPHVJ.B$6C2dK>r+} B}rvMSy y*5xK6W-CORO!>q(l"#s$hƿ+콣$+\V~!_2&E eA@SI[k˖s!U!r C\x^!E}W hQ7&p %uݣP[wk3n@bplbiK% ߟ:#Db_˱bwtQnzaAIlF+ ؠߣr!>@G;5{Żq>0nbNE ]k%|A紙&v{m$;pvQ:EȹULQOǚsҖolHu;yQ5ӻErwV; !FÒ D%Jd=e{.AF*W'%C%;Z%0>K$(?v lMY+$ R(610XmW٫Xƨm/HA5 *RɼIC@jPC%BL '.HЎz[5Fiy!u4 B1hy/r;(u 9V`!ZS]H>OyzGĝc B(p@dS$!@!ʭ}ڼk֎W/|<[)dJ)ɕo&xE#F湫F5d4TmZ5QU[rF(tBH-Mr5FZQF,02vRy'^@2zkMRO0$TD tp} ^Fd&A_(Wda:u$};l D/:fNqP#ꉈ:ʩXx7B$='tE}s)JJ)M碃D^-{jXؒrm/ G܇p^&M_9<19/dP)|-BszG>.I~`ØLJGP{ 2Do'[zâ:FI'IWh ܷsXMFѬl!HR|!0>s`;`O)rXڿ2kpM#m.cdt͐-#1 Hn]}^tT{fS1#/bi0CM|i0wt0cw_W"Ɠs\)HDrK7S%عK@ 2 ]@ Py;#T>y (!%}.133I@Q`bƍD#|7$"E~F#cwqqr(8dAJ&Kۖ,gti @hRJP,d%8Hߎݸk(="^_~׍A@vA1%) !f hH@w40$d iˀb1I׍yS fPƒz면,f"$ ,1I,"YD?o6}ɗk*!8'Xu!C(YT{.2- @9'U^30) P?\- RiN!V.H=aO^1XLXRd#@9!@j 'Su(yg^3쑿Qfm۵r҃FƠP R\!on#/=cxXu~3ɼS45O||9Ox|2j끭\V ķtd pFqbPXGB'v_t'(D/m1gZ;r!ۯ!.=|=un|5%"W[J ģi )&'Ǧ;ࢼ{!4fLȱ3ss7^y.Q{#lRQE$E}ޤeD"2];w۵̑Q67-648,oMr40 Ia qăc$ c$ ] R $}ܑ};hz6Lܸ4]7W/; (LɄXd LF`vtƓr* We5 O¿ʼ&e#@0MO/\3A4OA XE N40 䐹D5=}GΥđ r>4k'X2|VAC~toMzK}O1ǘ0tfEL/x D 7}e:WL>j>L?[x)LYL`bvD 7COu8̫:\d^`2CCZF+UTvC@L mHD2K%m0@o}x~!Nk]ї_NHJ(T$aq1\zY{I|þ;qbo|3ɯJlD "˘o#$ b@b1$@8G-yjMLȽmO52Q BF h)uZ~wA\H^ذ` χGO8A %D+ niD:){=B"jzhMxnBrg Uj9Zdug10hwp* a>C` I zb!0hH%S>ߦmDU%mE-5lO]77 Շo^iusgNq0ąTÉB2]2t8P+&fJHAn_DrMѐ;+s=(e?ݦP#!(7~7qMI;z fK Qze^Y͞V #']= a`R=sHB&P1̓= bI% :\RRc+n]r#2 ۮ뙢v"P!`.&H$0FAdsJM# DL=l!tnp#9?z̉LL! MʘhǝO L32۾{=R&ݢ*LKb &)";FM!& oĄw-lu-c@$lAcnBAhɤB(OHѨz,:]9]`Ma=7E:&ңU?g4XХ) 4N! " D5S#*mbٌw 4ȓ".t/iu#vVAw| q IJܛ90.oɈӜ^Dbc6ˬic5@LQ:8#|eVbAaM`H:5'!CD ]5}u$.Ɯ㶆䡏\G>-Ե4^UyjcwC [pّw.e,U`(1X~7b@Pdh[<4dtԔ*S~qM夢h5p__9`|@b: CSRp̠i-WR(/rr%ɫ=;BaezAat׷nvPUDvvw+9n?r_<<_ɕ{FosՔNo[OTPPjrR?q.BY>qu=b1B!\ǦyRQJqQ$ D:l)`wR%9 9)vaUH8e4&F'Pve]L#u~QuܠeuyN d.xB{5#a hBѤ1W~r_׵Ed!+Oލ|l)}g1{~J_}qUw:}lzIgP43-vQ`Ag!&b*\FwzQD7TMAUO|!:{[i7)ڞ|w徽vt/!Cz|L\W||>XϯۧS鹪}Lz~t\~߅YITU4$Ѫ2E 2p dj(OHu!!u,__=zl9O_GQFD;}+ͅWDCNP>Gu!s.YS \zqDERmGoxhxށ&g.n}ZkTA83q˝s(Bºs2}w7,p( }1巛jGruq x{]^6:B,^諒VD ` G'qڜ) ,gD+ZF 60&.'P+w6jRR_MoC-lhהz3)9jk{ts6W .@!80ɸ,O+1:dNfh' iUaʯpI+C&Ƣ]lSg-kiEYpU"6OIVDŽTtM $zi  aE>UE+26暔ǒk#@ڑJlӷΛ8FX,|?^{izȟqp<Ϲ*X@a[oG*vYMWgkr\DԚB O c~;Pc&O+<$vxf<}$qٝ|O)Ǜ68=%K6\[҈BJL(Z0(2S2j65֖n>Z6Rdp̘"0]kap@b2FG;ѕ#^a&H%/BVSe-9kA+EaZ):d)W==2u*$P`US`ҰYtBi2ZW)UC-SJH?aU5bei0D';yfe9 Rs.w$$cl Cj 9R SMR"Ii"Zg|;̧Uv1OT y+dU$-3NGcѷgsgQ4XFo:hp۬L)˷h'4Wp鴹:$vސPE__sU$Ie{[;~m5o]> #qfcXC/MVwR_6+tT0xwJ7'Hl(ys֎ՏO󞏢;R=/5EفA`H]%;D)X:JBC͓F#ROkXӫWzam{몧ߵ4+3eBFى< $ 9YGGx,&]hG xHm7ĸ MQTd8>ekJBoyU3Pc;!:ϫg ZKg[H9_9vW֐(]`=D&|K:ӌ~E*,';Է,8NQ#Oc𣘾$W037Bz r VSfvo];qD%HB\S^%4N [V ӸO==lR>Fuv."%faCO5 D?sV+58p5L4LMM u ^i>!bBg;!_8&=d1hd8k=44'֩i0a './ss>;Zbb?默Նo;nv\(jdq{*p,erUڲRv͇/\!Nϋh.|1 8XmH9x!$weYyD%#j7uZeɯدRN>*׬DҌPk\kIXW^E]/iJK>KI D@Cn#Lۜq{.|}Lw[U(G1c7鲪kZԭ4σw7)Iq7xKsFMrP}wڪk<vR1t&O nΥ||X%Lt1Lb3b""> s8_۾;q=ciEEۀAHDHh1f@̫\PѯeH>nI+knK sX:4CDn[$sE)<1X7Ԃ0&B13իMO Anim~>A4E@r3Uk]iVGfx:-mG)Yp4h-ҭh`W-_٘U ?q4{@ͯ ~À4,qY=y>(G]:pz ږϏjQ_Pƣ/QT+q9X I~sOu\t0jdbЌa|ZWEOOC t[8n*&/5 "١v)kxmHFe =k;w<$X- ̫H+j`lq ir)WOIJ 2.d s'>qZQ(0zg{(uv)ݯM(3"#ӯY[V2*Mn]Oby"1ܦjI&?}} ]v/DMl%æcq׫zKex=:ts:*cGnKcn@q5qeޝ]2Ξ9Σ)9[yvJH~WiRzz[wS~ˡ $_hңf-tM[u%SSj:lW9]t[;uh%1?WwRt$I0nI诫'=Y;|]u7N';r5 F7]Dnscեwxy׍V=ZĝwW} /JGLe(by42`61YD}~@bf.6.qy$ci!y-JdzN@x~=ySTO9"D#&eV  #26( ϵ8]ޒwyq]:I5 Rqs8 ̂!A"@D&302$[םᦃI:'`rSB~3(t!$T*{1fkХDO6Iofrc48)Nkٲg9Flua $wU Nho3ةaiͨcڳ\L&1ʛu73bS/ە >5Bum$0lr)Fxj<;8X{mQ7'g:~!2YPQǡE>>C#`q !iYK_JBµ64; N;B$Aum-c9 `Uy^E8]Uo4bI>7ܲOm{Dw5`XWI'ͪf%nct@`1h_O-3&iQ/ U벟kaQp~i4x>7:tpFR$4>bA#=iZ}^Ŷh|#&vyywb?ɟUTs 6)AMϋZn!`}h,5M q?3q[Z2 OiJcV2RdAxćD`b~mSO!է![ )xl9o=K9%Zwhpޭ/_5Vs^JZ7F &㎠DvL ;Q8V*Mw[=L/o. lrt>Q'G2yϡé@buVr>gӱYm16mg}d-l_,gu񘸈~g}pzw1_tKe, _o}^6PŠ"1){@{"B;tйl4P2f4L*SgC` "7G%+T !ƞ}vN?ł:}~5\-+aVڔ*~OvhPŅqɇd|]\:p@gC:{q3%"瀫~]>^٧XPOL7,* @a']CMn0-mM18 vBGS0j$)T7h9n̂CanDn=5bP,H83;oXp,$Bm\i2hNrit,8I,Gc'C[A@ʓ Z㿜ۚިhnrźG|/?zE4#U/HB_A.=qL|oƐr: )GCo_?Ui)uh~2RbO/,(i ~MA iN(hReTwG9.Y7y,h31/e352}U5^~%.U+Z'B&B \Nw珫yԙ369ȗ~fCD/QoWTw\DK4W΢=lMRg'-'*a/w/d~ojEu 6\Uwıxzo mm[2=p,K0rDN@Pd$[7vr(Au~ᇠqrD$q?GdyVA۴%1 h}F,afӈ'G'=2e)Q3wЗdcQ^]PcFJbq~3#z[y' )6ѸdLqM8p8R!e9fwG}OYkҭw/fZW1*L CvB;j$"LB24ⳣ.5g}Ժ\y~lFiE"' a"+&ǜ,_.*M]q~w]鵸7 y>EVy;L1>aI7Ӯx kU4HIwM;qd)qG?uݾS=:+Jb! c !\;ܗ*9"J{U418pvHtCO}ml8^~rpIɂt?A R!xI?lflH?e˚\qr砘N@&`LaR+$}[^h'UyAÅg!T͵I[Jo?I|&Mx`k'R:ĩռfV"%jS󃆺DZs[M䒿lst'JZsQ68ہou<?GqY9ir^s}q0 8*{cfpqeWRy sK }ԚhsChD,0Ѻ .Uݾ&VOkq] zª] o sscq| 4`0;b'ګb1~(|zSEqlNg]n͊r43y.[n2L LZƳ KdK@RVuW'&n#Pef4LB)~ 9f~[9n+^f%bM0T8T'2[)cTLnP^jF2ĐfV7[kH+DCLg,j."J~?:&Jm}/Yf)LZ~+e|~9 MϜe u!E?e~x}@EU3$dJػO\%˖hJ7u! AH{]ag%7utj0`{d#I܉KԧbOE^cNVG_o "n";2Ws1䇣!I\\lZ;Q_l*ik,{V]jAm_[WzW{ox$wID 鰴!I!!BDK{yjy9V*G?w>59!KME|$b:{UQ/H]9&,,sDĀ4/,d'3 h=E&j @r^U;oXq@uGTH@@D CMQns: /A")*h09v^ͧ[i8xM$8nͥCFʾCX#lXTtیiJ?SKh񌟦~HDx~?eNu?]V\/?DZ:׍I-Z<۫D&b>M5իQ ҕgXlSd9 yphrL PI3sR]5Y υ瞫;W]E87 ;6=\zqy"(<(ƒxYbaSJIwf/}6nx_>ϩEd)=^W$Ų4Md[GzVMJ,P|DŽ r\D]!G;Ի%~Ӯ}sss`6|lWP"&F h6į U ;o8=u< 7a~` \ 2?ÖK~ZӘ_S5\6n.:uUY+;U'$j'KXS RB̪Y/X6D Hp@#<K42j1l g}q Jpܜ_'v7JYao@hRȶp챴63VMzbSD[2I7 d)omo]IټӓdC,l6^8F #gF*)CP2NV,M23Wu-22%^Q [w`sbƖ"uO>n3J;Sd]z1KI3*SEzvRů-2=\K>ϨĹ79v?쳢ת/h3yE^:P1 ["E$\2-G e#N?n1Y-9/^EawV[oV.0+@"|Ɓ7)3nLҘ&kD#督pohg'k/64RT"KU! Di ^nH"Q;3B/20$"bA1PR;(Mzy8"*'؆I(zTJC@ 諚`pO-s| \(h 楙>Gd7>\~ |be3k;~>()X 6Qb&@KN&|;|]7i֫NDUU0pp@.WaT[WPwInT{(Cm6[G͗)9B4`P(0Yb+اp10JjQVsg:BZ7WfSLtYN?gbY&GF%$mƂo.sMm~R B+o+)Ύ|I} Ʀ #\y/W>aiu"zg8()G2oQoqmj :f餾?amA 墆 v펥s+ wGGCB'Ri~Bc'BoFn58b.7<Yκds_:]X{j e{9Os'#ߧ!g8gQ}aH&/i-%Vj*\\lEIiRg=4a˕YmhKTsl}+tm&jSuQcNDz_O:_7e' )5vl)"9:-u:Drb2ڜm{\nrf4ї _߿M>sgS).]i?gR8T 럶'\u&]ί/E>7@e AStM]G~a.*0`&BL"4e<$0P9@`"D+LHn{|?R`b?e;߫w6vw\%_vki۠9.yչVFBo;wusK] ϵ2b3NM-F6]{]B[iΨܿDM2X ܸ$fn[vTmpM*MtWmMDTkLNLT͍5h56&Qnlj5WCjTb&Fj h?f E'o\OWۺ+sEmi+@E. k$vRjTrQ.7SjQk Hj *e y$bThmkɶ*-\_*夈ߕtyG]p36x$Rm8nwyFM t<@)TavWa9d l4':!ԋ@T49l4R/;=e=@=5Hd dPHg8+rlJddȻ!!^Jl 22@lAP;hL*>%h6Ke=N(=tI/+'ٽb5܅U{6\ZkF6JPrƂ(pABRPJ'!6 vezm7TRjME94d< #@H|%Sĝ x( ZCld6|CGV<:ː:iZ(G%i%JCBBd-+SCJb!L!.^I;idUNapsx9 yDʏMh!("pW=\V O=Vt{lJzW5j5siγ6jjƺ%rZ % MnXkUxrMr]M°ZIħ[p*NDi1N$4*(e4Y&."dPP-S% \P)MQҋ *W%0AL`{J2rb