diff --git a/announcements/correlationcartoon.jpeg b/announcements/correlationcartoon.jpeg new file mode 100644 index 0000000..a9b3823 Binary files /dev/null and b/announcements/correlationcartoon.jpeg differ diff --git a/announcements/evalutation.pdf b/announcements/evalutation.pdf new file mode 100644 index 0000000..ec41ac7 Binary files /dev/null and b/announcements/evalutation.pdf differ diff --git a/announcements/evalutation.tex b/announcements/evalutation.tex new file mode 100644 index 0000000..c528f4f --- /dev/null +++ b/announcements/evalutation.tex @@ -0,0 +1,60 @@ +\documentclass[pdftex]{beamer} +\usepackage{beamerthemedefault} +\usepackage{multimedia} +\usepackage{wasysym} +\useoutertheme[subsection=false]{smoothbars} +\useinnertheme[shadow=true]{rounded} + +\setbeamercolor{block title}{fg=black,bg=gray} +\setbeamercolor{block title alerted}{use=alerted text,fg=black,bg=alerted text.fg!75!bg} +\setbeamercolor{block title example}{use=example text,fg=black,bg=example text.fg!75!bg} +\setbeamercolor{block body}{parent=normal text,use=block title,bg=block title.bg!25!bg} +\setbeamercolor{block body alerted}{parent=normal text,use=block title alerted,bg=block title alerted.bg!25!bg} +\setbeamercolor{block body example}{parent=normal text,use=block title example,bg=block title example.bg!25!bg} + +\usepackage{hyperref} +\usepackage[english]{babel} % language set to new-german +\usepackage[utf8]{inputenc} % coding of german special characters +\usepackage{graphicx} % \includegraphics[options]{file.eps} +\usepackage{array} +\usepackage{setspace} +\usepackage{color} +\usepackage{eqlist} +\usepackage{wallpaper} + +\definecolor{tug}{HTML}{CC0000} +\newcommand{\rot}[1]{{\color{tug} #1}} +\definecolor{green}{HTML}{1C8C1C} +\newcommand{\gruen}[1]{{\color{green} #1}} +\definecolor{blue}{HTML}{2424AA} +\newcommand{\blau}[1]{{\color{blue} #1}} +\definecolor{gray}{rgb}{0.8,0.8,0.8} +\definecolor{gray2}{rgb}{0.5,0.5,0.5} +\definecolor{gray2}{rgb}{0.5,0.5,0.5} +\newcommand{\grau}[1]{{\color{gray2} #1}} + +\setbeamercolor{footline}{fg=black,bg=gray} + +%\setbeamertemplate{headline}[text line]{ +% \begin{beamercolorbox}[wd=\paperwidth,ht=8ex,dp=4ex]{}%\vskip-4pt +% \insertnavigation{0.85\paperwidth} +% \hskip-1pt\rule{\paperwidth}{0.3pt} +% \end{beamercolorbox} +%} + +\setlength{\unitlength}{0.01\paperwidth} + +\setbeamercolor{background canvas}{bg=} + + +\begin{document} + +\begin{frame} + \frametitle{Evalutation} + In Ilias:\\[2ex] + Go to {\em Evaluation} and fill out the forms!\\[6ex] + \includegraphics[width=0.8\textwidth]{correlationcartoon} +\end{frame} + + +\end{document} diff --git a/linearalgebra/code/Chorthippus_biguttulus.wav b/linearalgebra/code/Chorthippus_biguttulus.wav new file mode 100644 index 0000000..2c57068 Binary files /dev/null and b/linearalgebra/code/Chorthippus_biguttulus.wav differ diff --git a/linearalgebra/code/PeterUndDerWolf.wav b/linearalgebra/code/PeterUndDerWolf.wav new file mode 100644 index 0000000..80aab98 Binary files /dev/null and b/linearalgebra/code/PeterUndDerWolf.wav differ diff --git a/linearalgebra/code/Tielli-Kraulis.wav b/linearalgebra/code/Tielli-Kraulis.wav new file mode 100644 index 0000000..8ad071a Binary files /dev/null and b/linearalgebra/code/Tielli-Kraulis.wav differ diff --git a/linearalgebra/code/coordinaterafo2.m b/linearalgebra/code/coordinaterafo2.m new file mode 100644 index 0000000..054ac6d --- /dev/null +++ b/linearalgebra/code/coordinaterafo2.m @@ -0,0 +1,52 @@ +% some vectors: +x = [ -1:0.02:1 ]; +y = x*0.5 + 0.1*randn( size(x) ); +plot( x, y, '.b' ); +hold on +plot( x(10), y(10), '.r' ); + +% new coordinate system: +%e1 = [ 3/5 4/5 ]; +%e2 = [ -4/5 3/5 ]; +e1 = [ 3 4 ]; +e2 = [ -4 3 ]; +me1 = sqrt( e1*e1' ); +e1 = e1/me1; +me2 = sqrt( e2*e2' ); +e2 = e2/me2; +quiver( 0.0, 0.0 , e1(1), e1(2), 1.0, 'r' ) +quiver( 0.0, 0.0 , e2(1), e2(2), 1.0, 'g' ) +axis( 'equal' ) + +% project [x y] onto e1 and e2: + +% % the long way: +% nx = zeros( size( x ) ); % new x coordinate +% ny = zeros( size( y ) ); % new y coordinates +% for k=1:length(x) +% xvec = [ x(k) y(k) ]; +% nx(k) = xvec * e1'; +% ny(k) = xvec * e2'; +% end +% plot( nx, ny, '.g' ); + +% the short way: +%nx = [ x' y' ] * e1'; +%nx = [x; y]' * e1'; +% nx = e1 * [ x; y ]; +% ny = e2 * [ x; y ]; +% plot( nx, ny, '.g' ); + +% even shorter: +n = [e1; e2 ] * [ x; y ]; +plot( n(1,:), n(2,:), '.g' ); + + + + + + + + + +hold off diff --git a/linearalgebra/code/coordinatetrafo.m b/linearalgebra/code/coordinatetrafo.m new file mode 100644 index 0000000..7c8507c --- /dev/null +++ b/linearalgebra/code/coordinatetrafo.m @@ -0,0 +1,37 @@ +% some vectors: +x=[-1:0.02:1]'; % column vector! +y=4*x/3 + 0.1*randn( size( x ) ); +plot( x, y, '.b' ); +axis( 'equal' ); +hold on; + +% new coordinate system: +% e1 = [ 3 4 ] +% e2 = [ -4 3 ] +% and normalized to unit length (factor 1/5): +e = [ 3/5 -4/5; 4/5 3/5 ]; +quiver( [0 0], [0 0], e(1,:), e(2,:), 1.0, 'r' ); + +% project [x y] onto e1 and e2: + +% % the long way: +% nx = x; +% ny = y; +% for k=1:length(x) +% nx(k) = [x(k) y(k)]*e(:,1); +% ny(k) = [x(k) y(k)]*e(:,2); +% end +% plot( nx, ny, '.g' ); + +% the short way +% nx = [x y]*e(:,1); +% ny = [x y]*e(:,2); +% plot( nx, ny, '.g' ); + +% even shorter: +n = [x y]*e; +plot( n(:,1), n(:,2), '.g' ); +xlabel( 'x' ); +ylabel( 'y' ); + +hold off; diff --git a/linearalgebra/code/correlationcoefficient.m b/linearalgebra/code/correlationcoefficient.m new file mode 100644 index 0000000..55472ab --- /dev/null +++ b/linearalgebra/code/correlationcoefficient.m @@ -0,0 +1,29 @@ +set( 0, 'DefaultTextFontSize', 22.0 ); +set( 0, 'DefaultAxesFontSize', 22.0 ); + +n = 10000; +x = 1.0*randn( n, 1 ); +z = 1.0*randn( n, 1 ); +for r=-1:0.2:1 + y = r*x + sqrt(1.0-r^2.0)*z; + cv = cov( x, y ); + cr = corrcoef( x, y ); + scatter( x, y, 'filled', 'MarkerEdgeColor', 'white' ); + xlabel( 'x' ); + ylabel( 'y' ); + text( 0.05, 0.9, sprintf( 'r = %.2f', r ), 'Units', 'normalized' ) + text( 0.05, 0.8, sprintf( 'cor = %.2f %.2f', cr(1,1), cr(1,2) ), 'Units', 'normalized' ) + text( 0.05, 0.7, sprintf( 'cov = %.2f %.2f', cv(1,1), cv(1,2) ), 'Units', 'normalized' ) + waitforbuttonpress; +end + +y = x.^2.0 + 0.5*z; +cv = cov( x, y ); +cr = corrcoef( x, y ); +scatter( x, y, 'filled', 'MarkerEdgeColor', 'white' ); +xlabel( 'x' ); +ylabel( 'y' ); +text( 0.05, 0.9, sprintf( 'x^2', r ), 'Units', 'normalized' ) +text( 0.05, 0.8, sprintf( 'cor = %.2f %.2f', cr(1,1), cr(1,2) ), 'Units', 'normalized' ) +text( 0.05, 0.7, sprintf( 'cov = %.2f %.2f', cv(1,1), cv(1,2) ), 'Units', 'normalized' ) + diff --git a/linearalgebra/simulations/covareigen.m b/linearalgebra/code/covareigen.m similarity index 83% rename from linearalgebra/simulations/covareigen.m rename to linearalgebra/code/covareigen.m index 1acf330..cd6025f 100644 --- a/linearalgebra/simulations/covareigen.m +++ b/linearalgebra/code/covareigen.m @@ -44,11 +44,16 @@ function covareigen( x, y, pm, w, h ) % plot eigenvectors: quiver( ones( 1, 2 ).*mean( x ), ones( 1, 2 )*mean(y), v(1,:).*sqrt(diag(d))', v(2,:).*sqrt(diag(d))', 'r', 'LineWidth', 3, 'AutoScale', 'off', 'AutoScaleFactor', 1.0, 'MaxHeadSize', 0.7 ) + xlabel( 'x' ); + ylabel( 'y' ); axis( 'equal' ); hold off; + % histogram of x values: subplot( 2, 2, 3 ); hist( x, 50, 'b' ); + xlabel( 'x' ); + ylabel( 'n_x' ); % sort the eigenvalues: [d,inx] = sort( diag(d), 'descend' ); @@ -59,24 +64,28 @@ function covareigen( x, y, pm, w, h ) x = x - mean( x ); y = y - mean( y ); % project onto eigenvectors: - nx = [ x y ] * v(:,inx(1)); - ny = [ x y ] * v(:,inx(2)); - cv = cov( [nx, ny] ) + nc = [ x y ] * v(:,inx); + cv = cov( nc ) [ v , d] = eig( cv ) if (pm > 0) & (nargin == 5) if pm == 1 - [n,c] = hist3([nx ny], { xp, yp } ); + [n,c] = hist3( nc, { xp, yp } ); contourf( c{1}, c{2}, n' ); else gauss = reshape( exp(-0.5*diag(xy*inv(cv)*xy'))/sqrt((2.0*pi)^2.0*det(cv)), size( xg ) ); contourf( xp, yp, gauss ) end else - scatter( nx, ny, 'b', 'filled', 'MarkerEdgeColor', 'white' ); + scatter( nc(:,1), nc(:,2), 'b', 'filled', 'MarkerEdgeColor', 'white' ); end + xlabel( 'x' ); + ylabel( 'y' ); axis( 'equal' ); hold off; + % histogram of new x values: subplot( 2, 2, 4 ); - hist( nx, 50, 'b' ); + hist( nc(:,1), 50, 'b' ); + xlabel( 'new x' ); + ylabel( 'n_newx' ); end diff --git a/linearalgebra/simulations/covareigen3.m b/linearalgebra/code/covareigen3.m similarity index 64% rename from linearalgebra/simulations/covareigen3.m rename to linearalgebra/code/covareigen3.m index c11f2de..636d9cb 100644 --- a/linearalgebra/simulations/covareigen3.m +++ b/linearalgebra/code/covareigen3.m @@ -20,25 +20,40 @@ function covareigen3( x, y, z ) ylabel( 'y' ); zlabel( 'z' ); grid on; - + % plot eigenvectors: quiver3( ones( 1, 3 ).*mean( x ), ones( 1, 3 )*mean(y), ones( 1, 3 )*mean(z), v(1,:).*sqrt(diag(d))', v(2,:).*sqrt(diag(d))', v(3,:).*sqrt(diag(d))', 'r', 'LineWidth', 3, 'AutoScale', 'off', 'AutoScaleFactor', 1.0, 'MaxHeadSize', 0.7 ) %axis( 'equal' ); hold off; + % 2D scatter plots: + subplot( 2, 6, 4 ); + scatter( x, y, 'b', 'filled', 'MarkerEdgeColor', 'white' ); + xlabel( 'x' ) + ylabel( 'y' ) + subplot( 2, 6, 5 ); + scatter( x, z, 'b', 'filled', 'MarkerEdgeColor', 'white' ); + xlabel( 'x' ) + ylabel( 'z' ) + subplot( 2, 6, 6 ); + scatter( y, z, 'b', 'filled', 'MarkerEdgeColor', 'white' ); + xlabel( 'y' ) + ylabel( 'z' ) + % sort the eigenvalues: [d,inx] = sort( diag(d), 'descend' ); - subplot( 2, 2, 2 ); + subplot( 2, 2, 4 ); hold on; % subtract means: x = x - mean( x ); y = y - mean( y ); % project onto eigenvectors: - nx = [ x y z ] * v(:,inx(1)); - ny = [ x y z ] * v(:,inx(2)); - scatter( nx, ny, 'b', 'filled', 'MarkerEdgeColor', 'white' ); + nx = [ x y z ] * v(:,inx); + scatter( nx(:,1), nx(:,2), 'b', 'filled', 'MarkerEdgeColor', 'white' ); + xlabel( 'ex' ) + ylabel( 'ey' ) axis( 'equal' ); hold off; diff --git a/linearalgebra/code/covareigen3examples.m b/linearalgebra/code/covareigen3examples.m new file mode 100644 index 0000000..f27c76c --- /dev/null +++ b/linearalgebra/code/covareigen3examples.m @@ -0,0 +1,19 @@ +scrsz = get( 0, 'ScreenSize' ); +set( 0, 'DefaultFigurePosition', [ scrsz(3)/2 scrsz(4)/2 scrsz(3)/2 scrsz(4)/2 ] ); + +n = 10000; + +% three distributions: +x = randn( n, 1 ); +y = randn( n, 1 ); +z = randn( n, 1 ); +dx = [ 0 8 0 0 ]; +dy = [ 0 0 8 0 ]; +dz = [ 0 0 0 8 ]; +for k = 1:4 + x((k-1)*n/4+1:k*n/4) = x((k-1)*n/4+1:k*n/4) + dx(k); + y((k-1)*n/4+1:k*n/4) = y((k-1)*n/4+1:k*n/4) + dy(k); + z((k-1)*n/4+1:k*n/4) = z((k-1)*n/4+1:k*n/4) + dz(k); +end +f = figure( 1 ); +covareigen3( x, y, z ); diff --git a/linearalgebra/simulations/covareigenexamples.m b/linearalgebra/code/covareigenexamples.m similarity index 88% rename from linearalgebra/simulations/covareigenexamples.m rename to linearalgebra/code/covareigenexamples.m index f360e8c..2f7a480 100644 --- a/linearalgebra/simulations/covareigenexamples.m +++ b/linearalgebra/code/covareigenexamples.m @@ -5,11 +5,11 @@ set( 0, 'DefaultFigurePosition', [ scrsz(3)/2 scrsz(4)/2 scrsz(3)/2 scrsz(4)/2 ] n = 10000; x = randn( n, 1 ); f = figure( 1 ); -for r = 0.01:0.199:1 +for r = 0.01:0.19:1 fprintf( 'Correlation = %g\n', r ); clf( f ); y = r*x + sqrt(1-r^2)*randn( n, 1 ); - covareigen( x, y, 2, 5.0, 3.0 ); + covareigen( x, y, 0, 5.0, 3.0 ); key = waitforbuttonpress; end return @@ -29,7 +29,7 @@ for d = 0:1:5 x = [ x1; x2 ]; y = [ y1+d2; y2-d2 ]; scrsz = get(0,'ScreenSize'); - covareigen( x, y, 1, 10.0, 7.0 ); + covareigen( x, y, 0, 10.0, 7.0 ); %key = waitforbuttonpress; pause( 1.0 ); end diff --git a/linearalgebra/code/extdata.mat b/linearalgebra/code/extdata.mat new file mode 100644 index 0000000..619c0c1 Binary files /dev/null and b/linearalgebra/code/extdata.mat differ diff --git a/linearalgebra/code/extracellularrecording.m b/linearalgebra/code/extracellularrecording.m new file mode 100644 index 0000000..8488cd1 --- /dev/null +++ b/linearalgebra/code/extracellularrecording.m @@ -0,0 +1,54 @@ +% this script simulates extracellularly recorded +% spike waveforms and saves them in extdata.mat. + +% generate spikes: +n = 1000; +misi = 0.01; +isis = exprnd( misi, n, 1 ); +isis = isis + 0.01; +spikes = cumsum( isis ); +p = rand( size( spikes ) ); + +% spike waveforms: +dt = 0.0001; +waveformt = -0.01:dt:0.01; +waveform1 = 2.0*exp( -(waveformt-0.0003).^2/2.0/0.0005^2 ) - 1.4*exp( -(waveformt-0.0005).^2/2.0/0.0005^2 ); +waveform2 = exp( -waveformt.^2/2.0/0.002^2 ).*cos(2.0*pi*waveformt/0.005); +p12 = 0.5; + +% voltage trace: +noise = 0.2; +time = 0:dt:spikes(end)+3.0*waveformt(end); +voltage = noise*randn( 1, length( time ) ); +for k = 1:length( spikes ) + inx = ceil( spikes(k)/dt ); + if p(k) < p12 + voltage(inx:inx+length(waveformt)-1) = voltage(inx:inx+length(waveformt)-1) + waveform1; + else + voltage(inx:inx+length(waveformt)-1) = voltage(inx:inx+length(waveformt)-1) + waveform2; + end +end + +figure( 1 ); +clf; +plot( time(time<1.0), voltage(time<1.0) ); +hold on; + +% find peaks: +thresh = 0.7; +inx = find( voltage(2:end-1) > thresh & voltage(1:end-2) voltage(3:end) ) + 1; +spiketimes = time(inx); +spikevoltage = voltage(inx); +tinx = inx; +for k=1:2 + inx = find( ( spiketimes(2:end-1)-spiketimes(1:end-2)>0.005 | spikevoltage(2:end-1) > spikevoltage(1:end-2) ) & ( spiketimes(3:end)-spiketimes(2:end-1)>0.005 | spikevoltage(2:end-1) > spikevoltage(3:end) ) )+1; + spiketimes = spiketimes(inx); + spikevoltage = spikevoltage(inx); + tinx = tinx(inx); +end +scatter( spiketimes(spiketimes<1.0), spikevoltage(spiketimes<1.0), 100.0, 'r', 'filled' ); +%scatter( t(tinx), v(tinx), 100.0, 'r', 'filled' ); +hold off; + +% save data to file: +save( 'extdata', 'time', 'voltage', 'spiketimes', 'waveformt', 'waveform1', 'waveform2' ); diff --git a/linearalgebra/code/gaussian.m b/linearalgebra/code/gaussian.m new file mode 100644 index 0000000..cdac6d5 --- /dev/null +++ b/linearalgebra/code/gaussian.m @@ -0,0 +1,25 @@ +% Gaussian density from histogram: +x = randn( 1000000, 1 ); +[ n, c ] = hist( x, 100 ); +n = n/sum(n)/(c(2)-c(1)); +bar( c, n ); +hold on; +% equation p(x): +xx = -5:0.01:5; +p=exp(-xx.^2/2.0)/sqrt(2.0*pi); +plot( xx, p, 'r', 'LineWidth', 3 ) + +% with mean=2 and sigma=0.5: +mu = 2.0; +sig = 0.5; +x = sig*x + mu; +[ n, c ] = hist( x, 100 ); +n = n/sum(n)/(c(2)-c(1)); +bar( c, n ); +% equation: +p=exp(-(xx-mu).^2/2.0/sig^2)/sqrt(2.0*pi*sig^2); +plot( xx, p, 'r', 'LineWidth', 3 ) +hold off; +xlabel( 'x' ); +ylabel( 'p(x)' ); +title( 'Gaussian distribution' ); diff --git a/linearalgebra/code/matrix2dtrafos.m b/linearalgebra/code/matrix2dtrafos.m new file mode 100644 index 0000000..2bd7546 --- /dev/null +++ b/linearalgebra/code/matrix2dtrafos.m @@ -0,0 +1,21 @@ +% Visualize some common matrix transformations +% in a 2D coordinate system + +disp( 'Click into the plot to advance to the next matrix' ) +matrixbox( [ 1 0; 0 1], 'Identity' ); +matrixbox( [ 2 0; 0 1], 'Scale x' ); +matrixbox( [ 1 0; 0 2], 'Scale y' ); +matrixbox( [ 2 0; 0 2], 'Scale x and y' ); +matrixbox( [ 0.5 0; 0 0.5], 'Scale x and y' ); +matrixbox( [ -1 0; 0 1], 'Flip x' ); +matrixbox( [ 1 0; 0 -1], 'Flip y' ); +matrixbox( [ -1 0; 0 -1], 'Flip both' ); +matrixbox( [ 1 2; 0 1], 'Shear x' ); +matrixbox( [ 1 0; 2 1], 'Shear y' ); +matrixbox( [ 0.5 1; 1 0.5], 'Something A' ); +matrixbox( [ 0.5 1; 1.2 0.6], 'Something B' ); +% rotation matrices: +for deg = 0:10:360 + phi = deg*pi/180.0; + matrixbox( [ cos(phi) -sin(phi); sin(phi) cos(phi)], sprintf( 'Rotate %.0f', deg ) ); +end diff --git a/linearalgebra/code/matrixbox.m b/linearalgebra/code/matrixbox.m new file mode 100644 index 0000000..6cc0aa1 --- /dev/null +++ b/linearalgebra/code/matrixbox.m @@ -0,0 +1,45 @@ +function matrixbox( m, s ) +% visualizes the effect of a matrix m on a set of vectors forming a box +% m: a 2x2 matrix +% s: a string plotted as the title of the plot +% this function is called by matrix2dtrafos.m + + % the 5 vectors that point into the cornes of a unit square: + v = [ 0 1 1 0 0; + 0 0 1 1 0 ]; + % transform v by means of m into new vector w: + w = m*v; + clf; + hold on; + % axis: + plot( [-2 2], [0 0], 'k', 'LineWidth', 1 ); + plot( [0 0], [-2 2], 'k', 'LineWidth', 1 ); + % old vectors: + plot( v(1,:), v(2,:), 'k', 'LineWidth', 1.0 ) + quiver( v(1,1), v(2,1), v(1,3), v(2,3), 1.0, 'k', 'LineWidth', 2.0 ); + scatter( v(1,2), v(2,2), 60.0, 'filled', 'k' ); + % transformed vectors: + plot( w(1,:), w(2,:), 'b', 'LineWidth', 2.0 ) + quiver( w(1,1), w(2,1), w(1,3), w(2,3), 1.0, 'b', 'LineWidth', 3.0 ); + scatter( w(1,2), w(2,2), 100.0, 'filled', 'b' ); + % eigenvectors: + [ev ed] = eig(m); + n = ev*ed; + if isreal( n ) + quiver( [0 0], [0 0], n(1,:), n(2,:), 1.0, 'r', 'LineWidth', 2.0 ); + text( 0.1, 0.2, sprintf( '\\lambda_1 = %.3g', ed(1,1) ), 'Units', 'normalized' ) + text( 0.1, 0.1, sprintf( '\\lambda_2 = %.3g', ed(2,2) ), 'Units', 'normalized' ) + end + hold off; + xlim( [ -2 2 ] ); + ylim( [ -2 2 ] ); + axis( 'equal' ); + m( abs(m) < 1e-3 ) = 0.0; % make zeros really a zero + text( 0.7, 0.15, 'A =', 'Units', 'normalized' ) + text( 0.8, 0.2, sprintf( '%.3g', m(1,1) ), 'Units', 'normalized' ) + text( 0.9, 0.2, sprintf( '%.3g', m(1,2) ), 'Units', 'normalized' ) + text( 0.8, 0.1, sprintf( '%.3g', m(2,1) ), 'Units', 'normalized' ) + text( 0.9, 0.1, sprintf( '%.3g', m(2,2) ), 'Units', 'normalized' ) + title( s ); + waitforbuttonpress; +end diff --git a/linearalgebra/code/matrixmultiplicationlatex.m b/linearalgebra/code/matrixmultiplicationlatex.m new file mode 100644 index 0000000..dbb66de --- /dev/null +++ b/linearalgebra/code/matrixmultiplicationlatex.m @@ -0,0 +1,85 @@ +% open a file to write in the LaTeX commands: +f = fopen( 'matrices.tex','w'); +fprintf( f, '\\documentclass{exam}\n' ); +fprintf( f, '\\usepackage{amsmath}\n' ); +fprintf( f, '\\begin{document}\n' ); + +for k = 1:40 + + % compute row and column numbers: + pd = rand( 1, 1 ); + if pd < 0.05 + % row vector multiplication that might not be possible: + am = 1; + an = randi( [ 2 4 ]); + bm = randi( [ 2 4 ]); + bn = 1; + elseif pd < 0.1 + % column vector multiplication that might not be possible: + am = randi( [ 2 4 ]); + an = 1; + bm = 1; + bn = randi( [ 2 4 ]); + elseif pd < 0.4 + % row vector multiplication that is possible: + am = 1; + an = randi( [ 2 4 ]); + bm = an; + bn = 1; + elseif pd < 0.5 + % column vector multiplication that is possible: + am = randi( [ 2 4 ]); + an = 1; + bm = 1; + bn = am; + elseif pd < 0.6 + % matrix multiplication that might not be possible: + am = randi( [ 2 4 ]); + an = randi( [ 2 4 ]); + bm = randi( [ 2 4 ]); + bn = randi( [ 2 4 ]); + else + % matrix multiplication that is possible: + am = randi( [ 2 4 ]); + an = randi( [ 2 4 ]); + bm = an; + bn = randi( [ 2 4 ]); + end + % generate the matrices: + a = randi( [-4 4], am, an ); + b = randi( [-4 4], bm, bn ); + % write them out as LaTeX code: + % matrix a: + fprintf( f, ' \\[ \\begin{pmatrix}' ); + for r = 1:size( a, 1 ) + for c = 1:size( a, 2 ) + if c > 1 + fprintf( f, ' &' ); + end + fprintf( f, ' %d', a(r,c) ); + end + if r < size( a, 1 ) + fprintf( f, ' \\\\' ); + end + end + fprintf( f, ' \\end{pmatrix} \\cdot\n' ); + % matrix b: + fprintf( f, ' \\begin{pmatrix}' ); + for r = 1:size( b, 1 ) + for c = 1:size( b, 2 ) + if c > 1 + fprintf( f, ' &' ); + end + fprintf( f, ' %d', b(r,c) ); + end + if r < size( b, 1 ) + fprintf( f, ' \\\\' ); + end + end + fprintf( f, ' \\end{pmatrix} = \\]\n\n' ); + +end + +% close the document and the file: +fprintf( f, '\\end{document}\n' ); +fclose( f ); diff --git a/linearalgebra/code/p-unit_spike_times.mat b/linearalgebra/code/p-unit_spike_times.mat new file mode 100644 index 0000000..75f53e6 Binary files /dev/null and b/linearalgebra/code/p-unit_spike_times.mat differ diff --git a/linearalgebra/code/p-unit_stimulus.mat b/linearalgebra/code/p-unit_stimulus.mat new file mode 100644 index 0000000..b6d0b25 Binary files /dev/null and b/linearalgebra/code/p-unit_stimulus.mat differ diff --git a/linearalgebra/code/pca2d.m b/linearalgebra/code/pca2d.m new file mode 100644 index 0000000..6879f8a --- /dev/null +++ b/linearalgebra/code/pca2d.m @@ -0,0 +1,95 @@ +function pca2d( x, y, pm, w, h ) +% computes covariance matrix from the pairs x, y +% diagonalizes covariance matrix, i.e. performs a PCA on [ x, y ] +% x and y are column vectors +% pm: 0 - scatter of data, 1 - histogram, 2 - multivariate gauss from +% covariance matrix, 1 and 2 require w and h +% w and h are the width and the height (in data units) for plotting +% histograms instead of scatter + + % covariance matrix: + cv = cov( [ x y ] ); + + % eigen values: + [ v , d] = eig( cv ) + s = sign( v ); + s(1,:) = s(2,:); + v = v .* s; + + % plots: + subplot( 2, 2, 1 ); + hold on; + + if (pm > 0) & (nargin == 5) + if pm == 1 + % histogram of data: + xp = -w:0.5:w; + yp = -h:0.5:h; + [n,c] = hist3([x y], { xp, yp } ); + contourf( c{1}, c{2}, n' ); + else + % bivariate Gaussian: + xp = -w:0.1:w; + yp = -h:0.1:h; + [xg,yg] = meshgrid( xp, yp ); + xy = [ xg(:) yg(:) ]; + gauss = reshape( exp(-0.5*diag(xy*inv(cv)*xy'))/sqrt((2.0*pi)^2.0*det(cv)), size( xg ) ); + contourf( xp, yp, gauss ) + end + colormap( 'gray' ); + else + % scatter plot: + scatter( x, y, 'b', 'filled', 'MarkerEdgeColor', 'white' ); + end + + % plot eigenvectors: + quiver( ones( 1, 2 ).*mean( x ), ones( 1, 2 )*mean(y), v(1,:).*sqrt(diag(d))', v(2,:).*sqrt(diag(d))', 'r', 'LineWidth', 3, 'AutoScale', 'off', 'AutoScaleFactor', 1.0, 'MaxHeadSize', 0.7 ) + + xlabel( 'x' ); + ylabel( 'y' ); + axis( 'equal' ); + hold off; + + % histogram of x values: + subplot( 2, 2, 3 ); + hist( x, 50, 'b' ); + xlabel( 'x' ); + ylabel( 'count' ); + + % sort the eigenvalues: + [d,inx] = sort( diag(d), 'descend' ); + + subplot( 2, 2, 2 ); + hold on; + % subtract means: + x = x - mean( x ); + y = y - mean( y ); + % project onto eigenvectors: + nc = [ x y ] * v(:,inx); + cv = cov( nc ) + [ v , d] = eig( cv ) + if (pm > 0) & (nargin == 5) + if pm == 1 + % histogram of data: + [n,c] = hist3( nc, { xp, yp } ); + contourf( c{1}, c{2}, n' ); + else + % bivariate Gaussian: + gauss = reshape( exp(-0.5*diag(xy*inv(cv)*xy'))/sqrt((2.0*pi)^2.0*det(cv)), size( xg ) ); + contourf( xp, yp, gauss ) + end + else + % scatter plot: + scatter( nc(:,1), nc(:,2), 'b', 'filled', 'MarkerEdgeColor', 'white' ); + end + xlabel( 'n_x' ); + ylabel( 'n_y' ); + axis( 'equal' ); + hold off; + + % histogram of new x values: + subplot( 2, 2, 4 ); + hist( nc(:,1), 50, 'b' ); + xlabel( 'n_x' ); + ylabel( 'count' ); +end diff --git a/linearalgebra/code/pca2dexamples.m b/linearalgebra/code/pca2dexamples.m new file mode 100644 index 0000000..252ceda --- /dev/null +++ b/linearalgebra/code/pca2dexamples.m @@ -0,0 +1,33 @@ +scrsz = get( 0, 'ScreenSize' ); +set( 0, 'DefaultFigurePosition', [ scrsz(3)/2 scrsz(4)/2 scrsz(3)/2 scrsz(4)/2 ] ); + +% correlation coefficients: +n = 10000; +x = randn( n, 1 ); +f = figure( 1 ); +for r = 0.01:0.19:1 + fprintf( 'Correlation = %g\n', r ); + clf( f ); + y = r*x + sqrt(1-r^2)*randn( n, 1 ); + pca2d( x, y, 0, 5.0, 3.0 ); + waitforbuttonpress; +end + +% two distributions: +n = 10000; +x1 = randn( n/2, 1 ); +y1 = randn( n/2, 1 ); +x2 = randn( n/2, 1 ); +y2 = randn( n/2, 1 ); +f = figure( 1 ); +pause( 'on' ); +for d = 0:1:5 + fprintf( 'Distance = %g\n', d ); + clf( f ); + d2 = d / sqrt( 2.0 ); + x = [ x1; x2 ]; + y = [ y1+d2; y2-d2 ]; + scrsz = get(0,'ScreenSize'); + pca2d( x, y, 0, 10.0, 7.0 ); + waitforbuttonpress; +end diff --git a/linearalgebra/code/pca3d.m b/linearalgebra/code/pca3d.m new file mode 100644 index 0000000..6f2a6bd --- /dev/null +++ b/linearalgebra/code/pca3d.m @@ -0,0 +1,60 @@ +function pca3d( x, y, z ) +% computes covariance matrix from the triples x, y, z +% diagonalizes covariance matrix, i.e. performs pca on [ x, y, z ] +% x, y and z are column vectors + + % covariance matrix: + cv = cov( [ x y z ] ); + + % eigen values: + [ v , d] = eig( cv ) + + % plots: + subplot( 1, 2, 1 ); + hold on; + + % scatter plot: + view( 3 ); + scatter3( x, y, z, 0.1, 'b', 'filled', 'MarkerEdgeColor', 'blue' ); + xlabel( 'x' ); + ylabel( 'y' ); + zlabel( 'z' ); + grid on; + + % plot eigenvectors: + quiver3( ones( 1, 3 ).*mean( x ), ones( 1, 3 )*mean(y), ones( 1, 3 )*mean(z), v(1,:).*sqrt(diag(d))', v(2,:).*sqrt(diag(d))', v(3,:).*sqrt(diag(d))', 'r', 'LineWidth', 3, 'AutoScale', 'off', 'AutoScaleFactor', 1.0, 'MaxHeadSize', 0.7 ) + + %axis( 'equal' ); + hold off; + + % 2D scatter plots: + subplot( 2, 6, 4 ); + scatter( x, y, 'b', 'filled', 'MarkerEdgeColor', 'white' ); + xlabel( 'x' ) + ylabel( 'y' ) + subplot( 2, 6, 5 ); + scatter( x, z, 'b', 'filled', 'MarkerEdgeColor', 'white' ); + xlabel( 'x' ) + ylabel( 'z' ) + subplot( 2, 6, 6 ); + scatter( y, z, 'b', 'filled', 'MarkerEdgeColor', 'white' ); + xlabel( 'y' ) + ylabel( 'z' ) + + % sort the eigenvalues: + [d,inx] = sort( diag(d), 'descend' ); + + subplot( 2, 2, 4 ); + hold on; + % subtract means: + x = x - mean( x ); + y = y - mean( y ); + % project onto eigenvectors: + nx = [ x y z ] * v(:,inx); + scatter( nx(:,1), nx(:,2), 'b', 'filled', 'MarkerEdgeColor', 'white' ); + xlabel( 'ex' ) + ylabel( 'ey' ) + axis( 'equal' ); + hold off; + +end diff --git a/linearalgebra/code/pca3dexamples.m b/linearalgebra/code/pca3dexamples.m new file mode 100644 index 0000000..d2d790f --- /dev/null +++ b/linearalgebra/code/pca3dexamples.m @@ -0,0 +1,19 @@ +scrsz = get( 0, 'ScreenSize' ); +set( 0, 'DefaultFigurePosition', [ scrsz(3)/2 scrsz(4)/2 scrsz(3)/2 scrsz(4)/2 ] ); + +n = 10000; + +% three distributions: +x = randn( n, 1 ); +y = randn( n, 1 ); +z = randn( n, 1 ); +dx = [ 0 8 0 0 ]; +dy = [ 0 0 8 0 ]; +dz = [ 0 0 0 8 ]; +for k = 1:4 + x((k-1)*n/4+1:k*n/4) = x((k-1)*n/4+1:k*n/4) + dx(k); + y((k-1)*n/4+1:k*n/4) = y((k-1)*n/4+1:k*n/4) + dy(k); + z((k-1)*n/4+1:k*n/4) = z((k-1)*n/4+1:k*n/4) + dz(k); +end +f = figure( 1 ); +pca3d( x, y, z ); diff --git a/linearalgebra/simulations/plotvector.m b/linearalgebra/code/plotvector.m similarity index 100% rename from linearalgebra/simulations/plotvector.m rename to linearalgebra/code/plotvector.m diff --git a/linearalgebra/simulations/plotvector3.m b/linearalgebra/code/plotvector3.m similarity index 100% rename from linearalgebra/simulations/plotvector3.m rename to linearalgebra/code/plotvector3.m diff --git a/linearalgebra/code/simplematrix2dtrafos.m b/linearalgebra/code/simplematrix2dtrafos.m new file mode 100644 index 0000000..0b0cfe4 --- /dev/null +++ b/linearalgebra/code/simplematrix2dtrafos.m @@ -0,0 +1,21 @@ +% Visualize some common matrix transformations +% in a 2D coordinate system +% this uses the simplematrixbox() function for visualization +% use the matrix2dtrafos script for the the nicer matrixbox() function. + +disp( 'Click into the plot to advance to the next matrix' ) +simplematrixbox( [ 1 0; 0 1], 'Identity' ); +simplematrixbox( [ 2 0; 0 1], 'Scale x' ); +simplematrixbox( [ 1 0; 0 2], 'Scale y' ); +simplematrixbox( [ 2 0; 0 2], 'Scale x and y' ); +simplematrixbox( [ 0.5 0; 0 0.5], 'Scale x and y' ); +simplematrixbox( [ -1 0; 0 1], 'Flip x' ); +simplematrixbox( [ 1 0; 0 -1], 'Flip y' ); +simplematrixbox( [ -1 0; 0 -1], 'Flip both' ); +simplematrixbox( [ 1 1; 0 1], 'Shear x' ); +simplematrixbox( [ 1 0; 1 1], 'Shear y' ); +% rotation matrices: +for deg = 0:10:360 + phi = deg*pi/180.0; + simplematrixbox( [ cos(phi) -sin(phi); sin(phi) cos(phi)], sprintf( 'Rotate %.0f', deg ) ); +end diff --git a/linearalgebra/code/simplematrixbox.m b/linearalgebra/code/simplematrixbox.m new file mode 100644 index 0000000..bb94254 --- /dev/null +++ b/linearalgebra/code/simplematrixbox.m @@ -0,0 +1,21 @@ +function simplematrixbox( a, s ) +% visualizes the effect of a matrix a on a set of vectors forming a box +% a: a 2x2 matrix +% s: a string plotted as the title of the plot +% this function is called by simplematrix2dtrafos.m +% this is a simple version of the more elaborate matrixbox() function. + + x = [ 0 1 1 0 0 1; 0 0 1 1 0 1 ]; + plot( x(1,:), x(2,:), '-b' ); + hold on; + y = a*x; + plot( y(1,:), y(2,:), '-r' ); + [ ev ed ] = eig( a ); + ev = ev * ed; + quiver( [0 0], [0 0], ev(1,:), ev(2,:), 1.0, 'g' ) + hold off; + xlim( [-2 2 ] ) + ylim( [-2 2] ) + title( s ); + waitforbuttonpress; +end diff --git a/linearalgebra/code/soundmixture.m b/linearalgebra/code/soundmixture.m new file mode 100644 index 0000000..7cef0c8 --- /dev/null +++ b/linearalgebra/code/soundmixture.m @@ -0,0 +1,72 @@ +% read in wav files: +[s1, fs1 ] = audioread( 'PeterUndDerWolf.wav' ); +[s2, fs2 ] = audioread( 'Tielli-Kraulis.wav' ); +[s3, fs3 ] = audioread( 'Chorthippus_biguttulus.wav' ); + +% take out left channel and minimum number of samples: +n = min( [ size( s1, 1 ), size( s2, 1 ), size( s3, 1 ) ] ); +%n = 300000; +x1 = s1(1:n,1)'; +x2 = s2(1:n,1)'; +x3 = s3(1:n,1)'; +clear s1 s2 s3; + +% plot the sound waves: +% dt = 1/fs1; +% time = 0:dt:(length(x1)-1)*dt; +% plot( time, x1 ); +% plot( time, x2 ); +% plot( time, x3 ); + +% play original sounds: +% disp( 'Playing x1 (Peter und der Wolf)' ) +% a = audioplayer( x1, fs1 ); +% playblocking( a ); +% disp( 'Playing x2 (Martin Tielli)' ) +% a = audioplayer( x2, fs2 ); +% playblocking( a ); +% disp( 'Playing x3 (Grasshopper song)' ) +% a = audioplayer( x3, fs3 ); +% playblocking( a ); + +% mix them: +m = [ 1.0 0.3 0.4; 0.1 0.6 0.4; 0.7 0.1 0.7 ]; +y = m*[ x1; x2; x3 ]; + +% add noise: +%y = y + 0.03*randn(size(y)); + +% play mixtures: +% disp( 'Playing mixture y1' ) +% a = audioplayer( y(1,:), fs1 ); +% playblocking( a ); +% disp( 'Playing mixture y2' ) +% a = audioplayer( y(2,:), fs2 ); +% playblocking( a ); +% disp( 'Playing mixture y3' ) +% a = audioplayer( y(3,:), fs3 ); +% playblocking( a ); + +% demix them: +disp( 'Inverse mixing matrix:' ) +dm = inv(m) +dx = dm*y; + +% estimate demixing matrix: +size( y ) +cv = cov( y' ); +[ ev ed ] = eig( cv ); +disp( 'Estimated demixing matrix:' ) +ev + +%play mixtures: +% disp( 'Playing x1 (Peter und der Wolf) recovered from mixtures' ) +% a = audioplayer( dx(1,:), fs1 ); +% playblocking( a ); +% disp( 'Playing x3 (Martin Tielli) recovered from mixtures' ) +% a = audioplayer( dx(2,:), fs2 ); +% playblocking( a ); +% disp( 'Playing x3 (Grasshopper song) recovered from mixtures' ) +% a = audioplayer( dx(3,:), fs3 ); +% playblocking( a ); + diff --git a/linearalgebra/code/spikesortingwave.m b/linearalgebra/code/spikesortingwave.m new file mode 100644 index 0000000..da7c251 --- /dev/null +++ b/linearalgebra/code/spikesortingwave.m @@ -0,0 +1,118 @@ +% load data into time, voltage and spiketimes +load( 'extdata' ); + +% indices into voltage trace of spike times: +dt = time( 2) - time(1); +tinx = round(spiketimes/dt)+1; + +% plot voltage trace with dettected spikes: +figure( 1 ); +clf; +plot( time, voltage, '-b' ) +hold on +scatter( time(tinx), voltage(tinx), 'r', 'filled' ); +xlabel( 'time [ms]' ); +ylabel( 'voltage' ); +hold off + +% spike waveform snippets: +w = ceil( 0.005/dt ); +vs = []; +for k=1:length(tinx) + vs = [ vs; voltage(tinx(k)-w:tinx(k)+w-1) ]; +end +ts = time(1:size(vs,2)); +ts = ts - ts(floor(length(ts)/2)); + +% % plot snippets: +figure( 2 ); +clf; +hold on +for k=1:size(vs,1) + plot( ts, vs(k,:), '-b' ); +end +xlabel( 'time [ms]' ); +ylabel( 'voltage' ); +hold off + +% pca: +cv = cov( vs ); +[ ev , ed ] = eig( cv ); +[d,dinx] = sort( diag(ed), 'descend' ); + +figure( 3 ); +clf; +subplot( 4, 2, 1 ); +imagesc( cv ); +xlabel( 'time bin' ); +ylabel( 'time bin' ); +title( 'covariance matrix' ); +caxis([-0.1 0.1]) + +% spectrum of eigenvalues: +subplot( 4, 2, 2 ); +scatter( 1:length(d), d, 'b', 'filled' ); +xlabel( 'index' ); +ylabel( 'eigenvalue' ); + +% features: +subplot( 4, 2, 5 ); +plot( 1000.0*ts, ev(:,dinx(1)), 'r', 'LineWidth', 2 ); +xlabel( 'time [ms]' ); +ylabel( 'eigenvector 1' ); +subplot( 4, 2, 6 ); +plot( 1000.0*ts, ev(:,dinx(2)), 'g', 'LineWidth', 2 ); +xlabel( 'time [ms]' ); +ylabel( 'eigenvector 2' ); + +% project onto eigenvectors: +nx = vs * ev(:,dinx(1)); +ny = vs * ev(:,dinx(2)); +%scatter( nx, ny, 'b', 'filled', 'MarkerEdgeColor', 'white' ); + +% clustering (two clusters): +%kx = kmeans( [ nx, ny ], 2 ); +% nx smaller or greater a threshold: +kthresh = 1.6; +kx = ones( size( nx ) ); +kx(nx 0 ) & ( inx+wr <= size( stimulus, 1 ) ) + nspikes = nspikes + 1; + snip = stimulus( inx-wl:inx+wr, 2 ); + spikesnippets( nspikes, : ) = snip; % - mean(snip); + end + end + end + % delete not used snippets: + spikesnippets(nspikes+1:end,:) = []; + stavgtime = [-left:dt:right]; + meanrate = nspikes/length(spikes)/(stimulus(end,1)-stimulus(1,1)); + + % spike-triggered average: + stavg = mean( spikesnippets, 1 ); + + % loop over stimulus: + nstim = size( stimulus, 1 )-nw+1; + stimsnippets = zeros( nstim, nw ); + stimsnippetstime = zeros( nstim, 1 ); + for j=1:nstim + snip = stimulus( j:j+wr+wl, 2 ); + stimsnippets(j,:) = snip; % - mean(snip); + stimsnippetstime(j) = j*dt; + end + + % projection onto sta: + spikeonsta = spikesnippets * stavg'; + stimonsta = stimsnippets * stavg'; + + % projection onto orthogonal to sta: + orthos = null( stavg ); + mixcoef = rand(size( orthos, 2 ), 1); + mixcoef(length(mixcoef)/10:end) = 0.0; + staortho = orthos*mixcoef; + % stavg*staortho + staortho = staortho/(staortho'*staortho); + spikeonstaortho = spikesnippets * staortho; + stimonstaortho = stimsnippets * staortho; + + % psth binned: + ratetime = 0:dt:stimulus(end,1); +% rate = zeros( size( ratetime ) ); +% for k = 1:length( spikes ) +% [n, ~] = hist( spikes{k}, ratetime ); +% rate = rate + n/dt/length( spikes ); +% end + % kernel psth: + kernelsigma = 0.001; + windowtime = -5.0*kernelsigma:dt:5.0*kernelsigma; + window = normpdf( windowtime, 0.0, kernelsigma )/length(spikes); +% plot( 1000.0*windowtime, window ); + w2 = floor( length( windowtime )/2 ); + kernelrate = zeros( size( ratetime ) ); + for k = 1:length( spikes ) + times = spikes{k}; + for j = 1:length(times) + % index of spike in rate: + inx = round(times(j)/dt); + if ( inx - w2 > 0 ) & ( inx + w2 < length( kernelrate ) ) + kernelrate(inx-w2:inx+w2) = kernelrate(inx-w2:inx+w2) + window; + end + end + end + + if nargout == 0 + % sta plot: + figure( 1 ); + subplot( 3, 2, 1 ) + plot( 1000.0*stavgtime, staortho, '-r', 'LineWidth', 3 ) + hold on; + plot( 1000.0*stavgtime, stavg, '-b', 'LineWidth', 3 ) + hold off; + xlabel( 'time [ms]' ); + ylabel( 'stimulus' ); + title( 'Spike-triggered average' ); + legend( 'ortho', 'STA' ); + + % 2D scatter of projections: + subplot( 3, 2, 2 ) + scatter( stimonsta, stimonstaortho, 40.0, 'b', 'filled', 'MarkerEdgeColor', 'white' ) + hold on; + scatter( spikeonsta, spikeonstaortho, 20.0, 'r', 'filled', 'MarkerEdgeColor', 'white', 'LineWidth', 1.0 ) + hold off; + xlabel( 'projection sta' ); + ylabel( 'projection ortho' ); + title( 'Projections' ); + + % histogram of projections onto sta: + subplot( 3, 2, 3 ) + [ n, projections ] = hist( stimonsta, 50 ); + bw = (projections(2)-projections(1)); + pstim = n / sum(n)/bw; + bar( projections, pstim, 'b' ); + hold on; + [ n, ~ ] = hist( spikeonsta, projections ); + pstimspike = n / sum(n)/bw; + bar( projections, pstimspike, 'r' ); + xlabel( 'projection x' ); + title( 'Projection onto STA' ); + xlim( [projections(1) projections(end)] ); + hold off; + legend( 'p(x)', 'p(x|spikes)' ); + + % nonlinearity for orthogonal projections: + subplot( 3, 2, 5 ) + nonlinearity = meanrate*pstimspike./pstim; + plot( projections(pstim>0.01), nonlinearity(pstim>0.01), '-r', 'LineWidth', 3 ); + xlim( [projections(1) projections(end)] ); + ylim( [0 1000 ]) + xlabel( 'projection x' ); + ylabel( 'meanrate*p(x|spikes)/p(x) [Hz]' ); + title( 'Nonlinearity'); + + % histogram of projections onto orthogonal sta: + subplot( 3, 2, 4 ) + [ n, ~] = hist( stimonstaortho, projections ); + pstimortho = n / sum(n)/bw; + bar( projections, pstimortho, 'b' ); + hold on; + [ n, ~ ] = hist( spikeonstaortho, projections ); + pstimspikeortho = n / sum(n)/bw; + bar( projections, pstimspikeortho, 'r' ); + xlim( [projections(1) projections(end)] ); + xlabel( 'projection x' ); + title( 'Projection onto orthogonal to STA' ); + hold off; + legend( 'p(x)', 'p(x|spikes)' ); + + % nonlinearity for orthogonal projections: + subplot( 3, 2, 6 ) + nonlinearityortho = meanrate*pstimspikeortho./pstimortho; + plot( projections(pstimortho>0.01), nonlinearityortho(pstimortho>0.01), '-r', 'LineWidth', 3 ); + xlim( [projections(1) projections(end)] ); + ylim( [0 1000 ]) + xlabel( 'projection x' ); + ylabel( 'meanrate*p(x|spikes)/p(x) [Hz]' ); + title( 'Nonlinearity'); + end + + % stimulus reconstruction with STA: + stareconstruction = zeros( size( stimulus, 1 ), 1 ); + for k = 1:length( spikes ) + times = spikes{k}; + for j = 1:length(times) + % index of spike in stimulus: + inx = round(times(j)/dt); + if ( inx-wl > 0 ) & ( inx+wr <= size( stimulus, 1 ) ) + stareconstruction( inx-wl:inx+wr ) = stareconstruction( inx-wl:inx+wr ) + stavg'; + end + end + end + stareconstruction = stareconstruction/length(spikes); + + if nargout == 0 + % linear stimulus reconstruction: + figure( 2 ) + ax1 = subplot( 3, 1, 1 ); + plot( 1000.0*stimulus(:,1), stimulus(:,2), 'g', 'LineWidth', 2 ); + hold on; + plot( 1000.0*stimulus(:,1), stareconstruction, 'r', 'LineWidth', 2 ); + ylabel( 'stimulus' ); + hold off; + legend( 'stimulus', 'reconstruction' ); + + % stimulus projection onto sta: + ax2 = subplot( 3, 1, 2 ); + % plot( 1000.0*ratetime, rate, '-b', 'LineWidth', 2 ) + plot( 1000.0*ratetime, kernelrate-mean(kernelrate), '-b', 'LineWidth', 2 ) + hold on; + plot( 1000.0*(stimsnippetstime+left), 2.0*stimonsta*meanrate, 'r', 'LineWidth', 2 ); + ylabel( 'rate [Hz]' ); + hold off; + legend( 'rate', 'stimulus projection on STA' ); + + % sta with nonlinearity: + ax3 = subplot( 3, 1, 3 ); + plot( 1000.0*ratetime, kernelrate, '-b', 'LineWidth', 2 ) + hold on; + xmax = max(projections(pstim>0.01)); + stimonstax = stimonsta; + stimonstax( stimonstax > xmax ) = xmax; + sinx = round((stimonstax-projections(1))/bw); + sinx( sinx < 1 ) = 1; + stastimulus = nonlinearity( sinx ); + plot( 1000.0*(stimsnippetstime+left), stastimulus, 'r', 'LineWidth', 2 ); + legend( 'rate', 'LNP' ); + xlabel( 'time [ms]' ); + ylabel( 'rate [Hz]' ); + hold off; + linkaxes( [ax1 ax2 ax3], 'x' ); + end + +end diff --git a/linearalgebra/code/stastcexample.m b/linearalgebra/code/stastcexample.m new file mode 100644 index 0000000..32500fd --- /dev/null +++ b/linearalgebra/code/stastcexample.m @@ -0,0 +1,31 @@ +clear; +addpath( '../../pointprocesses/simulations/' ); + +set( 0, 'DefaultTextFontSize', 22.0 ); +set( 0, 'DefaultAxesFontSize', 22.0 ); + +% load data +load( 'p-unit_stimulus.mat' ); +load( 'p-unit_spike_times.mat' ); +%load( 'pyramidal_noise_2014-09-02-af_cutoff_50_contr_5.mat' ); +% load( 'pyramidal_noise_2014-09-02-ab_cutoff_300_contr_5.mat' ); +% for k = 1:length( spike_times ) +% spike_times{k} = spike_times{k} * 0.001; +% end +% stimulus = stimulus(1:20000*5,:); + +%dt = stimulus(2,1) - stimulus(1,1); +%spike_times = lifadaptspikes( 20, 50+100.0*stimulus(:,2), dt, 0.1, 0.04, 10.0 ); +%spike_times = lifspikes( 20, 12+30.0*stimulus(:,2), dt, 0.1 ); +%spike_times = lifspikes( 20, 20.0+30.0*stimulus(:,2), dt, 0.0001 ); + +%figure( 1 ); +%clf; +%spikeraster( spike_times ); +%isivec = isis( spike_times ); +%isihist( isivec ); +%isiserialcorr( isivec, 20 ); +%fano( spike_times ); + +sta( stimulus(1:5:length(stimulus),:), spike_times, 0.05, 0.01 ); +%stc( stimulus(1:5:length(stimulus),:), spike_times, 0.05, 0.01 ); diff --git a/linearalgebra/code/stc.m b/linearalgebra/code/stc.m new file mode 100644 index 0000000..c787b78 --- /dev/null +++ b/linearalgebra/code/stc.m @@ -0,0 +1,66 @@ +function stc( stimulus, spikes, left, right ) +% computes the spike-triggered covariance matrix +% stimulus: the stimulus as a nx2 matrix with the first column being time +% in seconds and the second column being the actual stimulus +% spikes: a cell array of vectors of spike times +% left: the time to the left of each spike +% right: the time to the right of each spike + + % time indices: + dt = stimulus(2,1) - stimulus(1,1); + wl = round( left/dt ); + wr = round( right/dt ); + nw = wl+wr+1; + + % spike-triggered average with snippets: + [ stavg, stavgtime, spikesnippets, stimsnippets, meanrate ] = sta( stimulus, spikes, left, right ); + + % spike-triggered covariance matrix: + figure( 3 ); + subplot( 2, 2, 1 ); + spikescv = cov( spikesnippets ); + imagesc( spikescv ); + caxis([-0.1 0.1]) + + % stimulus covariance matrix: + subplot( 2, 2, 2 ); + stimcv = cov( stimsnippets ); + imagesc( stimcv ); + caxis([-0.1 0.1]) + + subplot( 2, 1, 2 ); + imagesc( spikescv-stimcv ); + caxis([-0.01 0.01]) + + % eigenvalues: + %[ ev , ed ] = eig( spikescv-stimcv ); + [ ev , ed ] = eig( spikescv ); + [d,dinx] = sort( diag(ed), 'descend' ); + + % spectrum of eigenvalues: + figure( 4 ); + subplot( 3, 1, 1 ); + scatter( 1:length(d), d, 'b', 'filled' ); +% scatter( 1:length(d), d/sum(abs(d)), 'b', 'filled' ); + xlabel( 'index' ); + ylabel( 'eigenvalue [% variance]' ); + + % features: + subplot( 3, 2, 5 ); + plot( 1000.0*stavgtime, ev(:,dinx(1)), 'g', 'LineWidth', 2 ); + xlabel( 'time [ms]' ); + ylabel( 'eigenvector 1' ); + subplot( 3, 2, 6 ); + plot( 1000.0*stavgtime, ev(:,dinx(2)), 'r', 'LineWidth', 2 ); + xlabel( 'time [ms]' ); + ylabel( 'eigenvector 2' ); + + % project onto eigenvectors: + nx = spikesnippets * ev(:,dinx(1)); + ny = spikesnippets * ev(:,dinx(2)); + subplot( 3, 1, 2 ); + scatter( nx, ny, 'b', 'filled', 'MarkerEdgeColor', 'white' ); + xlabel( 'projection onto eigenvector 1' ); + ylabel( 'projection onto eigenvector 2' ); + +end diff --git a/linearalgebra/exercises/correlations.pdf b/linearalgebra/exercises/correlations.pdf new file mode 100644 index 0000000..4ca95f8 Binary files /dev/null and b/linearalgebra/exercises/correlations.pdf differ diff --git a/linearalgebra/exercises/correlations.tex b/linearalgebra/exercises/correlations.tex new file mode 100644 index 0000000..222e15d --- /dev/null +++ b/linearalgebra/exercises/correlations.tex @@ -0,0 +1,95 @@ +\documentclass[addpoints,10pt]{exam} +\usepackage{url} +\usepackage{color} +\usepackage{hyperref} +\usepackage{graphicx} +\usepackage{amsmath} + +\pagestyle{headandfoot} +\runningheadrule +\firstpageheadrule + +\firstpageheader{Scientific Computing}{Principal Component Analysis}{Oct 29, 2014} +%\runningheader{Homework 01}{Page \thepage\ of \numpages}{23. October 2014} +\firstpagefooter{}{}{} +\runningfooter{}{}{} +\pointsinmargin +\bracketedpoints + +%\printanswers +\shadedsolutions + +\usepackage[mediumspace,mediumqspace,Gray]{SIunits} % \ohm, \micro + +%%%%% listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage{listings} +\lstset{ + basicstyle=\ttfamily, + numbers=left, + showstringspaces=false, + language=Matlab, + breaklines=true, + breakautoindent=true, + columns=flexible, + frame=single, + captionpos=t, + xleftmargin=2em, + xrightmargin=1em, + aboveskip=10pt, + %title=\lstname, + title={\protect\filename@parse{\lstname}\protect\filename@base.\protect\filename@ext} + } + + +\begin{document} + +\sffamily +%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{questions} + \question \textbf{Gaussian distribution} + \begin{parts} + \part Use \texttt{randn} to generate 1000000 normally (zero mean, unit variance) distributed random numbers. + \part Plot a properly normalized histogram of these random numbers. + \part Compare the histogram with the probability density of the Gaussian distribution + \[ p(x) = \frac{1}{\sqrt{2\pi\sigma^2}}e^{-\frac{(x-\mu)^2}{2\sigma^2}} \] + where $\mu$ is the mean and $\sigma^2$ is the variance of the Gaussian distribution. + \part Generate Gaussian distributed random numbers with mean $\mu=2$ and + standard deviation $\sigma=\frac{1}{2}$. + \end{parts} + + \question \textbf{Covariance and correlation coefficient} + \begin{parts} + \part Generate two vectors $x$ and $z$ with Gausian distributed random numbers. + \part Compute $y$ as a linear combination of $x$ and $z$ according to + \[ y = r \cdot x + \sqrt{1-r^2}\cdot z \] + where $r$ is a parameter $-1 \le r \le 1$. + What does $r$ do? + \part Plot a scatter plot of $y$ versus $x$ for about 10 different values of $r$. + What do you observe? + \part Also compute the covariance matrix and the correlation + coefficient matrix between $x$ and $y$ (functions \texttt{cov} and + \texttt{corrcoef}). How do these matrices look like for different + values of $r$? How do the values of the matrices change if you generate + $x$ and $z$ with larger variances? + \part Do the same analysis (Scatter plot, covariance, and correlation coefficient) + for \[ y = x^2 + 0.5 \cdot z \] + Are $x$ and $y$ really independent? + \end{parts} + + \question \textbf{Principal component analysis} + \begin{parts} + \part Generate pairs $(x,y)$ of Gaussian distributed random numbers such + that all $x$ values have zero mean, half of the $y$ values have mean $+d$ + and the other half mean $-d$, with $d \ge0$. + \part Plot scatter plots of the pairs $(x,y)$ for $d=0$, 1, 2, 3, 4 and 5. + Also plot a histogram of the $x$ values. + \part Apply PCA on the data and plot a histogram of the data projected onto + the PCA axis with the largest eigenvalue. + What do you observe? + \end{parts} + +\end{questions} + + +\end{document} diff --git a/linearalgebra/exercises/matrices.pdf b/linearalgebra/exercises/matrices.pdf new file mode 100644 index 0000000..3d38055 Binary files /dev/null and b/linearalgebra/exercises/matrices.pdf differ diff --git a/linearalgebra/exercises/matrices.tex b/linearalgebra/exercises/matrices.tex new file mode 100644 index 0000000..4897644 --- /dev/null +++ b/linearalgebra/exercises/matrices.tex @@ -0,0 +1,205 @@ +\documentclass[addpoints,10pt]{exam} +\usepackage{url} +\usepackage{color} +\usepackage{hyperref} +\usepackage{graphicx} +\usepackage{amsmath} + +\pagestyle{headandfoot} +\runningheadrule +\firstpageheadrule + +\firstpageheader{Scientific Computing}{Matrix multiplication}{Oct 28, 2014} +%\runningheader{Homework 01}{Page \thepage\ of \numpages}{23. October 2014} +\firstpagefooter{}{}{} +\runningfooter{}{}{} +\pointsinmargin +\bracketedpoints + +%\printanswers +\shadedsolutions + +\usepackage[mediumspace,mediumqspace,Gray]{SIunits} % \ohm, \micro + +%%%%% listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage{listings} +\lstset{ + basicstyle=\ttfamily, + numbers=left, + showstringspaces=false, + language=Matlab, + breaklines=true, + breakautoindent=true, + columns=flexible, + frame=single, + captionpos=t, + xleftmargin=2em, + xrightmargin=1em, + aboveskip=10pt, + %title=\lstname, + title={\protect\filename@parse{\lstname}\protect\filename@base.\protect\filename@ext} + } + + +\begin{document} + +\sffamily +%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{questions} + \question \textbf{Matrix multiplication} + Calculate the results of the following matrix multiplications and + confirm the result using matlab. + \[ \begin{pmatrix} 2 \\ -4 \\ -1 \end{pmatrix} \cdot + \begin{pmatrix} 3 & -4 & -4 \end{pmatrix} = \] + + \[ \begin{pmatrix} 3 & -3 & -1 \end{pmatrix} \cdot + \begin{pmatrix} 2 \\ 3 \\ 0 \end{pmatrix} = \] + + \[ \begin{pmatrix} 4 & -1 & 2 \\ -1 & 3 & 1 \\ 4 & -2 & 1 \\ 4 & -3 & -2 \end{pmatrix} \cdot + \begin{pmatrix} -2 & -2 & 0 & -3 \\ 3 & -2 & 1 & 0 \\ 1 & -2 & -4 & 0 \end{pmatrix} = \] + + \[ \begin{pmatrix} 3 & 1 \\ 1 & 4 \end{pmatrix} \cdot + \begin{pmatrix} 0 & -3 & 4 & 1 \\ -2 & -1 & -2 & -3 \\ -3 & 1 & -2 & -3 \end{pmatrix} = \] + + \[ \begin{pmatrix} 1 & 1 & -4 \end{pmatrix} \cdot + \begin{pmatrix} -1 \\ 2 \end{pmatrix} = \] + + \[ \begin{pmatrix} 3 & 1 & -2 \\ 2 & 1 & 3 \\ 1 & 1 & 2 \end{pmatrix} \cdot + \begin{pmatrix} 2 & 2 \\ -3 & 3 \\ -4 & 1 \end{pmatrix} = \] + + \[ \begin{pmatrix} 3 \\ 2 \end{pmatrix} \cdot + \begin{pmatrix} -3 & 2 & -4 & 1 \end{pmatrix} = \] + + \[ \begin{pmatrix} -1 \\ -4 \\ -1 \end{pmatrix} \cdot + \begin{pmatrix} 0 & -4 & 1 \end{pmatrix} = \] + + \[ \begin{pmatrix} 4 & -2 & -2 & -4 \end{pmatrix} \cdot + \begin{pmatrix} 2 \\ 2 \\ 1 \\ -1 \end{pmatrix} = \] + + \[ \begin{pmatrix} -2 & -3 & -4 \\ 1 & 3 & 2 \\ -4 & -2 & 1 \end{pmatrix} \cdot + \begin{pmatrix} 1 & 2 & -2 & 4 \\ 3 & -1 & 1 & -1 \\ -3 & 2 & -1 & 2 \end{pmatrix} = \] + + \[ \begin{pmatrix} 2 & -4 & 4 & 4 \\ -3 & 3 & 2 & 1 \end{pmatrix} \cdot + \begin{pmatrix} 0 & 3 & 4 & -2 \\ -4 & -2 & -1 & 0 \\ 1 & 2 & -4 & -4 \\ 3 & 2 & -2 & -4 \end{pmatrix} = \] + + \[ \begin{pmatrix} 3 & 1 & -2 & -2 \end{pmatrix} \cdot + \begin{pmatrix} -4 \\ 3 \\ -2 \\ 4 \end{pmatrix} = \] + + \[ \begin{pmatrix} -1 & 3 & 4 \end{pmatrix} \cdot + \begin{pmatrix} -1 \\ 4 \\ -3 \end{pmatrix} = \] + + \[ \begin{pmatrix} 1 & -4 & 3 & 3 \end{pmatrix} \cdot + \begin{pmatrix} 1 \\ 0 \\ -4 \\ -1 \end{pmatrix} = \] + + \[ \begin{pmatrix} -4 & -4 & -3 \\ -2 & -2 & 4 \\ -3 & 4 & -3 \end{pmatrix} \cdot + \begin{pmatrix} 0 & 3 & -4 & 4 \\ -1 & -2 & -3 & 1 \\ 1 & -2 & 2 & 0 \end{pmatrix} = \] + + \[ \begin{pmatrix} -3 & 0 & 4 & 1 \\ 0 & 1 & 1 & 4 \end{pmatrix} \cdot + \begin{pmatrix} -4 & 3 & 1 & 4 \\ 1 & -4 & 1 & -3 \\ -4 & 0 & -4 & -4 \\ 1 & -2 & 4 & 4 \end{pmatrix} = \] + + \[ \begin{pmatrix} 4 \\ 3 \\ 4 \\ -2 \end{pmatrix} \cdot + \begin{pmatrix} 2 & 4 & 3 & 3 \end{pmatrix} = \] + + \[ \begin{pmatrix} 1 & 2 & 0 & 3 \end{pmatrix} \cdot + \begin{pmatrix} -3 \\ 1 \\ 1 \end{pmatrix} = \] + + \[ \begin{pmatrix} -4 & 0 & -1 & 3 \\ 0 & -4 & 3 & -3 \end{pmatrix} \cdot + \begin{pmatrix} -1 & -4 & -1 \\ 3 & 2 & 0 \\ -2 & 3 & -2 \\ 1 & 2 & -2 \end{pmatrix} = \] + + \[ \begin{pmatrix} 2 & 0 & 3 \\ 1 & -4 & -1 \\ 3 & 0 & -2 \end{pmatrix} \cdot + \begin{pmatrix} 0 & 2 & -1 & -2 \\ -1 & -1 & -3 & 4 \\ 2 & 4 & -4 & 1 \end{pmatrix} = \] + \[ \begin{pmatrix} -1 & 4 \end{pmatrix} \cdot + \begin{pmatrix} 0 \\ 1 \end{pmatrix} = \] + + \[ \begin{pmatrix} -4 & 3 \\ -4 & 0 \\ -2 & -2 \end{pmatrix} \cdot + \begin{pmatrix} 0 & 1 & -4 & 2 \\ 2 & 3 & -2 & -1 \end{pmatrix} = \] + + \[ \begin{pmatrix} -2 & -1 \end{pmatrix} \cdot + \begin{pmatrix} 1 \\ -2 \end{pmatrix} = \] + + \[ \begin{pmatrix} -2 & 2 & -2 & -3 \\ 2 & -4 & -2 & 2 \\ 0 & 2 & -2 & -2 \\ 1 & -2 & -2 & -2 \end{pmatrix} \cdot + \begin{pmatrix} 1 & -2 & 2 \\ -4 & -2 & -2 \\ 3 & 1 & 4 \\ -4 & 1 & -2 \end{pmatrix} = \] + + \[ \begin{pmatrix} -1 & -3 & 0 & -1 \\ 4 & -2 & 1 & 2 \end{pmatrix} \cdot + \begin{pmatrix} -3 & -4 \\ -4 & 0 \end{pmatrix} = \] + + \[ \begin{pmatrix} -1 & 1 & -2 \\ -2 & 2 & -4 \\ 1 & -2 & -2 \end{pmatrix} \cdot + \begin{pmatrix} -1 & 2 & -4 \\ 1 & 3 & 0 \\ 1 & 4 & -4 \end{pmatrix} = \] + + \[ \begin{pmatrix} -3 & 3 \\ -3 & 2 \end{pmatrix} \cdot + \begin{pmatrix} 2 & -3 \\ -2 & -4 \end{pmatrix} = \] + + \[ \begin{pmatrix} 1 & 1 & -3 \end{pmatrix} \cdot + \begin{pmatrix} -1 \\ -2 \\ 3 \end{pmatrix} = \] + + \[ \begin{pmatrix} -4 & 2 & 1 \\ 4 & 0 & -2 \\ 2 & 3 & -3 \\ -2 & -2 & -2 \end{pmatrix} \cdot + \begin{pmatrix} -1 & 2 & 0 & -2 \\ 2 & -2 & 0 & -1 \\ -4 & 3 & -3 & 4 \end{pmatrix} = \] + + \[ \begin{pmatrix} -2 & -4 & 2 & 4 \\ 3 & -3 & 2 & 1 \end{pmatrix} \cdot + \begin{pmatrix} 0 & 4 & -1 & -4 \\ 2 & 3 & -4 & -1 \\ 3 & 2 & -2 & 4 \end{pmatrix} = \] + + \[ \begin{pmatrix} -3 & -2 & -1 & -3 \end{pmatrix} \cdot + \begin{pmatrix} 2 \\ -2 \\ 3 \\ -2 \end{pmatrix} = \] + + \[ \begin{pmatrix} 4 & 4 & 2 & 3 \end{pmatrix} \cdot + \begin{pmatrix} 3 \\ 3 \\ -2 \\ 1 \end{pmatrix} = \] + + \[ \begin{pmatrix} 3 & 2 & -2 \end{pmatrix} \cdot + \begin{pmatrix} 2 \\ 4 \\ 3 \end{pmatrix} = \] + + \[ \begin{pmatrix} 2 & -1 & 0 & -2 \\ 0 & -4 & -3 & -1 \end{pmatrix} \cdot + \begin{pmatrix} 4 & -3 & 2 & 4 \\ -3 & -4 & 1 & 1 \\ 1 & 3 & -2 & 3 \\ -1 & -2 & 3 & 0 \end{pmatrix} = \] + + \[ \begin{pmatrix} -3 & -3 & 3 & 2 \\ 2 & 2 & -3 & 1 \end{pmatrix} \cdot + \begin{pmatrix} 0 & 1 \\ 4 & 2 \\ -3 & -1 \\ -3 & 4 \end{pmatrix} = \] + + \[ \begin{pmatrix} -4 & -3 \end{pmatrix} \cdot + \begin{pmatrix} -2 \\ 3 \\ 4 \end{pmatrix} = \] + + \[ \begin{pmatrix} 4 & 4 \end{pmatrix} \cdot + \begin{pmatrix} 1 \\ 4 \\ -1 \end{pmatrix} = \] + + \[ \begin{pmatrix} 1 & -2 & 3 \end{pmatrix} \cdot + \begin{pmatrix} 3 \\ 1 \\ 2 \end{pmatrix} = \] + + \[ \begin{pmatrix} -3 & 2 \end{pmatrix} \cdot + \begin{pmatrix} -1 \\ 1 \end{pmatrix} = \] + + \[ \begin{pmatrix} -2 & -4 & -4 & 0 \\ 0 & 3 & 4 & -4 \\ 4 & 2 & -2 & -4 \\ 0 & 0 & 4 & -1 \end{pmatrix} \cdot + \begin{pmatrix} 0 & -1 \\ -1 & 1 \\ -4 & -3 \\ 2 & 1 \end{pmatrix} = \] + + \[ \begin{pmatrix} -3 \\ 3 \\ -3 \\ -4 \end{pmatrix} \cdot + \begin{pmatrix} 2 & 4 & -2 & 1 \end{pmatrix} = \] + + \[ \begin{pmatrix} 2 \\ 0 \end{pmatrix} \cdot + \begin{pmatrix} -1 & -3 & -2 & 2 \end{pmatrix} = \] + + \[ \begin{pmatrix} 0 & -4 & -4 & 4 \end{pmatrix} \cdot + \begin{pmatrix} 1 \\ 4 \\ 0 \\ 4 \end{pmatrix} = \] + + \[ \begin{pmatrix} -3 & -1 \\ -3 & -1 \end{pmatrix} \cdot + \begin{pmatrix} 0 & -3 & 3 & -2 \\ -4 & 1 & -1 & 4 \end{pmatrix} = \] + + \[ \begin{pmatrix} 4 & 0 \\ -1 & 4 \\ 1 & -3 \end{pmatrix} \cdot + \begin{pmatrix} -4 & -4 \\ -4 & 2 \end{pmatrix} = \] + + \[ \begin{pmatrix} -1 \\ 3 \\ 2 \\ 4 \end{pmatrix} \cdot + \begin{pmatrix} 0 & -1 & 0 & 0 \end{pmatrix} = \] + + \[ \begin{pmatrix} 3 \\ -2 \\ 2 \\ 3 \end{pmatrix} \cdot + \begin{pmatrix} -2 & -3 & -4 & 2 \end{pmatrix} = \] + + \[ \begin{pmatrix} 2 & -2 & -4 & 4 \\ 0 & 1 & -3 & -2 \\ -1 & 3 & 0 & -2 \end{pmatrix} \cdot + \begin{pmatrix} -4 & 1 \\ -4 & 3 \end{pmatrix} = \] + + \[ \begin{pmatrix} -4 & -1 & 3 \end{pmatrix} \cdot + \begin{pmatrix} -4 \\ -3 \\ 3 \end{pmatrix} = \] + + \question \textbf{Automatic generation of exercises} + Write some matlab code that generates exercises like this one automatically! :-) + +\end{questions} + + +\end{document} diff --git a/linearalgebra/resources/Pillow2007-STC-LNPmodel.pdf b/linearalgebra/resources/Pillow2007-STC-LNPmodel.pdf new file mode 100644 index 0000000..da7133a Binary files /dev/null and b/linearalgebra/resources/Pillow2007-STC-LNPmodel.pdf differ diff --git a/linearalgebra/simulations/covareigen3examples.m b/linearalgebra/simulations/covareigen3examples.m deleted file mode 100644 index 3d16628..0000000 --- a/linearalgebra/simulations/covareigen3examples.m +++ /dev/null @@ -1,14 +0,0 @@ -n = 10000; - -% three distributions: -x = randn( n, 1 ); -y = randn( n, 1 ); -z = randn( n, 1 ); -f = figure( 'Position', [ scrsz(3)/2 scrsz(4)/2 scrsz(3)/2 scrsz(4)/2 ]); -d = [ 0 4 -4 8 ]; -for k = 1:4 - x((k-1)*n/4+1:k*n/4) = x((k-1)*n/4+1:k*n/4) + d(k); - y((k-1)*n/4+1:k*n/4) = y((k-1)*n/4+1:k*n/4) - d(k); - z((k-1)*n/4+1:k*n/4) = z((k-1)*n/4+1:k*n/4) + d(k); -end -covareigen3( x, y, z ); diff --git a/linearalgebra/simulations/matrix2dtrafos.m b/linearalgebra/simulations/matrix2dtrafos.m deleted file mode 100644 index da6840e..0000000 --- a/linearalgebra/simulations/matrix2dtrafos.m +++ /dev/null @@ -1,74 +0,0 @@ -m = [ 1 0; 0 1]; -matrixbox( m ); -title( 'Identity' ); -waitforbuttonpress; - -m = [ 2 0; 0 1]; -matrixbox( m ); -title( 'Scale x' ); -waitforbuttonpress; - -m = [ 1 0; 0 2]; -matrixbox( m ); -title( 'Scale y' ); -waitforbuttonpress; - -m = [ 2 0; 0 2]; -matrixbox( m ); -title( 'Scale both' ); -waitforbuttonpress; - -m = [ -1 0; 0 1]; -matrixbox( m ); -title( 'Flip x' ); -waitforbuttonpress; - -m = [ 1 0; 0 -1]; -matrixbox( m ); -title( 'Flip y' ); -waitforbuttonpress; - -m = [ -1 0; 0 -1]; -matrixbox( m ); -title( 'Flip both' ); -waitforbuttonpress; - -m = [ 1 0; 1 1]; -matrixbox( m ); -title( 'Shear x' ); -waitforbuttonpress; - -m = [ 1 1; 0 1]; -matrixbox( m ); -title( 'Shear y' ); -waitforbuttonpress; - -phi = 0.1667*pi; -m = [ cos(phi) -sin(phi); sin(phi) cos(phi)]; -matrixbox( m ); -title( 'Rotate 30' ); -waitforbuttonpress; - -phi = 0.333*pi; -m = [ cos(phi) -sin(phi); sin(phi) cos(phi)]; -matrixbox( m ); -title( 'Rotate 60' ); -waitforbuttonpress; - -phi = 0.5*pi; -m = [ cos(phi) -sin(phi); sin(phi) cos(phi)]; -matrixbox( m ); -title( 'Rotate 90' ); -waitforbuttonpress; - -phi = 0.75*pi; -m = [ cos(phi) -sin(phi); sin(phi) cos(phi)]; -matrixbox( m ); -title( 'Rotate 135' ); -waitforbuttonpress; - -phi = 1.0*pi; -m = [ cos(phi) -sin(phi); sin(phi) cos(phi)]; -matrixbox( m ); -title( 'Rotate 180' ); -waitforbuttonpress; diff --git a/linearalgebra/simulations/matrixbox.m b/linearalgebra/simulations/matrixbox.m deleted file mode 100644 index 5abbfa0..0000000 --- a/linearalgebra/simulations/matrixbox.m +++ /dev/null @@ -1,24 +0,0 @@ -function matrixbox( m ) -% visualizes the effect of a matrix m on a set of vectors forming a box -% m: a 2x2 matrix - - v = [ 0 1 1 0 0; 0 0 1 1 0]; - w = m*v; - clf; - hold on; - %set(gca, 'Xtick', [], 'Ytick', [], 'box', 'off') - % axis: - plot( [-2 2], [0 0], 'k', 'LineWidth', 1 ); - plot( [0 0], [-2 2], 'k', 'LineWidth', 1 ); - % old box: - plot( v(1,:), v(2,:), 'k', 'LineWidth', 1.0 ) - quiver( [v(1,1)], [v(2,1)], [v(1,3)], [v(2,3)], 1.0, 'k', 'LineWidth', 2.0 ); - scatter( [v(1,2)], [v(2,2)], 60.0, 'filled', 'k' ); - % transfomred box: - plot( w(1,:), w(2,:), 'b', 'LineWidth', 2.0 ) - quiver( [w(1,1)], [w(2,1)], [w(1,3)], [w(2,3)], 1.0, 'b', 'LineWidth', 3.0 ); - scatter( [w(1,2)], [w(2,2)], 100.0, 'filled', 'b' ); - hold off; - xlim( [ -2 2 ] ); - ylim( [ -2 2 ] ); -end diff --git a/linearalgebra/simulations/spikesortingwave.m b/linearalgebra/simulations/spikesortingwave.m deleted file mode 100644 index 369915e..0000000 --- a/linearalgebra/simulations/spikesortingwave.m +++ /dev/null @@ -1,127 +0,0 @@ -% generate spikes: -n = 1000; -misi = 0.01; -isis = exprnd( misi, n, 1 ); -isis = isis + 0.01; -spikes = cumsum( isis ); -p = rand( size( spikes ) ); - -% spike waveforms: -dt = 0.0001; -x = -0.01:dt:0.01; -y1 = 2.0*exp( -(x-0.0003).^2/2.0/0.0005^2 ) - 1.4*exp( -(x-0.0005).^2/2.0/0.0005^2 ); -y2 = exp( -x.^2/2.0/0.002^2 ).*cos(2.0*pi*x/0.005); -p12 = 0.5; - -% voltage trace: -noise = 0.2; -t = 0:dt:spikes(end)+3.0*x(end); -v = noise*randn( 1, length( t ) ); -for k = 1:length( spikes ) - inx = ceil( spikes(k)/dt ); - if p(k) < p12 - v(inx:inx+length(x)-1) = v(inx:inx+length(x)-1) + y1; - else - v(inx:inx+length(x)-1) = v(inx:inx+length(x)-1) + y2; - end -end - -figure( 1 ); -clf; -plot( t(t<1.0), v(t<1.0) ); -hold on; - -% find peaks: -thresh = 0.7; -inx = find( v(2:end-1) > thresh & v(1:end-2) v(3:end) ) + 1; -spiket = t(inx); -spikev = v(inx); -tinx = inx; -for k=1:2 - inx = find( ( spiket(2:end-1)-spiket(1:end-2)>0.005 | spikev(2:end-1) > spikev(1:end-2) ) & ( spiket(3:end)-spiket(2:end-1)>0.005 | spikev(2:end-1) > spikev(3:end) ) )+1; - spiket = spiket(inx); - spikev = spikev(inx); - tinx = tinx(inx); -end -scatter( spiket(spiket<1.0), spikev(spiket<1.0), 100.0, 'r', 'filled' ); -%scatter( t(tinx), v(tinx), 100.0, 'r', 'filled' ); -hold off; - -% spike waveform snippets: -w = ceil( 0.005/dt ); -vs = []; -for k=1:length(tinx) - vs = [ vs; v(tinx(k)-w:tinx(k)+w-1) ]; -end -ts = t(1:size(vs,2)); -ts = ts - ts(floor(length(ts)/2)); -figure( 2 ); -clf; -hold on -for k=1:size(vs,1) - plot( ts, vs(k,:), '-b' ); -end -hold off - -% pca: -cv = cov( vs ); -[ ev , ed ] = eig( cv ); -[d,dinx] = sort( diag(ed), 'descend' ); -% spectrum of eigenvalues: -figure( 3 ); -clf; -subplot( 4, 1, 1 ); -scatter( 1:length(d), d, 'b', 'filled' ); -% project onto eigenvectors: -nx = vs * ev(:,dinx(1)); -ny = vs * ev(:,dinx(2)); -%scatter( nx, ny, 'b', 'filled', 'MarkerEdgeColor', 'white' ); -%hold on; - -% features: -subplot( 4, 2, 5 ); -plot( 1000.0*ts, ev(:,dinx(1)), 'g', 'LineWidth', 2 ); -subplot( 4, 2, 6 ); -plot( 1000.0*ts, ev(:,dinx(2)), 'r', 'LineWidth', 2 ); - -% clustering: -%kx = kmeans( [ nx, ny ], 2 ); -% nx smaller or greater a threshold: -kthresh = 1.6; -kx = ones( size( vs, 1 ), 1 ); -kx(nx>kthresh) = 2; - -subplot( 4, 1, 2 ); -scatter( nx(kx==1), ny(kx==1), 'g', 'filled', 'MarkerEdgeColor', 'white' ); -hold on; -scatter( nx(kx==2), ny(kx==2), 'r', 'filled', 'MarkerEdgeColor', 'white' ); -hold off; - -% show sorted spike waveforms: -subplot( 4, 2, 7 ); -hold on -kinx1 = find(kx==1); -for k=1:length(kinx1) - plot( 1000.0*ts, vs(kinx1(k),:), '-g' ); -end -plot( 1000.0*x, y1, '-k', 'LineWidth', 2 ); -xlim( [ 1000.0*ts(1) 1000.0*ts(end) ] ) -hold off -subplot( 4, 2, 8 ); -hold on -kinx2 = find(kx==2); -for k=1:length(kinx2) - plot( 1000.0*ts, vs(kinx2(k),:), '-r' ); -end -plot( 1000.0*x, y2, '-k', 'LineWidth', 2 ); -xlim( [ 1000.0*ts(1) 1000.0*ts(end) ] ) -hold off - -% spike trains: -figure( 1 ); -hold on; -six1 = find( spiket(kinx1)<1.0 ); -scatter( spiket(kinx1(six1)), spikev(kinx1(six1)), 100.0, 'g', 'filled' ); -six2 = find( spiket(kinx2)<1.0 ); -scatter( spiket(kinx2(six2)), spikev(kinx2(six2)), 100.0, 'r', 'filled' ); -hold off; diff --git "a/moduledescription/Einf\303\274hrung_wissenschaftl_Datenverarbeitung.pdf" "b/moduledescription/Einf\303\274hrung_wissenschaftl_Datenverarbeitung.pdf" new file mode 100644 index 0000000..bcf33f1 Binary files /dev/null and "b/moduledescription/Einf\303\274hrung_wissenschaftl_Datenverarbeitung.pdf" differ diff --git "a/moduledescription/Einf\303\274hrung_wissenschaftl_Datenverarbeitung.pptx" "b/moduledescription/Einf\303\274hrung_wissenschaftl_Datenverarbeitung.pptx" new file mode 100644 index 0000000..2f26cfe Binary files /dev/null and "b/moduledescription/Einf\303\274hrung_wissenschaftl_Datenverarbeitung.pptx" differ diff --git a/moduledescription/Hiwis.odt b/moduledescription/Hiwis.odt new file mode 100644 index 0000000..5ea694b Binary files /dev/null and b/moduledescription/Hiwis.odt differ diff --git a/moduledescription/Hiwis.pdf b/moduledescription/Hiwis.pdf new file mode 100644 index 0000000..8e86a7a Binary files /dev/null and b/moduledescription/Hiwis.pdf differ diff --git a/moduledescription/ModuleScientificComputing.doc b/moduledescription/ModuleScientificComputing.doc new file mode 100644 index 0000000..5d85b1e Binary files /dev/null and b/moduledescription/ModuleScientificComputing.doc differ diff --git a/moduledescription/ModuleScientificComputing.odt b/moduledescription/ModuleScientificComputing.odt new file mode 100644 index 0000000..958b818 Binary files /dev/null and b/moduledescription/ModuleScientificComputing.odt differ diff --git a/pointprocesses/code/colorednoisepdf.m b/pointprocesses/code/colorednoisepdf.m new file mode 100644 index 0000000..28f421b --- /dev/null +++ b/pointprocesses/code/colorednoisepdf.m @@ -0,0 +1,10 @@ +function pcn = colorednoisepdf( x, misi, epsilon, tau ) +% returns the ISI pdf for PIF with colored noise drive +% x: the input ISI +% misis: the mean isi +% epsilon: a parameter +% tau: the correlation time of the noise + gamma1 = x/tau+exp(-x/tau)-1.0; + gamma2 = 1.0-exp(-x/tau); + pcn=exp(-(x-misi).^2./(4.0*epsilon*tau.^2.*gamma1)).*(((misi-x).*gamma2+2*gamma1*tau).^2./(2*gamma1*tau^2)-epsilon*(gamma2.^2-2*gamma1.*exp(-x/tau))) ./ (2*tau*sqrt(4*pi*epsilon*gamma1.^3)); +end diff --git a/pointprocesses/code/colorednoisepdfisifit.m b/pointprocesses/code/colorednoisepdfisifit.m new file mode 100644 index 0000000..1c653c0 --- /dev/null +++ b/pointprocesses/code/colorednoisepdfisifit.m @@ -0,0 +1,24 @@ +% misi = 0.02; +% epsilon = 1.0; +% tau = 0.1; +x=0:0.002:0.1; +% pcn = colorednoisepdf( x, misi, epsilon, tau )+10.0*randn( size( x ) ); +% plot( x, pcn ); + +spikes = lifouspikes( 10, 15, 50.0, 1.0, 1.0 ); +isivec = isis( spikes ); +misi = mean( isivec ); +1.0/misi +isibins = 0:0.0005:0.1; +[ n, c ] = hist( isivec, isibins ); +n = n / sum(n)/(isibins(2)-isibins(1)); +bar( c, n ); + +beta0 = [ 1.0, 0.01 ]; +b = nlinfit(c(1:end-2), n(1:end-2), @(b,x)(colorednoisepdf(x, misi, b(1), b(2))), beta0) + +pcn = colorednoisepdf( x, misi, b(1), b(2) ); +hold on +plot( x, pcn, 'r', 'LineWidth', 3 ); +hold off + diff --git a/pointprocesses/code/counthist.m b/pointprocesses/code/counthist.m new file mode 100644 index 0000000..d64fb23 --- /dev/null +++ b/pointprocesses/code/counthist.m @@ -0,0 +1,38 @@ +function [ counts, bins ] = counthist( spikes, w ) +% computes count histogram and compare them with Poisson distribution +% spikes: a cell array of vectors of spike times +% w: observation window duration for computing the counts + + % collect spike counts: + tmax = spikes{1}(end); + n = []; + r = []; + for k = 1:length(spikes) + for tk = 0:w:tmax-w + nn = sum( ( spikes{k} >= tk ) & ( spikes{k} < tk+w ) ); + %nn = length( find( ( spikes{k} >= tk ) & ( spikes{k} < tk+w ) ) ); + n = [ n nn ]; + end + rate = (length(spikes{k})-1)/(spikes{k}(end) - spikes{k}(1)); + r = [ r rate ]; + end + % histogram of spike counts: + maxn = max( n ); + [counts, bins ] = hist( n, 0:1:maxn+1 ); + counts = counts / sum( counts ); + if nargout == 0 + bar( bins, counts ); + hold on; + % Poisson distribution: + rate = mean( r ); + x = 0:1:20; + l = rate*w; + y = l.^x.*exp(-l)./factorial(x); + plot( x, y, 'r', 'LineWidth', 3 ); + xlim( [ 0 20 ] ); + hold off; + xlabel( 'counts k' ); + ylabel( 'P(k)' ); + end +end + diff --git a/pointprocesses/code/fano.m b/pointprocesses/code/fano.m new file mode 100644 index 0000000..a73cada --- /dev/null +++ b/pointprocesses/code/fano.m @@ -0,0 +1,39 @@ +function fano( spikes ) +% computes fano factor as a function of window size +% spikes: a cell array of vectors of spike times + + tmax = spikes{1}(end); + windows = 0.01:0.05:0.01*tmax; + mc = windows; + vc = windows; + ff = windows; + fs = windows; + for j = 1:length(windows) + w = windows( j ); + % collect counts: + n = []; + for k = 1:length(spikes) + for tk = 0:w:tmax-w + nn = sum( ( spikes{k} >= tk ) & ( spikes{k} < tk+w ) ); + %nn = length( find( ( spikes{k} >= tk ) & ( spikes{k} < tk+w ) ) ); + n = [ n nn ]; + end + end + % statistics for current window: + mc(j) = mean( n ); + vc(j) = var( n ); + ff(j) = vc( j )/mc( j ); + fs(j) = sqrt(vc( j )/mc( j )); + end + + subplot( 1, 2, 1 ); + scatter( mc, vc, 'filled' ); + xlabel( 'Mean count' ); + ylabel( 'Count variance' ); + + subplot( 1, 2, 2 ); + scatter( 1000.0*windows, fs, 'filled' ); + xlabel( 'Window W [ms]' ); + ylabel( 'Fano factor' ); +end + diff --git a/pointprocesses/code/inversegauss.m b/pointprocesses/code/inversegauss.m new file mode 100644 index 0000000..58a9512 --- /dev/null +++ b/pointprocesses/code/inversegauss.m @@ -0,0 +1,5 @@ +function y = inversegauss( x, m, d ) +% returns the inverse Gauss density with mean isi m and diffusion +% coefficent d + y = exp(-(x-m).^2./(4.0*d.*x.*m.^2.0))./sqrt(4.0*pi*d.*x.^3.0); +end diff --git a/pointprocesses/code/inversegaussplot.m b/pointprocesses/code/inversegaussplot.m new file mode 100644 index 0000000..c43e6d2 --- /dev/null +++ b/pointprocesses/code/inversegaussplot.m @@ -0,0 +1,28 @@ +f = figure; +subplot( 1, 2, 1 ); +dx=0.0001; +x = dx:dx:0.5; +hold all +m = 0.02; +for d = [ 0.1 1 10 50 200 ] + plot( 1000.0*x, inversegauss( x, m, d ), 'LineWidth', 3, 'DisplayName', sprintf( 'D=%.1f', d ) ); +end +title( sprintf( 'm=%g ms', 1000.0*m ) ) +xlim( [ 0 50 ] ); +xlabel( 'ISI [ms]' ); +ylabel( 'p(ISI)' ); +legend( '-DynamicLegend' ); +hold off; + +subplot( 1, 2, 2 ); +hold all; +d = 5.0; +for m = [ 0.005 0.01 0.02 0.05 ] + plot( 1000.0*x, inversegauss( x, m, d ), 'LineWidth', 3, 'DisplayName', sprintf( 'm=%g ms', 1000.0*m ) ); +end +title( sprintf( 'D=%g Hz', d ) ) +xlim( [ 0 50 ] ) +xlabel( 'ISI [ms]' ); +ylabel( 'p(ISI)' ); +legend( '-DynamicLegend' ) +hold off diff --git a/pointprocesses/code/isihist.m b/pointprocesses/code/isihist.m new file mode 100644 index 0000000..a9722fd --- /dev/null +++ b/pointprocesses/code/isihist.m @@ -0,0 +1,32 @@ +function isihist( isis, binwidth ) +% plot histogram of isis +% isis: vector of interspike intervals +% binwidth: optional width to be used for the isi bins + + if nargin < 2 + nperbin = 200; % average number of data points per bin + bins = length( isis )/nperbin; % number of bins + binwidth = max( isis )/bins; + if binwidth < 5e-4 % half a millisecond + binwidth = 5e-4; + end + end + bins = 0.5*binwidth:binwidth:max(isis); + % histogram: + [ nelements, centers ] = hist( isis, bins ); + % normalization (integral = 1): + nelements = nelements / sum( nelements ) / binwidth; + % plot: + bar( 1000.0*centers, nelements ); + xlabel( 'ISI [ms]' ) + ylabel( 'p(ISI) [1/s]') + % annotation: + misi = mean( isis ); + sdisi = std( isis ); + disi = sdisi^2.0/2.0/misi^3; + text( 0.5, 0.6, sprintf( 'mean=%.1f ms', 1000.0*misi ), 'Units', 'normalized' ) + text( 0.5, 0.5, sprintf( 'std=%.1f ms', 1000.0*sdisi ), 'Units', 'normalized' ) + text( 0.5, 0.4, sprintf( 'CV=%.2f', sdisi/misi ), 'Units', 'normalized' ) + %text( 0.5, 0.3, sprintf( 'D=%.1f Hz', disi ), 'Units', 'normalized' ) +end + diff --git a/pointprocesses/code/isireturnmap.m b/pointprocesses/code/isireturnmap.m new file mode 100644 index 0000000..d790e13 --- /dev/null +++ b/pointprocesses/code/isireturnmap.m @@ -0,0 +1,24 @@ +function isireturnmap( isis, lag2 ) +% plot return maps for lag 1 and lag lag2 + + clf; + subplot( 1, 2, 1 ); + lag = 1; + scatter( 1000.0*isis(1:end-lag)', 1000.0*isis(1+lag:end)', 'b', 'filled', 'MarkerEdgeColor', 'white' ); + xlabel( 'ISI T_i [ms]' ); + ylabel( 'ISI T_{i+1} [ms]' ); + maxisi = max( isis ); + maxy = ceil(maxisi/10)*10.0; + xlim( [0 1.5*maxy ]) + ylim( [0 maxy ]) + + subplot( 1, 2, 2 ); + lag = lag2; + scatter( 1000.0*isis(1:end-lag)', 1000.0*isis(1+lag:end)', 'b', 'filled', 'MarkerEdgeColor', 'white' ); + xlabel( 'ISI T_i [ms]' ); + ylabel( 'ISI T_{i+2} [ms]' ); + xlim( [0 1.5*maxy ]) + ylim( [0 maxy ]) + +end + diff --git a/pointprocesses/code/isis.m b/pointprocesses/code/isis.m new file mode 100644 index 0000000..b0b95ff --- /dev/null +++ b/pointprocesses/code/isis.m @@ -0,0 +1,15 @@ +function isivec = isis( spikes ) +% returns a single list of isis computed from all trials in spikes +% spikes: a cell array of vectors of spike times + + isivec = []; + for k = 1:length(spikes) + difftimes = diff( spikes{k} ); + if ( size( difftimes, 1 ) == 1 ) + isivec = [ isivec difftimes ]; + elseif ( size( difftimes, 2 ) == 1 ) + isivec = [ isivec difftimes' ]; + end + end +end + diff --git a/pointprocesses/code/isiserialcorr.m b/pointprocesses/code/isiserialcorr.m new file mode 100644 index 0000000..d5b44c1 --- /dev/null +++ b/pointprocesses/code/isiserialcorr.m @@ -0,0 +1,26 @@ +function isicorr = isiserialcorr( isis, maxlag ) +% serial correlation of isis +% isis: vector of interspike intervals +% maxlag: the maximum lag + + lags = 0:maxlag; + isicorr = zeros( size( lags ) ); + for k = 1:length(lags) + lag = lags(k); + if length( isis ) > lag+10 + cc = corrcoef( [ isis(1:end-lag)', isis(1+lag:end)' ] ); + isicorr(k) = cc( 1, 2 ); + end + end + + if nargout == 0 + % plot: + plot( lags, isicorr, '-b' ); + hold on; + scatter( lags, isicorr, 100.0, 'b', 'filled' ); + hold off; + xlabel( 'Lag k' ) + ylabel( '\rho_k') + end +end + diff --git a/pointprocesses/code/lifadaptspikes.m b/pointprocesses/code/lifadaptspikes.m new file mode 100644 index 0000000..2ef1874 --- /dev/null +++ b/pointprocesses/code/lifadaptspikes.m @@ -0,0 +1,53 @@ +function spikes = lifadaptspikes( trials, input, tmaxdt, D, tauadapt, adaptincr ) +% Generate spike times of a leaky integrate-and-fire neuron +% with an adaptation current +% trials: the number of trials to be generated +% input: the stimulus either as a single value or as a vector +% tmaxdt: in case of a single value stimulus the duration of a trial +% in case of a vector as a stimulus the time step +% D: the strength of additive white noise +% tauadapt: adaptation time constant +% adaptincr: adaptation strength + + tau = 0.01; + if nargin < 4 + D = 1e0; + end + if nargin < 5 + tauadapt = 0.1; + end + if nargin < 6 + adaptincr = 1.0; + end + vreset = 0.0; + vthresh = 10.0; + dt = 1e-4; + + if max( size( input ) ) == 1 + input = input * ones( ceil( tmaxdt/dt ), 1 ); + else + dt = tmaxdt; + end + spikes = cell( trials, 1 ); + for k=1:trials + times = []; + j = 1; + v = vreset; + a = 0.0; + noise = sqrt(2.0*D)*randn( length( input ), 1 )/sqrt(dt); + for i=1:length( noise ) + v = v + ( - v - a + noise(i) + input(i))*dt/tau; + a = a + ( - a )*dt/tauadapt; + if v >= vthresh + v = vreset; + a = a + adaptincr/tauadapt; + spiketime = i*dt; + if spiketime > 4.0*tauadapt + times(j) = spiketime - 4.0*tauadapt; + j = j + 1; + end + end + end + spikes{k} = times; + end +end diff --git a/pointprocesses/code/lifboltzmanspikes.m b/pointprocesses/code/lifboltzmanspikes.m new file mode 100644 index 0000000..14640e4 --- /dev/null +++ b/pointprocesses/code/lifboltzmanspikes.m @@ -0,0 +1,51 @@ +function spikes = lifboltzmanspikes( trials, input, tmaxdt, D, imax, ithresh, slope ) +% Generate spike times of a leaky integrate-and-fire neuron +% trials: the number of trials to be generated +% input: the stimulus either as a single value or as a vector +% tmaxdt: in case of a single value stimulus the duration of a trial +% in case of a vector as a stimulus the time step +% D: the strength of additive white noise +% imax: maximum output of boltzman +% ithresh: threshold of boltzman input +% slope: slope factor of boltzman input + + tau = 0.01; + if nargin < 4 + D = 1e0; + end + if nargin < 5 + imax = 20; + end + if nargin < 6 + ithresh = 10; + end + if nargin < 7 + slope = 1; + end + vreset = 0.0; + vthresh = 10.0; + dt = 1e-4; + + if length( input ) == 1 + input = input * ones( ceil( tmaxdt/dt ), 1 ); + else + dt = tmaxdt; + end + inb = imax./(1.0+exp(-slope.*(input - ithresh))); + spikes = cell( trials, 1 ); + for k=1:trials + times = []; + j = 1; + v = vreset; + noise = sqrt(2.0*D)*randn( length( input ), 1 )/sqrt(dt); + for i=1:length( noise ) + v = v + ( - v + noise(i) + inb(i))*dt/tau; + if v >= vthresh + v = vreset; + times(j) = i*dt; + j = j + 1; + end + end + spikes{k} = times; + end +end diff --git a/pointprocesses/code/liffano.m b/pointprocesses/code/liffano.m new file mode 100644 index 0000000..b90403f --- /dev/null +++ b/pointprocesses/code/liffano.m @@ -0,0 +1,23 @@ +input = 65.0; % lifadapt 100Hz +%input = 8.0; % lifadapt 10Hz +%input = 15.7; % lif 100Hz +%input = 8.3; % lif 10Hz +trials = 10; +tmax = 100.0; +Dnoise = 0.1; +Dounoise = 5e1; +outau = 10.0; +adapttau = 0.1; +adaptincr = 5.0; + +%spikes = lifouadaptspikes( trials, input, 1.0, Dnoise, Dounoise, outau, adapttau, adaptincr ); +%spikeraster( spikes ); +%return; + +% generate spikes: +%spikes = lifspikes( trials, input, tmax, noise ); +spikes = lifouspikes( trials, input, tmax, Dounoise, outau ); +%spikes = lifadaptspikes( trials, input, tmax, Dnoise, adapttau, adaptincr ); +%spikes = lifouadaptspikes( trials, input, tmax, Dnoise, Dounoise, outau, adapttau, adaptincr ); + +fano( spikes ); diff --git a/pointprocesses/code/lifficurves.m b/pointprocesses/code/lifficurves.m new file mode 100644 index 0000000..5106c12 --- /dev/null +++ b/pointprocesses/code/lifficurves.m @@ -0,0 +1,36 @@ +% lif: +noises = [ 1e-5 1e-4 1e-3 1e-2 1e-1 ]; +inputs = 0:0.1:20; +duration = 50.0; +% pif: +% noises = [ 1e-1 1 1e1 1e2 1e3 ]; +% inputs = -5:0.1:10; +% duration = 100.0; + +f = figure; +hold all; +for noise = noises + fprintf( 'noise=%.0e\n', noise ); + rates = []; + for input = inputs + spikes = lifspikes( 10, input, duration, noise ); + % spikes = pifspikes( 50, input, duration, noise ); + nspikes = 0; + for k = 1:length( spikes ) + nspikes = nspikes + length( spikes{k} ); + end + rate = nspikes/duration/length( spikes ); + %fprintf( 'I=%g N=%d rate=%g\n', input, length( spikes ), rate ) + rates = [ rates rate ]; + end + plot( inputs, rates, 'LineWidth', 2, 'DisplayName', sprintf( 'D=%.0e', noise ) ); +end +xlabel( 'Input' ); +xlim( [ inputs(1) inputs(end) ] ) +ylabel( 'Firing rate [Hz]' ); +%title( 'Leaky integrate-and-fire' ) +title( 'Perfect integrate-and-fire' ) +legend( '-DynamicLegend', 'Location', 'NorthWest' ) +hold off + + diff --git a/pointprocesses/code/lifinputdiscriminationslope.m b/pointprocesses/code/lifinputdiscriminationslope.m new file mode 100644 index 0000000..3a52ef0 --- /dev/null +++ b/pointprocesses/code/lifinputdiscriminationslope.m @@ -0,0 +1,65 @@ +%input = 15.7; % lif 100Hz +%input = 8.3; % lif 10Hz +trials = 10; +tmax = 50.0; +Dnoise = 1.0; +imax = 25.0; +ithresh = 10.0; +slope=0.2; + +% inputs = 0:2:30; +% rates = zeros( size( inputs ) ); +% for j = 1:length( inputs ) +% input = inputs(j); +% spikes = lifboltzmanspikes( trials, input, tmax, Dnoise, imax, ithresh, slope ); +% nspikes = 0; +% for k = 1:length( spikes ) +% nspikes = nspikes + length( spikes{k} ); +% end +% rate = nspikes/tmax/length( spikes ); +% rates(j) = rate; +% end +% plot( inputs, rates ); +% grid on; +% return + +input = 10.0; % 80 Hz + +window = 0.2; +slopes = 0.1:0.1:2.0; +pmax = zeros( size( slopes) ); +for j = 1:length( slopes ) + slope = slopes( j ); + spikes = lifboltzmanspikes( trials, input, tmax, Dnoise, imax, ithresh, slope ); + [ n1, bins1 ] = counthist( spikes, w ); + + spikes = lifboltzmanspikes( trials, input+1.0, tmax, Dnoise, imax, ithresh, slope ); + [ n2, bins2 ] = counthist( spikes, w ); + + subplot( 2, 1, 1 ); + bar( bins1, n1, 'b' ); + hold on; + bar( bins2, n2, 'r' ); + hold off; + + subplot( 2, 1, 2 ); + bmax = max( [ length( bins1 ), length( bins2 ) ] ); + decision1 = zeros( bmax, 1 ); + decision2 = zeros( bmax, 1 ); + cs1 = ones( bmax, 1 ); + cs1(1:length(n1)) = cumsum( n1 ); + cs2 = ones( bmax, 1 ); + cs2(1:length(n2)) = cumsum( n2 ); + cbins = 0:1:bmax-1; + plot( cbins, cs1, 'b' ); + hold on; + plot( cbins, cs2, 'r' ); + plot( cbins, cs1-cs2, 'g' ); + hold off; + pause( 0.1 ); + pmax(j) = max( cs1-cs2 ); +end + +clf; +subplot( 1, 1, 1 ); +plot( slopes, pmax ); diff --git a/pointprocesses/code/lifinputdiscriminationtime.m b/pointprocesses/code/lifinputdiscriminationtime.m new file mode 100644 index 0000000..9cd4603 --- /dev/null +++ b/pointprocesses/code/lifinputdiscriminationtime.m @@ -0,0 +1,51 @@ +input = 65.0; % lifadapt 100Hz +%input = 8.0; % lifadapt 10Hz +%input = 15.7; % lif 100Hz +%input = 8.3; % lif 10Hz +trials = 10; +tmax = 50.0; +Dnoise = 0.1; +Dounoise = 5e1; +outau = 10.0; +adapttau = 0.2; +adaptincr = 0.5; + +windows = 0.05:0.05:1.0; +pmax = zeros( size( windows ) ); +for j = 1:length( windows ) + w = windows( j ); + spikes = lifadaptspikes( trials, input, tmax, Dnoise, adapttau, adaptincr ); + %spikes = lifouspikes( trials, input, tmax, Dounoise, outau); + [ n1, bins1 ] = counthist( spikes, w ); + + spikes = lifadaptspikes( trials, input+10.0, tmax, Dnoise, adapttau, adaptincr ); + %spikes = lifouspikes( trials, input+10.0, tmax, Dounoise, outau ); + [ n2, bins2 ] = counthist( spikes, w ); + + subplot( 2, 1, 1 ); + bar( bins1, n1, 'b' ); + hold on; + bar( bins2, n2, 'r' ); + hold off; + + subplot( 2, 1, 2 ); + bmax = max( [ length( bins1 ), length( bins2 ) ] ); + decision1 = zeros( bmax, 1 ); + decision2 = zeros( bmax, 1 ); + cs1 = ones( bmax, 1 ); + cs1(1:length(n1)) = cumsum( n1 ); + cs2 = ones( bmax, 1 ); + cs2(1:length(n2)) = cumsum( n2 ); + cbins = 0:1:bmax-1; + plot( cbins, cs1, 'b' ); + hold on; + plot( cbins, cs2, 'r' ); + plot( cbins, cs1-cs2, 'g' ); + hold off; + pause( 0.1 ); + pmax(j) = max( cs1-cs2 ); +end + +clf; +subplot( 1, 1, 1 ); +plot( windows, pmax ); diff --git a/pointprocesses/code/lifisih.m b/pointprocesses/code/lifisih.m new file mode 100644 index 0000000..f4e7a8e --- /dev/null +++ b/pointprocesses/code/lifisih.m @@ -0,0 +1,35 @@ +%input = 65.0; % lifadapt 100Hz +%input = 8.0; % lifadapt 10Hz +input = 15.7; % lif 100Hz +%input = 8.3; % lif 10Hz +trials = 10; +tmax = 100.0; +noise = 1e-1; +adapttau = 0.1; +adaptincr = 5.0; + +% generate spikes: +spikes = lifspikes( trials, input, tmax, noise ); +%spikes = lifadaptspikes( trials, input, tmax, noise, adapttau, adaptincr ); + +% interspike intervals: +isivec = isis( spikes ); +% histogram +f = figure( 1 ); +isihist( isivec, 10e-4 ); +hold on +% theoretical density: +misi = mean( isivec ); +disi = var( isivec )/2.0/misi^3; +xmax = 3.0*misi; +x = 0:0.0001:xmax; +plot( 1000.0*x, inversegauss( x, misi, disi ), 'r', 'LineWidth', 3 ); +% plot details: +title( sprintf( 'LIF, input=%g, nisi=%d', input, length( isivec ) ) ) +xlim( [ 0.0 1000.0*xmax ] ) +legend( 'data', 'inverse Gaussian' ) +hold off + +% serial correlations: +f = figure( 2 ); +isiserialcorr( isivec, 10 ); diff --git a/pointprocesses/code/lifisistats.m b/pointprocesses/code/lifisistats.m new file mode 100644 index 0000000..1dd1321 --- /dev/null +++ b/pointprocesses/code/lifisistats.m @@ -0,0 +1,63 @@ +inputs = 0:0.1:20; % lif +inputs = 0:0.1:10; % pif +avisi = []; +sdisi = []; +cvisi = []; +dcisi = []; + +for input = inputs + input + % spikes = lifspikes( 100, input, 100.0, 1e-2 ); + spikes = pifspikes( 100, input, 100.0, 1e-1 ); + isivec = isis( spikes ); + if length( isivec ) <= 1 + av = Inf; + sd = NaN; + cv = NaN; + dc = NaN; + else + av = mean( isivec ); + sd = std( isivec ); + if av > 0.0 + cv = sd/av; + dc = sd^2.0/2.0/av^3; + else + cv = NaN; + dc = NaN; + end + end + avisi = [ avisi av ]; + sdisi = [ sdisi sd ]; + cvisi = [ cvisi cv ]; + dcisi = [ dcisi dc ]; +end + +f = figure; +subplot( 2, 2, 1 ); +plot( inputs, 1.0./avisi, '-b', 'LineWidth', 3 ); +xlabel( 'Input' ); +xlim( [ inputs(1) inputs(end) ] ) +title( 'Mean rate [Hz]' ); + +subplot( 2, 2, 2 ); +plot( inputs, 1000.0*avisi, '-b', 'LineWidth', 3 ); +hold on; +plot( inputs, 1000.0*sdisi, '-c', 'LineWidth', 3 ); +hold off; +xlabel( 'Input' ); +xlim( [ inputs(1) inputs(end) ] ) +ylim( [ 0 1000 ] ) +title( 'ISI [ms]' ); +legend( 's.d. ISI', 'mean ISI' ); + +subplot( 2, 2, 3 ); +plot( inputs, cvisi, '-b', 'LineWidth', 3 ); +xlabel( 'Input' ); +xlim( [ inputs(1) inputs(end) ] ) +title( 'CV' ); + +subplot( 2, 2, 4 ); +plot( inputs, dcisi, '-b', 'LineWidth', 3 ); +xlabel( 'Input' ); +xlim( [ inputs(1) inputs(end) ] ) +title( 'D [Hz]' ); diff --git a/pointprocesses/code/lifouadaptspikes.m b/pointprocesses/code/lifouadaptspikes.m new file mode 100644 index 0000000..7dddb2d --- /dev/null +++ b/pointprocesses/code/lifouadaptspikes.m @@ -0,0 +1,64 @@ +function spikes = lifouadaptspikes( trials, input, tmaxdt, D, Dou, outau, tauadapt, adaptincr ) +% Generate spike times of a leaky integrate-and-fire neuron +% with colored noise and an adaptation current +% trials: the number of trials to be generated +% input: the stimulus either as a single value or as a vector +% tmaxdt: in case of a single value stimulus the duration of a trial +% in case of a vector as a stimulus the time step +% D: the strength of additive noise +% Dou: the strength of additive colored noise +% outau: time constant of the colored noise +% tauadapt: adaptation time constant +% adaptincr: adaptation strength + + tau = 0.01; + if nargin < 4 + D = 1e0; + end + if nargin < 5 + Dou = 1e0; + end + if nargin < 6 + outau = 1.0; + end + if nargin < 7 + tauadapt = 0.1; + end + if nargin < 8 + adaptincr = 1.0; + end + vreset = 0.0; + vthresh = 10.0; + dt = 1e-4; + + if max( size( input ) ) == 1 + input = input * ones( ceil( tmaxdt/dt ), 1 ); + else + dt = tmaxdt; + end + spikes = cell( trials, 1 ); + for k=1:trials + times = []; + j = 1; + v = vreset; + n = 0.0; + a = 0.0; + noise = sqrt(2.0*D)*randn( length( input ), 1 )/sqrt(dt); + noiseou = sqrt(2.0*Dou)*randn( length( input ), 1 )/sqrt(dt); + for i=1:length( noise ) + n = n + ( - n + noiseou(i))*dt/outau; + v = v + ( - v - a + noise(i) + n + input(i))*dt/tau; + a = a + ( - a )*dt/tauadapt; + if v >= vthresh + v = vreset; + a = a + adaptincr; + spiketime = i*dt; + if spiketime > 4.0*tauadapt + times(j) = spiketime - 4.0*tauadapt; + j = j + 1; + end + end + end + spikes{k} = times; + end +end diff --git a/pointprocesses/code/lifouspikes.m b/pointprocesses/code/lifouspikes.m new file mode 100644 index 0000000..fc1f5d5 --- /dev/null +++ b/pointprocesses/code/lifouspikes.m @@ -0,0 +1,44 @@ +function spikes = lifouspikes( trials, input, tmaxdt, D, outau ) +% Generate spike times of a leaky integrate-and-fire neuron +% trials: the number of trials to be generated +% input: the stimulus either as a single value or as a vector +% tmaxdt: in case of a single value stimulus the duration of a trial +% in case of a vector as a stimulus the time step +% D: the strength of additive white noise +% outau: time constant of the colored noise + + tau = 0.01; + if nargin < 4 + D = 1e0; + end + if nargin < 5 + outau = 1.0; + end + vreset = 0.0; + vthresh = 10.0; + dt = 1e-4; + + if length( input ) == 1 + input = input * ones( ceil( tmaxdt/dt ), 1 ); + else + dt = tmaxdt; + end + spikes = cell( trials, 1 ); + for k=1:trials + times = []; + j = 1; + n = 0.0; + v = vreset; + noise = sqrt(2.0*D)*randn( length( input ), 1 )/sqrt(dt); + for i=1:length( noise ) + n = n + ( - n + noise(i))*dt/outau; + v = v + ( - v + n + input(i))*dt/tau; + if v >= vthresh + v = vreset; + times(j) = i*dt; + j = j + 1; + end + end + spikes{k} = times; + end +end diff --git a/pointprocesses/code/lifrateisicorr.m b/pointprocesses/code/lifrateisicorr.m new file mode 100644 index 0000000..6276e79 --- /dev/null +++ b/pointprocesses/code/lifrateisicorr.m @@ -0,0 +1,34 @@ +% relation between firing rate and serieller correlation + +input = 65.0; % lifadapt 100Hz +%input = 8.0; % lifadapt 10Hz +trials = 10; +tmax = 50.0; +noise = 1e-5; +adapttau = 0.1; +adaptincr = 0.5; + +clf; +for adapttau = 0.01:0.02:0.2 + inputs = 1:5:120; + iscs = zeros( size( inputs ) ); + rates = zeros( size( inputs ) ); + for k = 1:length(inputs) + input = inputs(k); + % generate spikes: + spikes = lifadaptspikes( trials, input, tmax, noise, adapttau, adaptincr ); + isivec = isis( spikes ); + isc = isiserialcorr( isivec, 10 ); + iscs(k) = isc(2); + rates(k) = 1.0/mean( isivec ); + end + + subplot( 2, 1, 1 ); + hold on; + plot( inputs, rates ); + hold off; + subplot( 2, 1, 2 ); + hold on; + plot( rates, iscs ); + hold off; +end diff --git a/pointprocesses/code/lifspikes.m b/pointprocesses/code/lifspikes.m new file mode 100644 index 0000000..cfa0f55 --- /dev/null +++ b/pointprocesses/code/lifspikes.m @@ -0,0 +1,38 @@ +function spikes = lifspikes( trials, input, tmaxdt, D ) +% Generate spike times of a leaky integrate-and-fire neuron +% trials: the number of trials to be generated +% input: the stimulus either as a single value or as a vector +% tmaxdt: in case of a single value stimulus the duration of a trial +% in case of a vector as a stimulus the time step +% D: the strength of additive white noise + + tau = 0.01; + if nargin < 4 + D = 1e0; + end + vreset = 0.0; + vthresh = 10.0; + dt = 1e-4; + + if length( input ) == 1 + input = input * ones( ceil( tmaxdt/dt ), 1 ); + else + dt = tmaxdt; + end + spikes = cell( trials, 1 ); + for k=1:trials + times = []; + j = 1; + v = vreset; + noise = sqrt(2.0*D)*randn( length( input ), 1 )/sqrt(dt); + for i=1:length( noise ) + v = v + ( - v + noise(i) + input(i))*dt/tau; + if v >= vthresh + v = vreset; + times(j) = i*dt; + j = j + 1; + end + end + spikes{k} = times; + end +end diff --git a/pointprocesses/code/pifouspikes.m b/pointprocesses/code/pifouspikes.m new file mode 100644 index 0000000..b6516cc --- /dev/null +++ b/pointprocesses/code/pifouspikes.m @@ -0,0 +1,44 @@ +function spikes = pifouspikes( trials, input, tmaxdt, D, outau ) +% Generate spike times of a perfect integrate-and-fire neuron +% trials: the number of trials to be generated +% input: the stimulus either as a single value or as a vector +% tmaxdt: in case of a single value stimulus the duration of a trial +% in case of a vector as a stimulus the time step +% D: the strength of additive white noise +% outau: time constant of the colored noise + + tau = 0.01; + if nargin < 4 + D = 1e0; + end + if nargin < 5 + outau = 1.0; + end + vreset = 0.0; + vthresh = 10.0; + dt = 1e-4; + + if length( input ) == 1 + input = input * ones( ceil( tmaxdt/dt ), 1 ); + else + dt = tmaxdt; + end + spikes = cell( trials, 1 ); + for k=1:trials + times = []; + j = 1; + n = 0.0; + v = vreset; + noise = sqrt(2.0*D)*randn( length( input ), 1 )/sqrt(dt); + for i=1:length( noise ) + n = n + ( - n + noise(i))*dt/outau; + v = v + ( n + input(i))*dt/tau; + if v >= vthresh + v = vreset; + times(j) = i*dt; + j = j + 1; + end + end + spikes{k} = times; + end +end diff --git a/pointprocesses/code/pifspikes.m b/pointprocesses/code/pifspikes.m new file mode 100644 index 0000000..397658c --- /dev/null +++ b/pointprocesses/code/pifspikes.m @@ -0,0 +1,38 @@ +function spikes = pifspikes( trials, input, tmaxdt, D ) +% Generate spike times of a perfect integrate-and-fire neuron +% trials: the number of trials to be generated +% input: the stimulus either as a single value or as a vector +% tmaxdt: in case of a single value stimulus the duration of a trial +% in case of a vector as a stimulus the time step +% D: the strength of additive white noise + + tau = 0.01; + if nargin < 4 + D = 1e-1; + end + vreset = 0.0; + vthresh = 10.0; + dt = 1e-4; + + if length( input ) == 1 + input = input * ones( ceil( tmaxdt/dt ), 1 ); + else + dt = tmaxdt; + end + spikes = cell( trials, 1 ); + for k=1:trials + times = []; + j = 1; + v = vreset; + noise = sqrt(2.0*D)*randn( length( input ), 1 )/sqrt(dt); + for i=1:length( noise ) + v = v + ( noise(i) + input(i))*dt/tau; + if v >= vthresh + v = vreset; + times(j) = i*dt; + j = j + 1; + end + end + spikes{k} = times; + end +end diff --git a/pointprocesses/code/poissonisih.m b/pointprocesses/code/poissonisih.m new file mode 100644 index 0000000..f006e2b --- /dev/null +++ b/pointprocesses/code/poissonisih.m @@ -0,0 +1,27 @@ +rate = 100.0; +trials = 50; +tmax = 100.0; + +% generate spikes: +spikes = poissonspikes( trials, rate, tmax ); +% interspike intervals: +isivec = isis( spikes ); +% histogram +f = figure( 1 ); +isihist( isivec ); +hold on +% theoretical density: +xmax = 5.0/rate; +x = 0:0.0001:xmax; +y = rate*exp(-rate*x); +plot( 1000.0*x, y, 'r', 'LineWidth', 3 ); +% plot details: +title( sprintf( 'Poisson spike trains, rate=%g Hz, nisi=%d', rate, length( isivec ) ) ) +xlim( [ 0.0 1000.0*xmax ] ) +ylim( [ 0.0 1.1*rate ] ) +legend( 'data', 'poisson' ) +hold off + +% serial correlations: +f = figure( 2 ); +isiserialcorr( isivec, 10 ); diff --git a/pointprocesses/code/poissonisistats.m b/pointprocesses/code/poissonisistats.m new file mode 100644 index 0000000..0c97e3d --- /dev/null +++ b/pointprocesses/code/poissonisistats.m @@ -0,0 +1,46 @@ +rates = 1:1:100; +avisi = []; +sdisi = []; +cvisi = []; + +for rate = rates + spikes = poissonspikes( 10, rate, 100.0 ); + isivec = isis( spikes ); + av = mean( isivec ); + sd = std( isivec ); + cv = sd/av; + avisi = [ avisi av ]; + sdisi = [ sdisi sd ]; + cvisi = [ cvisi cv ]; +end + +f = figure; +subplot( 1, 3, 1 ); +scatter( rates, 1000.0*avisi, 'b', 'filled' ); +hold on; +plot( rates, 1000.0./rates, 'r' ); +hold off; +xlabel( 'Rate \lambda [Hz]' ); +ylim( [ 0 1000 ] ); +title( 'Mean ISI [ms]' ); +legend( 'simulation', 'theory 1/\lambda' ); + +subplot( 1, 3, 2 ); +scatter( rates, 1000.0*sdisi, 'b', 'filled' ); +hold on; +plot( rates, 1000.0./rates, 'r' ); +hold off; +xlabel( 'Rate \lambda [Hz]' ); +ylim( [ 0 1000 ] ) +title( 'Standard deviation ISI [ms]' ); +legend( 'simulation', 'theory 1/\lambda' ); + +subplot( 1, 3, 3 ); +scatter( rates, cvisi, 'b', 'filled' ); +hold on; +plot( rates, ones( size( rates ) ), 'r' ); +hold off; +xlabel( 'Rate \lambda [Hz]' ); +ylim( [ 0 2 ] ) +title( 'CV' ); +legend( 'simulation', 'theory' ); diff --git a/pointprocesses/code/poissonspikes.m b/pointprocesses/code/poissonspikes.m new file mode 100644 index 0000000..f00291c --- /dev/null +++ b/pointprocesses/code/poissonspikes.m @@ -0,0 +1,20 @@ +function spikes = poissonspikes( trials, rate, tmax ) +% Generate spike times of a homogeneous poisson process +% trials: number of trials that should be generated +% rate: the rate of the Poisson process in Hertz +% tmax: the duration of each trial in seconds +% returns a cell array of vectors of spike times + + dt = 3.33e-5; + p = rate*dt; % probability of event per bin of width dt + % make sure p is small enough: + if p > 0.1 + p = 0.1 + dt = p/rate; + end + spikes = cell( trials, 1 ); + for k=1:trials + x = rand( 1, round(tmax/dt) ); % uniform random numbers for each bin + spikes{k} = find( x < p ) * dt; + end +end diff --git a/pointprocesses/code/raster.pdf b/pointprocesses/code/raster.pdf new file mode 100644 index 0000000..a20fa0e Binary files /dev/null and b/pointprocesses/code/raster.pdf differ diff --git a/pointprocesses/code/savefigpdf.m b/pointprocesses/code/savefigpdf.m new file mode 100644 index 0000000..fbe2dc2 --- /dev/null +++ b/pointprocesses/code/savefigpdf.m @@ -0,0 +1,28 @@ +function savefigpdf( fig, name, width, height ) +% Saves figure fig in pdf file name.pdf with appropriately set page size +% and fonts + +% default width: +if nargin < 3 + width = 11.7; +end +% default height: +if nargin < 4 + height = 9.0; +end + +% paper: +set( fig, 'PaperUnits', 'centimeters' ); +set( fig, 'PaperSize', [width height] ); +set( fig, 'PaperPosition', [0.0 0.0 width height] ); +set( fig, 'Color', 'white') + +% font: +set( findall( fig, 'type', 'axes' ), 'FontSize', 12 ) +set( findall( fig, 'type', 'text' ), 'FontSize', 12 ) + +% save: +saveas( fig, name, 'pdf' ) + +end + diff --git a/pointprocesses/code/spikeraster.m b/pointprocesses/code/spikeraster.m new file mode 100644 index 0000000..f7ff5d4 --- /dev/null +++ b/pointprocesses/code/spikeraster.m @@ -0,0 +1,17 @@ +function spikeraster( spikes ) +% Display a spike raster of the spike times given in spikes. +% spikes: a cell array of vectors of spike times + +ntrials = length(spikes); +for k = 1:ntrials + times = 1000.0*spikes{k}; % conversion to ms + for i = 1:length( times ) + line([times(i) times(i)],[k-0.4 k+0.4], 'Color', 'k' ); + end +end +xlabel( 'Time [ms]' ); +ylabel( 'Trials'); +ylim( [ 0.3 ntrials+0.7 ] ) + +end + diff --git a/pointprocesses/exercises/hompoissonisih.m b/pointprocesses/exercises/hompoissonisih.m new file mode 100644 index 0000000..cd2bc06 --- /dev/null +++ b/pointprocesses/exercises/hompoissonisih.m @@ -0,0 +1,18 @@ +% generate spike times: +rate = 20.0; +spikes = hompoissonspikes( 10, rate, 50.0 ); +% isi histogram: +isivec = isis( spikes ); +isihist( isivec ); +hold on +% theoretical density: +xmax = 5.0/rate; +x = 0:0.0001:xmax; +y = rate*exp(-rate*x); +plot( 1000.0*x, y, 'r', 'LineWidth', 3 ); +% plot details: +title( sprintf( 'Poisson spike trains, rate=%g Hz, nisi=%d', rate, length( isivec ) ) ) +xlim( [ 0.0 1000.0*xmax ] ) +ylim( [ 0.0 1.1*rate ] ) +legend( 'data', 'poisson' ) +hold off diff --git a/pointprocesses/exercises/hompoissonisistats.m b/pointprocesses/exercises/hompoissonisistats.m new file mode 100644 index 0000000..7ca3cf3 --- /dev/null +++ b/pointprocesses/exercises/hompoissonisistats.m @@ -0,0 +1,46 @@ +rates = 1:1:100; +avisi = []; +sdisi = []; +cvisi = []; + +for rate = rates + spikes = hompoissonspikes( 10, rate, 100.0 ); + isivec = isis( spikes ); + av = mean( isivec ); + sd = std( isivec ); + cv = sd/av; + avisi = [ avisi av ]; + sdisi = [ sdisi sd ]; + cvisi = [ cvisi cv ]; +end + +f = figure; +subplot( 1, 3, 1 ); +scatter( rates, 1000.0*avisi, 'b', 'filled' ); +hold on; +plot( rates, 1000.0./rates, 'r' ); +hold off; +xlabel( 'Rate \lambda [Hz]' ); +ylim( [ 0 1000 ] ); +title( 'Mean ISI [ms]' ); +legend( 'simulation', 'theory 1/\lambda' ); + +subplot( 1, 3, 2 ); +scatter( rates, 1000.0*sdisi, 'b', 'filled' ); +hold on; +plot( rates, 1000.0./rates, 'r' ); +hold off; +xlabel( 'Rate \lambda [Hz]' ); +ylim( [ 0 1000 ] ) +title( 'Standard deviation ISI [ms]' ); +legend( 'simulation', 'theory 1/\lambda' ); + +subplot( 1, 3, 3 ); +scatter( rates, cvisi, 'b', 'filled' ); +hold on; +plot( rates, ones( size( rates ) ), 'r' ); +hold off; +xlabel( 'Rate \lambda [Hz]' ); +ylim( [ 0 2 ] ) +title( 'CV' ); +legend( 'simulation', 'theory' ); diff --git a/pointprocesses/exercises/hompoissonspikes.m b/pointprocesses/exercises/hompoissonspikes.m new file mode 100644 index 0000000..12af153 --- /dev/null +++ b/pointprocesses/exercises/hompoissonspikes.m @@ -0,0 +1,19 @@ +function spikes = hompoissonspikes( trials, rate, tmax ) +% Generate spike times of a homogeneous poisson process +% trials: number of trials that should be generated +% rate: the rate of the Poisson process in Hertz +% tmax: the duration of each trial in seconds +% returns a cell array of vectors of spike times + + dt = 3.33e-5; + p = rate*dt; + if p > 0.2 + p = 0.2 + dt = p/rate; + end + x = rand( trials, ceil(tmax/dt) ); + spikes = cell( trials, 1 ); + for k=1:trials + spikes{k} = find( x(k,:) >= 1.0-p ) * dt; + end +end diff --git a/pointprocesses/exercises/iafisistats-solutions.pdf b/pointprocesses/exercises/iafisistats-solutions.pdf new file mode 100644 index 0000000..d1b6c63 Binary files /dev/null and b/pointprocesses/exercises/iafisistats-solutions.pdf differ diff --git a/pointprocesses/exercises/iafisistats.pdf b/pointprocesses/exercises/iafisistats.pdf new file mode 100644 index 0000000..c19617b Binary files /dev/null and b/pointprocesses/exercises/iafisistats.pdf differ diff --git a/pointprocesses/exercises/iafisistats.tex b/pointprocesses/exercises/iafisistats.tex new file mode 100644 index 0000000..53ca479 --- /dev/null +++ b/pointprocesses/exercises/iafisistats.tex @@ -0,0 +1,142 @@ +\documentclass[addpoints,10pt]{exam} +\usepackage{url} +\usepackage{color} +\usepackage{hyperref} +\usepackage{graphicx} + +\pagestyle{headandfoot} +\runningheadrule +\firstpageheadrule + +\firstpageheader{Scientific Computing}{Integrate-and-fire models}{Oct 28, 2014} +%\runningheader{Homework 01}{Page \thepage\ of \numpages}{23. October 2014} +\firstpagefooter{}{}{} +\runningfooter{}{}{} +\pointsinmargin +\bracketedpoints + +%\printanswers +\shadedsolutions + +\usepackage[mediumspace,mediumqspace,Gray]{SIunits} % \ohm, \micro + +%%%%% listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage{listings} +\lstset{ + basicstyle=\ttfamily, + numbers=left, + showstringspaces=false, + language=Matlab, + breaklines=true, + breakautoindent=true, + columns=flexible, + frame=single, + captionpos=t, + xleftmargin=2em, + xrightmargin=1em, + aboveskip=10pt, + %title=\lstname, + title={\protect\filename@parse{\lstname}\protect\filename@base.\protect\filename@ext} + } + + +\begin{document} + +\sffamily +%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{questions} + \question \textbf{Statistics of integrate-and-fire neurons} + For the following use different variants of the leaky integrate-and-fire models provided in \texttt{lifspikes.m}, + \texttt{lifouspikes.m}, and \texttt{lifadaptspikes.m} do generate some spike train data. + Use the functions you wrote for the Poisson process to analyze the statistics of the spike trains. + \begin{parts} + \part Generate a few trials of the two models for two different inputs + that result in qualitatively different spike trains and display + them in a raster plot. Decide for a noise strength (good values to try are 0.001, 0.01, 0.1, 1). + \begin{solution} + \begin{lstlisting} +spikes = pifspikes( 10, 1.0, 0.5, 0.01 ); +%spikes = pifspikes( 10, 10.0, 0.5, 0.01 ); +%spikes = lifspikes( 10, 11.0, 0.5, 0.001 ); +%spikes = lifspikes( 10, 15.0, 0.5, 0.001 ); +spikeraster( spikes ) + \end{lstlisting} + \mbox{}\\[-3ex] + \colorbox{white}{\includegraphics[width=0.48\textwidth]{pifraster02}} + \colorbox{white}{\includegraphics[width=0.48\textwidth]{pifraster10}}\\ + \colorbox{white}{\includegraphics[width=0.48\textwidth]{lifraster10}} + \colorbox{white}{\includegraphics[width=0.48\textwidth]{lifraster15}} + \end{solution} + + + \part The inverse Gaussian describes the interspike interval distribution of a PIF driven with white noise: + \[ p(T) = \frac{1}{\sqrt{4\pi D T^3}}\exp\left[-\frac{(T-\langle T \rangle)^2}{4DT\langle T \rangle^2}\right] \] + where $\langle T \rangle$ is the mean interspike interval and + \[ D = \frac{\langle(T - \langle T \rangle)^2\rangle}{2 \langle T \rangle^3} \] + is the diffusion coefficient (variance of the interspike intervals + $T$ divided by two times the mean cubed). Show in two plots how + this distribution depends on $\langle T \rangle$ and $D$. + \begin{solution} + \lstinputlisting{simulations/inversegauss.m} + \lstinputlisting{simulations/inversegaussplot.m} + \colorbox{white}{\includegraphics[width=0.98\textwidth]{inversegauss}} + \end{solution} + + \part Extent your function plotting an interspike interval histogram + to also report the diffusion coefficient $D$. + \begin{solution} + \begin{lstlisting} +... +% annotation: +misi = mean( isis ); +sdisi = std( isis ); +disi = sdisi^2.0/2.0/misi^3; +text( 0.6, 0.7, sprintf( 'mean=%.1f ms', 1000.0*misi ), 'Units', 'normalized' ) +text( 0.6, 0.6, sprintf( 'std=%.1f ms', 1000.0*sdisi ), 'Units', 'normalized' ) +text( 0.6, 0.5, sprintf( 'CV=%.2f', sdisi/misi ), 'Units', 'normalized' ) +text( 0.6, 0.4, sprintf( 'D=%.1f Hz', disi ), 'Units', 'normalized' ) +... + \end{lstlisting} + \end{solution} + + \part Compare intersike interval histograms obtained from the LIF and PIF models with the inverse Gaussian. + \begin{solution} + \lstinputlisting{simulations/lifisih.m} + \colorbox{white}{\includegraphics[width=0.48\textwidth]{pifisih01}} + \colorbox{white}{\includegraphics[width=0.48\textwidth]{pifisih10}}\\ + \colorbox{white}{\includegraphics[width=0.48\textwidth]{lifisih08}} + \colorbox{white}{\includegraphics[width=0.48\textwidth]{lifisih16}} + \end{solution} + + \part Plot the firing rate (inverse mean interspike interval), + mean interspike interval, the corresponding standard deviation, + CV, and diffusion coefficient as a function of the input to the LIF + and the PIF with noise strength set to 0.01. + \begin{solution} + \lstinputlisting{simulations/lifisistats.m} + Leaky integrate-and-fire:\\ + \colorbox{white}{\includegraphics[width=0.8\textwidth]{lifisistats}}\\ + Perfect integrate-and-fire:\\ + \colorbox{white}{\includegraphics[width=0.8\textwidth]{pifisistats}} + \end{solution} + + \part Plot the firing rate as a function of input of the LIF and the PIF for various values + of the noise strength. + \begin{solution} + \lstinputlisting{simulations/lifficurves.m} + Leaky integrate-and-fire:\\ + \colorbox{white}{\includegraphics[width=0.7\textwidth]{lifficurves}}\\ + Perfect integrate-and-fire:\\ + \colorbox{white}{\includegraphics[width=0.7\textwidth]{pifficurves}} + \end{solution} + + \part Use the functions for computing serial correlations, count statistics and fano factors + to further explore the statistics of the integrate-and-fire models! + + \end{parts} + +\end{questions} + + +\end{document} diff --git a/pointprocesses/exercises/inversegauss.pdf b/pointprocesses/exercises/inversegauss.pdf new file mode 100644 index 0000000..798a9ec Binary files /dev/null and b/pointprocesses/exercises/inversegauss.pdf differ diff --git a/pointprocesses/exercises/lifficurves.pdf b/pointprocesses/exercises/lifficurves.pdf new file mode 100644 index 0000000..fc228b2 Binary files /dev/null and b/pointprocesses/exercises/lifficurves.pdf differ diff --git a/pointprocesses/exercises/lifisih08.pdf b/pointprocesses/exercises/lifisih08.pdf new file mode 100644 index 0000000..4908f72 Binary files /dev/null and b/pointprocesses/exercises/lifisih08.pdf differ diff --git a/pointprocesses/exercises/lifisih16.pdf b/pointprocesses/exercises/lifisih16.pdf new file mode 100644 index 0000000..5c4fb3f Binary files /dev/null and b/pointprocesses/exercises/lifisih16.pdf differ diff --git a/pointprocesses/exercises/lifisistats.pdf b/pointprocesses/exercises/lifisistats.pdf new file mode 100644 index 0000000..f573bae Binary files /dev/null and b/pointprocesses/exercises/lifisistats.pdf differ diff --git a/pointprocesses/exercises/lifraster10.pdf b/pointprocesses/exercises/lifraster10.pdf new file mode 100644 index 0000000..c6e5f67 Binary files /dev/null and b/pointprocesses/exercises/lifraster10.pdf differ diff --git a/pointprocesses/exercises/lifraster15.pdf b/pointprocesses/exercises/lifraster15.pdf new file mode 100644 index 0000000..fac5b4d Binary files /dev/null and b/pointprocesses/exercises/lifraster15.pdf differ diff --git a/pointprocesses/exercises/pifficurves.pdf b/pointprocesses/exercises/pifficurves.pdf new file mode 100644 index 0000000..8ef6ffa Binary files /dev/null and b/pointprocesses/exercises/pifficurves.pdf differ diff --git a/pointprocesses/exercises/pifisih01.pdf b/pointprocesses/exercises/pifisih01.pdf new file mode 100644 index 0000000..d485e57 Binary files /dev/null and b/pointprocesses/exercises/pifisih01.pdf differ diff --git a/pointprocesses/exercises/pifisih10.pdf b/pointprocesses/exercises/pifisih10.pdf new file mode 100644 index 0000000..bb0f667 Binary files /dev/null and b/pointprocesses/exercises/pifisih10.pdf differ diff --git a/pointprocesses/exercises/pifisistats.pdf b/pointprocesses/exercises/pifisistats.pdf new file mode 100644 index 0000000..3c38580 Binary files /dev/null and b/pointprocesses/exercises/pifisistats.pdf differ diff --git a/pointprocesses/exercises/pifraster02.pdf b/pointprocesses/exercises/pifraster02.pdf new file mode 100644 index 0000000..e23d1b4 Binary files /dev/null and b/pointprocesses/exercises/pifraster02.pdf differ diff --git a/pointprocesses/exercises/pifraster10.pdf b/pointprocesses/exercises/pifraster10.pdf new file mode 100644 index 0000000..c6534b0 Binary files /dev/null and b/pointprocesses/exercises/pifraster10.pdf differ diff --git a/pointprocesses/exercises/poisson-solutions.pdf b/pointprocesses/exercises/poisson-solutions.pdf new file mode 100644 index 0000000..4546a8d Binary files /dev/null and b/pointprocesses/exercises/poisson-solutions.pdf differ diff --git a/pointprocesses/exercises/poisson.pdf b/pointprocesses/exercises/poisson.pdf new file mode 100644 index 0000000..aa1756e Binary files /dev/null and b/pointprocesses/exercises/poisson.pdf differ diff --git a/pointprocesses/exercises/poisson.tex b/pointprocesses/exercises/poisson.tex new file mode 100644 index 0000000..4b8f0f0 --- /dev/null +++ b/pointprocesses/exercises/poisson.tex @@ -0,0 +1,160 @@ +\documentclass[addpoints,10pt]{exam} +\usepackage{url} +\usepackage{color} +\usepackage{hyperref} +\usepackage{graphicx} + +\pagestyle{headandfoot} +\runningheadrule +\firstpageheadrule + +\firstpageheader{Scientific Computing}{Homogeneous Poisson process}{Oct 27, 2014} +%\runningheader{Homework 01}{Page \thepage\ of \numpages}{23. October 2014} +\firstpagefooter{}{}{} +\runningfooter{}{}{} +\pointsinmargin +\bracketedpoints + +%\printanswers +\shadedsolutions + +\usepackage[mediumspace,mediumqspace,Gray]{SIunits} % \ohm, \micro + +%%%%% listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage{listings} +\lstset{ + basicstyle=\ttfamily, + numbers=left, + showstringspaces=false, + language=Matlab, + breaklines=true, + breakautoindent=true, + columns=flexible, + frame=single, + captionpos=t, + xleftmargin=2em, + xrightmargin=1em, + aboveskip=10pt, + %title=\lstname, + title={\protect\filename@parse{\lstname}\protect\filename@base.\protect\filename@ext} + } + + +\begin{document} + +\sffamily +%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{questions} + \question \textbf{Homogeneous Poisson process} + We use the Poisson process to generate spike trains on which we can test and imrpove some + standard analysis functions. + + A homogeneous Poisson process of rate $\lambda$ (measured in Hertz) is a point process + where the probability of an event is independent of time $t$ and independent of previous events. + The probability $P$ of an event within a bin of width $\Delta t$ is + \[ P = \lambda \cdot \Delta t \] + for sufficiently small $\Delta t$. + \begin{parts} + + \part Write a function that generates $n$ homogeneous Poisson spike trains of a given duration $T_{max}$ + with rate $\lambda$. + \begin{solution} + \lstinputlisting{hompoissonspikes.m} + \end{solution} + + \part Using this function, generate a few trials and display them in a raster plot. + \begin{solution} + \lstinputlisting{simulations/spikeraster.m} + \begin{lstlisting} +spikes = hompoissonspikes( 10, 100.0, 0.5 ); +spikeraster( spikes ) + \end{lstlisting} + \mbox{}\\[-3ex] + \colorbox{white}{\includegraphics[width=0.7\textwidth]{poissonraster100hz}} + \end{solution} + + \part Write a function that extracts a single vector of interspike intervals + from the spike times returned by the first function. + \begin{solution} + \lstinputlisting{simulations/isis.m} + \end{solution} + + \part Write a function that plots the interspike-interval histogram + from a vector of interspike intervals. The function should also + compute the mean, the standard deviation, and the CV of the intervals + and display the values in the plot. + \begin{solution} + \lstinputlisting{simulations/isihist.m} + \end{solution} + + \part Compute histograms for Poisson spike trains with rate + $\lambda=100$\,Hz. Play around with $T_{max}$ and $n$ and the bin width + (start with 1\,ms) of the histogram. + How many + interspike intervals do you approximately need to get a ``nice'' + histogram? How long do you need to record from the neuron? + \begin{solution} + About 5000 intervals for 25 bins. This corresponds to a $5000 / 100\,\hertz = 50\,\second$ recording + of a neuron firing with 100\,\hertz. + \end{solution} + + \part Compare the histogram with the true distribution of intervals $T$ of the Poisson process + \[ p(T) = \lambda e^{-\lambda T} \] + for various rates $\lambda$. + \begin{solution} + \lstinputlisting{hompoissonisih.m} + \colorbox{white}{\includegraphics[width=0.48\textwidth]{poissonisih100hz}} + \colorbox{white}{\includegraphics[width=0.48\textwidth]{poissonisih20hz}} + \end{solution} + + \part What happens if you make the bin width of the histogram smaller than $\Delta t$ + used for generating the Poisson spikes? + \begin{solution} + The bins between the discretization have zero entries. Therefore + the other ones become higher than they should be. + \end{solution} + + \part Plot the mean interspike interval, the corresponding standard deviation, and the CV + as a function of the rate $\lambda$ of the Poisson process. + Compare the simulations with the theoretical expectations for the dependence on $\lambda$. + \begin{solution} + \lstinputlisting{hompoissonisistats.m} + \colorbox{white}{\includegraphics[width=0.98\textwidth]{poissonisistats}} + \end{solution} + + \part Write a function that computes serial correlations for the interspike intervals + for a range of lags. + The serial correlations $\rho_k$ at lag $k$ are defined as + \[ \rho_k = \frac{\langle (T_{i+k} - \langle T \rangle)(T_i - \langle T \rangle) \rangle}{\langle (T_i - \langle T \rangle)^2\rangle} = \frac{{\rm cov}(T_{i+k}, T_i)}{{\rm var}(T_i)} \] + Use this function to show that interspike intervals of Poisson spikes are independent. + \begin{solution} + \lstinputlisting{simulations/isiserialcorr.m} + \colorbox{white}{\includegraphics[width=0.98\textwidth]{poissonserial100hz}} + \end{solution} + + \part Write a function that generates from spike times + a histogram of spike counts in a count window of given duration $W$. + The function should also plot the Poisson distribution + \[ P(k) = \frac{(\lambda W)^ke^{\lambda W}}{k!} \] + for the rate $\lambda$ determined from the spike trains. + \begin{solution} + \lstinputlisting{simulations/counthist.m} + \colorbox{white}{\includegraphics[width=0.48\textwidth]{poissoncounthistdist100hz10ms}} + \colorbox{white}{\includegraphics[width=0.48\textwidth]{poissoncounthistdist100hz100ms}} + \end{solution} + + \part Write a function that computes mean count, variance of count and the corresponding Fano factor + for a range of count window durations. The function should generate tow plots: one plotting + the count variance against the mean, the other one the Fano factor as a function of the window duration. + \begin{solution} + \lstinputlisting{simulations/fano.m} + \colorbox{white}{\includegraphics[width=0.98\textwidth]{poissonfano100hz}} + \end{solution} + + \end{parts} + +\end{questions} + + +\end{document} diff --git a/pointprocesses/exercises/poissoncounthistdist100hz100ms.pdf b/pointprocesses/exercises/poissoncounthistdist100hz100ms.pdf new file mode 100644 index 0000000..aa25500 Binary files /dev/null and b/pointprocesses/exercises/poissoncounthistdist100hz100ms.pdf differ diff --git a/pointprocesses/exercises/poissoncounthistdist100hz10ms.pdf b/pointprocesses/exercises/poissoncounthistdist100hz10ms.pdf new file mode 100644 index 0000000..746f30b Binary files /dev/null and b/pointprocesses/exercises/poissoncounthistdist100hz10ms.pdf differ diff --git a/pointprocesses/exercises/poissonfano100hz.pdf b/pointprocesses/exercises/poissonfano100hz.pdf new file mode 100644 index 0000000..c25dd3c Binary files /dev/null and b/pointprocesses/exercises/poissonfano100hz.pdf differ diff --git a/pointprocesses/exercises/poissonisih100hz.pdf b/pointprocesses/exercises/poissonisih100hz.pdf new file mode 100644 index 0000000..e2f4f65 Binary files /dev/null and b/pointprocesses/exercises/poissonisih100hz.pdf differ diff --git a/pointprocesses/exercises/poissonisih20hz.pdf b/pointprocesses/exercises/poissonisih20hz.pdf new file mode 100644 index 0000000..baee955 Binary files /dev/null and b/pointprocesses/exercises/poissonisih20hz.pdf differ diff --git a/pointprocesses/exercises/poissonisistats.pdf b/pointprocesses/exercises/poissonisistats.pdf new file mode 100644 index 0000000..359d45e Binary files /dev/null and b/pointprocesses/exercises/poissonisistats.pdf differ diff --git a/pointprocesses/exercises/poissonraster100hz.pdf b/pointprocesses/exercises/poissonraster100hz.pdf new file mode 100644 index 0000000..a20fa0e Binary files /dev/null and b/pointprocesses/exercises/poissonraster100hz.pdf differ diff --git a/pointprocesses/exercises/poissonserial100hz.pdf b/pointprocesses/exercises/poissonserial100hz.pdf new file mode 100644 index 0000000..ff667d9 Binary files /dev/null and b/pointprocesses/exercises/poissonserial100hz.pdf differ diff --git a/pointprocesses/lecture/Makefile b/pointprocesses/lecture/Makefile new file mode 100644 index 0000000..7a243a5 --- /dev/null +++ b/pointprocesses/lecture/Makefile @@ -0,0 +1,142 @@ +BASENAME=pointprocesses + +TEXFILE=$(BASENAME).tex +DVIFILE=$(BASENAME).dvi +PSFILE=$(BASENAME).ps +PDFFILE=$(BASENAME).pdf + +FOILSFILE=foils.pdf +THUMBNAILSFILE=thumbnails.pdf + +HTMLBASENAME=$(BASENAME)h +HTMLTEXFILE=$(BASENAME)h.tex +HTMLDIR=$(BASENAME)h + +GPTFILES=$(wildcard *.gpt) +GPTTEXFILES=$(GPTFILES:.gpt=.tex) + + +all: ps pdf talk again watchps watchpdf foils thumbs html html1 epsfigs clean cleanup cleanplots help +.PHONY: epsfigs + + +# thumbnails: +thumbs: $(THUMBNAILSFILE) +$(THUMBNAILSFILE): $(TEXFILE) $(GPTTEXFILES) + sed -e 's/setboolean{presentation}{true}/setboolean{presentation}{false}/; s/usepackage{crop}/usepackage[frame]{crop}/' $< > thumbsfoils.tex + pdflatex thumbsfoils | tee /dev/stderr | fgrep -q "Rerun to get cross-references right" && pdflatex thumbsfoils || true + pdfnup --nup 2x4 --no-landscape --paper a4paper --trim "-1cm -1cm -1cm -1cm" --outfile $@ thumbsfoils.pdf '1-19' + rm thumbsfoils.* + +# transparencies: +foils: $(FOILSFILE) +$(FOILSFILE): $(TEXFILE) $(GPTTEXFILES) + sed -e 's/setboolean{presentation}{true}/setboolean{presentation}{false}/' $< > tfoils.tex + pdflatex tfoils | tee /dev/stderr | fgrep -q "Rerun to get cross-references right" && pdflatex tfoils || true + pdfnup --nup 1x2 --orient portrait --trim "-1mm -1mm -1mm -1mm" --frame true --delta "1cm 1cm" --paper a4paper --outfile tfoils2.pdf tfoils.pdf + pdfnup --nup 1x1 --orient portrait --trim "-2cm -2cm -2cm -2cm" --paper a4paper --outfile $@ tfoils2.pdf + rm tfoils.* tfoils2.pdf + +# talk: +talk: $(PDFFILE) +pdf: $(PDFFILE) +$(PDFFILE): $(TEXFILE) $(GPTTEXFILES) + pdflatex -interaction=scrollmode $< | tee /dev/stderr | fgrep -q "Rerun to get cross-references right" && pdflatex -interaction=scrollmode $< || true +# batchmode (no output, no stop on error) +# nonstopmode / scrollmode (no stop on error) +# errorstopmode (stop on error) + + +again : + pdflatex $(TEXFILE) + +watchpdf : + while true; do ! make -q pdf && make pdf; sleep 0.5; done + +# html +html : $(HTMLTEXFILE) $(GPTTEXFILES) + rm -f $(HTMLDIR)/* + htlatex $< + mkdir -p $(HTMLDIR) + mv $(HTMLBASENAME).html $(HTMLDIR) + mv $(HTMLBASENAME)*.* $(HTMLDIR) + mv z*.gif $(HTMLDIR) + cd $(HTMLDIR); for i in *.gif; do convert -page +0+0 $$i tmp.gif; mv tmp.gif $$i; done; rmtex $(HTMLBASENAME) + +#$(HTMLTEXFILE) : $(TEXFILE) Makefile +# sed 's/setboolean{html}{false}/setboolean{html}{true}/; s/\\colorbox{white}{\(.*\)}/\1/g' $< > $@ + +html1 : $(HTMLTEXFILE) $(GPTTEXFILES) + latex2html -dir $(HTMLDIR) -mkdir -subdir -nonavigation -noinfo -image_type png -notransparent -white -split 0 $< + sed 's-Date:--' $(HTMLDIR)/$(HTMLDIR).html > tmp.html + cp tmp.html $(HTMLDIR)/index.html + mv tmp.html $(HTMLDIR)/$(HTMLDIR).html + +$(HTMLTEXFILE) : $(TEXFILE) + sed '/^%nohtml/,/^%endnohtml/d; s/\\colorbox{white}{\(.*\)}/\1/g' $< > $@ + + +# eps of all figures: +epsfigs: + mkdir -p epsfigs; \ + for i in $(GPTFILES); do \ + { sed -n -e '1,/\\begin{document}/p' $(TEXFILE); echo "\texpicture{$${i%%.*}}"; echo "\end{document}"; } > tmp.tex; \ + latex tmp.tex; \ + dvips tmp.dvi; \ + ps2eps tmp.ps; \ + mv tmp.eps epsfigs/$${i%%.*}.eps; \ + rm tmp.*; \ + done + + +# plots: +%.tex: %.gpt whitestyles.gp + gnuplot whitestyles.gp $< + epstopdf $*.eps + + +clean : + rm -f *~ + rmtex $(BASENAME) + rm -f $(GPTTEXFILES) + +cleanup : + rm -f *~ + rmtex $(BASENAME) + rm -f $(PSFILE) $(PDFFILE) $(FOILSFILE) $(THUMBNAILSFILE) + rm -f $(GPTTEXFILES) + rm -f -r $(HTMLDIR) + + +cleanplots : + sed -n -e '/\\begin{document}/,/\\end{document}/p' $(TEXFILE) | fgrep '\input{' | grep -v '^%' | sed 's/.*input{\(.*\).tex}.*/\1.gpt/' > plot.fls + mkdir -p unusedplots + for i in *.gp*; do \ + grep -q $$i plot.fls || { grep -q $$i $$(> plot.fls + for i in $$( dat.fls + mkdir -p unuseddata + for i in *.dat; do \ + grep -q $$i dat.fls || mv $$i unuseddata; \ + done + rm dat.fls plot.fls + + +help : + @echo -e \ + "make pdf: make the pdf file of the talk.\n"\ + "make foils: make black&white postscript foils of the talk.\n"\ + "make thumbs: make color thumbnails of the talk.\n"\ + "make again: run latex and make the pdf file of the talk,\n"\ + " no matter whether you changed the .tex file or not.\n\n"\ + "make watchpdf: make the pdf file of the talk\n"\ + " whenever the tex file is modified.\n"\ + "make html: make a html version of the paper (in $(HTMLDIR)).\n\n"\ + "make clean: remove all intermediate files,\n"\ + " just leave the source files and the final .ps and .pdf files.\n"\ + "make cleanup: remove all intermediate files as well as\n"\ + " the final .ps and .pdf files.\n"\ + "make cleanplots: move all unused .gpt and .dat files\n"\ + " into unusedplots/ and unuseddata/, respectively." diff --git a/pointprocesses/lecture/UT_WBMW_Rot_RGB.pdf b/pointprocesses/lecture/UT_WBMW_Rot_RGB.pdf new file mode 100644 index 0000000..f54eedc --- /dev/null +++ b/pointprocesses/lecture/UT_WBMW_Rot_RGB.pdf @@ -0,0 +1,529 @@ +%PDF-1.5 %âãÏÓ +1 0 obj <>/OCGs[15 0 R 18 0 R 21 0 R 25 0 R 35 0 R 36 0 R 37 0 R 38 0 R]>>/Pages 2 0 R/Type/Catalog>> endobj 34 0 obj <>stream + + + + + application/pdf + + + EKUT_WortBildMarke_W_RGB + + + + + Adobe Illustrator CS3 + 2010-07-08T15:07+02:00 + 2010-09-21T13:10:33+02:00 + 2010-09-21T13:10:33+02:00 + + + + 256 + 68 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgARAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXmPm/RNIu /wAwrs3HliLzAZdEjaWLjAJARcSJzDSlW5cRxBQ8qDbtkCN3a6fLIYRU+D1+fcl/5kaM15511RbD SF1DUp/LLGJk9NJo5RclEuI2biTJEPs0YE0pXBIbtmiycOKNyqPifo5fFV8w/oPXvMXkXUYtLj8y 297puoMEnjg5zqiWxRnFxxTkrOxoTsScJ3pGHjxwyRMuAiUe/bn3KHmODydp3m7TrjWtDX9EweVp PVsjbi5a3SC4txGHoGp6K1XnX4fHAatOE5ZYyIS9Xic7q9j9679B32nzflrDeW8epanb3F+YRPIr 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 XYq7FXYq/wD/2Q== + + + + + + uuid:4843E9BF348CDF11938FC449556742DA + uuid:b47a17de-e854-6642-a62a-d66d7f6f8213 + proof:pdf + + uuid:4743E9BF348CDF11938FC449556742DA + uuid:4643E9BF348CDF11938FC449556742DA + + + + 1 + False + False + + 194.999984 + 50.000049 + Millimeters + + + + Cyan + Magenta + Yellow + Black + + + + + + Standard-Farbfeldgruppe + 0 + + + + R=165 G=30 B=55 + PROCESS + 100.000000 + RGB + 165 + 29 + 54 + + + + + + + + + Adobe PDF library 8.00 + + + + + + + + + + + + + + + + + + + + + + + + + endstream endobj 2 0 obj <> endobj 40 0 obj <>/Resources<>/Properties<>>>/Thumb 44 0 R/TrimBox[0.0 0.0 552.756 141.732]/Type/Page>> endobj 41 0 obj <>stream +H‰dWËn-¹ ÜŸ¯è8}%RÏíÜY ²È"`“…`&@¾?U¤(µ°]’Zâ³HþøëÏëǯ?ÓõËŸ~^¯?ÿŠ_?|)ÿÿ’øÒï¯tå’ï®rÕ*w¯ízÇÂÿxýýú×+Ý­ô+Ý9ü–Ü®?~{ýøËßÒõÛ¿_¿_ùJøÉ—ÌzÏ™÷¥[ß|½¸…ß÷,ߦœ/½“(okã*wïÝUæõñj·Ö~½õéW»KÁ^½U5t;ghÞÒw¤N™ó]ðUÆí}£×C’XÀS ¯JÆ_¹Ó(€ÐnÆ‚h³…‰ g7ØEŸ°¶¹Žs¸ÊõùÀ +íˆR%¿+U%ÊxßÂÆ¥§)üã¿“›ó㥸3›¤vÿ‚Ò½Œ%Ù5nú=îÜãÿr×B”{ŒŒ½$¼ä.­_¦ä#¹‡ UëUï’N™£Â„/øÿp]Ò¾.mpn ×—æ Žâ>‰½ +aª}E§Mñûx¬Ãik£ãQÛÈó€®Õ9l‹ßL¾dé9pjL=ƇY(y©&_EüR$óE¹¾J†2,Š›îƒÕ)®«uX¹<Îfíl Xhˆ¤óuw«ùÐD>*Y\Álô dì| vS²™Ý”M­ù‚eCÑb¨»ò=Í ·iû³Vƒ?àt“ǂܴ9>F(öqiº¡I^K=û +O9L•yµ EGaÆ>”ýµ§Ä¹|9pï¶~î +bL­0Geø^Á3UŽ=â7&)ê›­qa›Ç+{ÃSêO5,?\QУäq\À$ùÁX(ÉcÏxHnÍíð”Cª2fvÜH< ½^6ÎûcЬû©œ5¾„‹ú¼ø?¬ö¼Cd¤˜I J™Í”ÄI$I.f€©„œuÏôg’wRW0Moǽó.}>ÜK¶­'v =mÜöB¦GrDâFáñÇ]Λ' 3DŸËÃëXÈÙCo¼Ý’o3n=qIGÁzM…gE1šµÚ”½0Ë3G©®sjÙÌ¥¨šHôNã•[“^ßÙR .zÐÆW@甜nº¬EFÄÓh[ Þv:VØ‹Ágdê ÏÐÑÖâËyÑ|v8ê¤|J݆,¦ÝÀYxC24¿2òuãÂf¬kœÎøè ÁÕÀ]çÀã,àÖmÅ)²osîˆÒ† ° ·!çG5Ôh½muyýÙ+F]FèynB¦n²(̾‹7ò8i}xxîh¹s¡(w‰Ø N:uðaÒÖ¦,°²õ¶vŠ`Z<îÄE¥ú ^£¾ù`6>ÚÙáÆÙûêĹuà £Gj¢÷z†þÈÏD/÷ƒ×!iÍ+ËÍJ,Ïë&³Òby^Ü­µ Î_qtÊ L%=Ÿ}t‚¢ñ1ìTÓxˆAݦ‹)`Ë ç#AÎ ÄšeCÇ㹟}<žsˆ Ta”Rýtïæœ +çMãˆa‘õ€ê¢œ…ûVg\fïšsC;neõìWúš_÷# o_§­Èfo­cu0‹Kš+MØ®{h$tŽ‚f¼x %4!Â>}#c—¶Ÿ ¸t¨—ƒÆP‹CEzÚâ9fšSôí µ~ÿãõÏ—8Üc£¡‰ùziµ~xa…¦+:¤È¥cw6˜3X¨ Tjû5Àb… k7ô|³ã¾ h°úU¨Ú4²€xÌj©–š+"•²ÁÊ­ }•óI½V3¦¨ ¬|hì`‡@j!„o66ƒ’ÉèTQyëì à ^Ë-ö Fñ™ Rº$êïVÚjŽZf +pX&*R¬ùÏÓÏ | áˆF á¨u?’ËìÍÁŒÃ‡ˆ‚@è ,Wóµy-ã# ÜNÒ’óKŒ®Usþ¯GÎØ¡~n1„® u9ÑÍô;ÃÇ,7M„\ÉAp÷¾€™ž\{lmи+ˆ0ñéÀpDT<Õm°JÃF7pú«ö~]ùéòI<ãàYðÄ5„Ú6ÆF”ÝÅêí{4ˆ?†çSA±ÂSl«nö>ó¬Z‚54”ÚAi<ŽeÛ³˜â™(ÖŽìômÝŽ  +8ìòÿ#ñY‡z` 1œ‘òŸ°úÅœ¼ìô²3°sŒ`߂Р¸´°ã¾àtJ¨Î:ìé(ˆ·_}0³„"Rh"9¤ñ?Â&›=ë©_¶RËéL‰µ®Þ”SèÆ{*z¬ -ŠeÚž"H›k&[cVhÓXao_á…Çä!ìžÛöíÁN¦¼ã¬¨•ïºêúSû‘˜|ÜÙ_UŸWHªðÓ§¯$g9aïܳãlsz&Ù…9ò0ú^ù´c…ø†Uz}#ÉãÇý‹W¥ÛxµÊÖåÓV¢aQ+vqÂ;K­Ñ°ð +äf]&儼zò>ä §eð^KZÞ?³|êÛÅ<Ÿw· ÷Oô>q||›N­­'bî€9 &-˜Dá‚Æ%?gÒýÜÞŸãhŽIc‘Ó¢'iK“‘ Y{úèƒ „náo'ám¶1,ÌÕj˨ÃJ²Õ¤äÇ`ƒ [×à—‚b­¸"‡ƒcùf +޵®bò¨ˆ‡m%ësdáI”ï¬;Z?mÅs$YI| ˆtåL"à +5_s™ßAŠZÔÀ†ü­G¼iÊŠ ÍÕ¥¬V,Þà-Nd“qþÍ6™…¦Y—ê ÚÐ¥c•Éb¬ˆä?”ý2Æ)‚|1{!ÎÓ*Z£(RÞÜYß³xFC®fÞ ?KŒ`¦}“=°“¦Ïn6k¶,Ô[[gOã/6Æ«x´Üc®¢:Ö˜eÒ¦² +3Q­Q¦]5™²wÕº®õ!³·îKÙÓ´{°˜Ä¸vÐ’tãÆNQY€óêx+‹Œe<«Æ+aKÄnk0 ôÞ¦= q³k˜ ¡'ë]T\â†X·.Èšgt(£Zª1FŠXêÅœŒÐ5Ì}žŸõ6ôAÐ ã6šµ}¡ç!cÐÓoëž>Só²Q/;€ªê‰6Lù±)cF€läØÁæ~h_Ò_|#¢…'IÀ=öî}P¯'>§‰ã›Õ¬µ¾ãÔ‘Ïh@j?{-ç-J 4°«Ñ-ÝBEô­>ôï6øÅn3~ ËÁÁRv­VCWô1`ߘêÓaÅšÔíÐÃÝ z8<޳ b¤ø|¬ø´q0²±vqv#ªYÊPVÅdìPÞ¾¸ZXûÇ®—ü 9syÅ$l§¦Îô­#YÖ:':GYki˜"Îí‰\O‰ã…Ï +É÷Ú³B®8­œ +ÌèY}XÚTúó„‡Þ¹!Ùtôxƒ3Qtj<¡Ó; ¸aã­ÅcÅÔ$nýXx>:¹•*ÒvJKîeg0}ißÇ[y¸Šóéx¸RV :¾^|±£!pDK`§õEV¶4{„±µð1DÈ-˜B&§<̉¥ìðÞdõžbÎdbõˆ³Öt?eÅ“w XÑe+«Ó¬®ÝŠ[«{2ò5wð/J~—ÿc-m­ò8QÿKv•cK’ã0NQ'è§}9O;cüwnbÔxI¤B E@ÒU‰u•´r5CÔ;”‡( ¡d†›¼Þ߸ð6M¢,RB—¥~|ýðµÂÚfƒ^X©nu8Õü÷l3þ("škM²Æº%ñAÓÃÿó_|Áú+#ÔÏ/!¤wª›ëâ0\ÓÈSt=mÇÞYÓh´–Tqãu'éH }­¡QïwŒ ³3°wó 6+ÒgzœÜÊMoQ¾a;ÍC0wQ~÷ð¯&¦®šÆPaŽžfP˧&*³ØóJ|Iã¼ÝFü” =4EðHY©ö‚Ræ(Œ×ËîB"é_2©Oæóq#—¡®ÙÉìdå8í½+{9î§Î“Í!mææ(3Y3ÔžøªäçÈëY¾…jÍŽ€”‘X:™¬p?–®`;ãcé +àÜæéćØ÷tˆÙ„Sý#»:ÓÜúº¸³ ÈK@+-P Q«òÉT.Ž)8X®ÞÒþ9ƒGdìþí§åøÕT‚l÷xÓŸ§`–׋¥cˆm-R‚FÙþ2|$‚–ß´ÂtËW wÖ×ó1K½%Ó‡e$×Ç?ŠÚ¾¥•Y‹rãG×àίB¬ïdýôyóÿã4w Ï ûG¬t€Á‹¿Š,e:%NÆ+‘ùlÎyoÍtNdOãó©+¯2>±t¾Çè˜nŽú¡tB™Ò=ö±+Ž/§/ê|ÈZ9Ê"µQ¸ÉõD—½Yå+…=íÛ>G=2¢\®¿ºvG&ôOʵä$yô ”f¿šžuŽí›éÁewüÀsØ)ćåÓ"iò–¾â|‚BSqòŒ“k䯊¶C¯øˆ_%H‹hRxª~ßÒ¡±NiõSD€ºiqQÕ³jðH{èv‡?ú­R‘'ÐY†vŽAªe\E=!y&˜)1x`QJÌ¥¨dÿó +m¼ñ±£¨~bu±&âY>µ įLŽ…x›?”ú?Å™Å^€efoèT-cˆ{99ƒ‡*¦}FP3Å-¤Ø.*½JNð.š ®‘«ƒ;*‰Pp„Ç|Ø'žŽßGJ1Øqmý—õ¡¹ÍÆqÒˆ¬§ëM}“ˆ›À0Z®¢ 7ÞÙÖ/wS߈ñ…m{#¯tÚû´ˆÕ¢ÿ‹ ws%r¨F×"| u¹A4ž +aT“ñwfÄCS ºÐG í-š„ +ñ÷Ptd«#Öl(»P*1\S„n—; —,Ùì^6¼Šr†DýÃê¼WD§:B1€r4i2þ½%£k‡L&'ãe±LpFº“!™†AN ë/¤;Pº dØìlÑJ{…,‡éŽÐ,Uá´:\¢îp8¶ —®l2¨"ð”êÚëãÛÖõuÄÔ§ƒ ö®/;FÁ³¹š²âñtkçTo̶ô”-5™ò¤í›®kˆ ŒP]‘ÜøEçÆÆÅÙ]¤ï,7vW©Ö|ÝÁ&¤7»­;ô3lÂBSc®ÎC7u›§»EùÄýW.óO²tØ×–>ã#P+óíñbŸ¡²—û¢)#N»ÏÎ¥ØÜœ#aæ ^Ž3ö÷ºÎÓ““Ðö#w'UÝÇEb9°¨ˆ}.îl­3qÕÔÝÂYÎb³o» ?š{ÃDÂéaÞ8³º9ñn¸·ZÚ!Ïex¤Y7ŒÝg ¹‰/Ct25[¨ð9µs‡1+ØÎ|ÜËx13ºãù¶ݸ Î­PDÊ\É·q©6Þ¿˜µôðm×¼./„ÄØN—ˆFiïFÉ€™0/Ûrð¥EF—…]³ø™5Läxh‡K‹p dÎù4âmE5>ÎÒMö¹4o² +<ýz®L²ÓÆW*ZÂ>cÆ™Ip&à¾+QÈt+byØ!l¹ò]9l%cP1Õ´¯(ÆõÅL²¹’ÊÁ‹*yÔ§6°XHIv}f²zÇI"‡E|ëS‚œ°–žÆEw1MiÎùÌÏçV°ëñ®Íi"®L%½ã]¼3‘—†Ç^9‡+ $LYBÄ“û™% ~ G†ƒ¯ñÜ× cžçÇ.×›Ï1›~ì6töìØeuœçÆÐ3ZiÙŒ®Ì¡^ì\aÀ°bè #û0°—‹f±ag‰Rz2{† u™Í­¼:ü¤´$¼!Äĺn÷ð û‡¨ô‡OZãù¯C1±?晫7ÜסòÜÏ|¡ý¼÷mŽS¼Î5æ|ÞëPšÔl½˜™ýŒ7ïó]µ>¿vч‚¡~b ±ñ›Är9θL¨éÄïF:í…%ܶ‘­±+Ùg°oÓc87#¬=s7€Rw·eò]y?Bï hßà×czSáZ§½–ƒ­öâÒ¼vœ W—ô ©&Cñ˜ý¼ÿQòëÄÇà w2qzü‹+è+v¡ï:=–Ό°ÜšrÂÅê|ÿ«ÅòŒ",3%-ýz?«}¶GC“¸·|£5Yß{ì5áqôµ@ŽŸ²KµUT¯ìnña5kÌ9ư§$È"BþÍÀ‹ uøœ/6Ùˆîì'!¾wýl\c}ê™HY¯ž/‘8ZÏ£ G¿ôkEö¶ó”²r=fÂÅþo&\ôæ#ôÊ@+‡_o7šœ¼×ç4¹ÕÖCB èß°¬v)¯gZÀöÿÏåƒ<\«qð„„•’”59•î*Bßuz*~œÎŒ°„X“`1y<–È –2zþ‘}E©^=#Üm¼zF¼XiéFÙ!Zºs‹£&,~õìÈSj²Žûkɲñѵ ‘7ÖØy–ÒklØÇ²`ãy­Sˆ`c:Îë%ÌõÑžÁϪû'Øà‚- lˆ×I°èõ£¥¼JÒ­¢S^gI²y%¦1Z¨i–&oø³®«Ü…ÛÒ‘dÇnbfRb \Jû&‹ïÏ\û¬é ƒÎ÷ŽÐ®ïÍ÷8Ô½›í¿ªÁ¸çUŒQS„Œ{ÍùP&nëÏ£IÜæµXe«ÄFÏB¶Š= û7NטsfÊ×U3ŧ'o?? æÛLIè4nùI =åp×öI6 {λ488q_VÿÞ©µÈϘ³WªŒxõd±PK”àÿ¸.ìÊnˆn¥W ÃÖã‰îýO]…D<$Ô'ÂW>_75 Hcž›Hä€0ÔxcŒDÞWaüÛ+Ajû~ÇÔ¶òW\xGJ’›Â'›@èûÛþqññ³_[iXµççp€µr' +áÌäÄñõ‡Ëð—Ü£Bð€øÓÐõ^’±:çߤxHÀöXSíݪÛÿèŒ& ŒÀ‰úÇì½ùez4ö+\” ¥¢©;]C¤ +†3\±éy2‡]ÑmŽd +ù½O-# wÒtŽI¸·¡cø_³}»ôJ섈ì‚mnY„ØÔ™¢Ï.ŽFAžÁžÃ®ÀSVçÙC°Òk”†ÆbÄ$½{Ëc“T ðÎ,0öç¯'ÃRëûd¸½ãkUÁÒ¢'¸FE +¦-]A øyA˜ßºXƒ¦ Gš\óýކKBU{$Oaðè + +Zézñý +æN!?~°  ¶Q}‰µ@ïÞö2Êé¨ÞÌ–:óˆ«áÂØ0Ç]W°ùÖå§6,>s¤ëû=™Í&·ÝJÓiQó7KYO°Ø£ è‹OJšW‹;’ó™/Ê[醑 (IGk¹¢t/ãå”*"áPšßsµ—´²`‰íIš«iŒ ²î~Œá[«-AeID»Ýé¶LÁ)fÊÔjÿ%”uszo¥X‹1Åþ±ÂÂì“Ò½yF·½5Í'–‚(l‹ûk›£`ÉbϕƜ+m'_õ|…‰ô¥Y7$ìNâŠJ=' ³äŽÈ(Ld Þfyl1DX[v²y½Ó7& +/ ë»DߢÉ6z ÜF•U< wÕûð¶Ä¯7Ú +­õ÷;(~ö˜ ¯è5>Mû¬÷i’Sõ¶å™Û}Ê…å.uîõ¶„æÞëµ-êµñk×.EzZüh4-9mxÓBs°–g»æ64âÓš–°­i Û›Æ}%ÐßO܇äq‚Ç=ã}ÕOÜ7ºëHqߊ϶¸ç/hø×AC£¡þŒ;RPóŸoÔ3šgÏCè‘#Å}<îC²åؕȉÂLÐf ±¤1¬Cï•ÝÓÉaE*tD0®kJ±ÌB{=Lb úŒ!6¥ôRY¹¿)©ÞÏ ûÆ·›)ìxâÎOØ£-úÙ)êiÏ:¿‚â$a/ŸS3w·‚cý«°\²g±üÿ¤v¿CŠæeÔ±³B°uZ¿ß1²U=Âúµ TVŒ@Mx [ím÷†W6,Šª afM[ A&“F³q)Š@kØ‹µ®Ä3Íá(­%ÄsnËcPÇúÎBtmO‡Ù+eah¯‰¥y¤Êî`©Àäã‚íwæ­†"èð3/ýÄìׯe [W &ÂR EPqZí.áaÒ¥iAÈv—$ «µßs¶¶ð«¥Uå(à­$Ѩ`“†´›iŒ sÕ¯Ðëú=©úöF×cße_Q€Åß9}R;ü]üˆÞ„³Në{ Ÿ`˜väÊFU¾öù Ú¾/–¸4b2ÂsôqÔe•ÓìmJUö»÷Ï{+æÒÇd_ðñ+6†¢üï=Ùp˜YÝv¯+ó3Bœ+ÜšlåÕì§Z·þû(½ìä§8¿fb[UmóÒ]ó0ឯ¶ñsøí&m 98ΕŸÏ´×\,On#7‹2áî(Ѽ(…=fýø üõ®ä2؉¯)ETÌüüi@Yúe(R1h#_q|di)Kû—}-…Ó픞´/ᢋÓÂ\ý|$óNMQ+EsÑlÍ>Ž<©–o‹û϶[Ÿl¾\…‡ýzpôÇï²¶fVEµzÝYš¸ùŽÉd||ƾí$ÿ)LŒÙÁØî›¬{ÆÃ5°ÞjüJHkaî‡*Ô“ˆZ‹a» × 7âw„_oAlä—s±aßUpϼøjw˜ìó6+6·ØÜNÀ ×PyÀö$¶'°Q˜Šál”„o¬¶Ó>E ðZ=Cùò¥u•¾¤@À¯ò›ÀíÞŸ SÐD´ïi%Vx- ÆkO²Ööh'H×½ß^ˆ[ë5\·•>‚;y(S©©ã¢]Çý +åœÌkø´\Fc©È—Ùˆº{?[Û +-¯MÛëç¨{Z ¶‡{T´i»Ú4T§f‰G½Æ’¤ÕxTC_J€-ÛÆQYâÁ²-0FaÍGp6ç”õ#{q`£pÅáÒB]ÁÉ€¶vAV‰q Z>ØêžFÔÆ^¼¸1kPy„ÂØø -1í]®Éƒ9³º¿Åu)®½1†kO\{’áZ×dåDk´çÙ™Ö(I͈18P1P~äVv6^‹$a6ÞÜîë…ÅÂò€Ò`Ȱe[€- lYÚê>Úã3Ú~tf“Šì*qA€- lYª¾½Rê6zË•!€Ò'€öº#€-Ù+<Ð6Ú{ÎÀ±ø`›¬ºÓìŠb¼.À&‘|z[¼•ÍÍ™AláÒÆ_â¾Ì É^ÆxJlâVû;CüΈ-ì ¶P‚Ø’Ò‹ÉñX4€M¶uêmßñJ›£Õlâ”LŠlâ:+ˆMGZ +'¶¸[#¶p #¶d±%Eˆ-|Æ€LžSàÏ‘- XÒØ*²‰-øãÈ&Ij´@6Úƒ¤iÈ&ö¸Ù$oÏíÈF³dÞpaÚF]bbœ1™×€`6_=ýÎí¦Ùtç`6¿c6ge6ñÌݳ‰oî€4Vº#¤d¦ÖÂ`6©§c³±—ê”FëŒ +ú d£yÎŽ2uud{æöììÂr¸õ8’ÑÜw>d3àˆŸÇϽ׉æžãO±Gwb£9îynM»gd ´2d Û-ìŒl—!o˜u…Ùž†Jꃲ%åA9’ê h¢2…ëO8¤ìè*‚´I`½ß·9o«#ØC•Èè ·íªKVH^’BØžÙzýŠ@:J‰ȩ̂üRÃ<bRs®f©Ðº¾¾Î\ÊeúVЬc˵†bûìŸAî+e2ïÕÙ¬ÛëKêÒ?zS5øszRèÛ.Xnº5oÌÓgè ›õ')ÍB==ÕùÐÊoz±\åïWR€°Ônz”¡< ¡âà9k¡4”VyÜCW…p8™B•’¡‚ÜÑT’Š1 M +tAÞÑË›1{œSr,ždKa“^V€g*eV¶tþ$Ë’è§,8Ù-”*N'ÔNÃ9[“1Â4¥åJ—t„Êo5÷Åö[÷çšæïÂ8´7YʶØmà?Üçˆc¸ÒQJ$f(Œ½ƒ» +wMÉÆœL)ítí*€±ª¶gTxC2PcQ"%fá¤r@„0‹ Ud“çøŒ?µÛ¨-î›K¤O"ÙrGrá„M•:÷Sl“­ŸÏ($övò—pM«Œ§ÈÓƒÅNø…'ìñK©Ò.˜"ó@ eFM£•·­Žï>áûË÷9åX‘Ú ¬9T)RþL±ä3åecTgZ>úèç«4¶=zhHvUR"73,¹nÉ‘ÆàÃþè£î‘N—½‘`c­¯ñQà!±Me½k¾6Šzäe«tRn7Á2F#'½1óg1d!tébüLI•ä¤1pÝ.KûWèÜCZi iß䆩Cš$â$XfJÊ‘`Ã7NÕtVŠyñ$k™ÿA.ؚߊ$ã¨@¯±øú™UÍ]¯P1nC3˵î…äXf±ÈÇ}/yÔH×1oVØxÔc‰…‰_ +•©³s]‰ÏCXÌ—i ì:‡nsv›T¦^Ð0GííwΊ½VM÷AޏùÆXú×üÜ*$»<¤ÛsêÓ$Á^/)úÀü†¹–ºQaΗTx«[ŒAò-³'_ûŸë*ɶ+aó¬"¨:n±½žLjìZÍÍèx¾n@Ñ<@ p©â~k¨Ú$ïºûsÔ§¦´†e¾Ó}“ß”<öjn²sèà(ÌD +ΖròŠ3 á¨þQ›ÆU Õr,ISáG];!+Ž‡Æ©¶'È„ã¡êz."“ÏÝï/ÝõÜF‡´ž4‘ß{ì‘]¼ä5:<·„Ò Îƒoj,¢ÓáÜ^zîað8×¾NIL«¶©ÓeϹ¹wWô‹ÈÛëa¼€Ìo \¥U½×‹Ÿ¹cˆßªÀùÛ `·þ=Rg|nE3¾;]Ï}^vY ¨‡DrœjÔJŠf X¿U †ÞRZÀ'k<å´ jç£vàÑKH¹Œwñt=sÏcÈ4þ„,mÚ¾êµu:Ûk¶¥ÊeÌ‚r ÖTì…Y­©ÚD3îKß»–7a€O "èCFg´„ïØæ8K_Ë–4B +h7žŽÍžMÅTösðŸáòš6]­L^ö9€¯Ue+åßɃ»°RÐŶSö,j.§ugz¡ Íñj0ïa© +‚ìd–‡½ª÷_&6ÙÓ‘<3°£NƒÁ©ìš-³.õlO¤ËèIb÷ï#wxVkiž\¯;¬ +¡·ò«]Áb+šÍMvÅgùžCßsî‚»Ù Òbŧ - qÎÇæ‚LËK·º¨Úé35°€ÿùf°>³s©Ê®«i9a•)¬*P«ÙgcWÂ9&¶hÕ hñþ»ÌËKVCûibj«ÓÀÔkM#dTRjÿqya·üô„V‚ŒË •ê&žÕxw¸®ì|às±,ù(¢=u»0ãMÏÖW3õ;·^8Î>ŸàQ—ä#±·uh KJÌ¥ž(\\t®A6×”‡G¦»jMá¾ÝqOEd|‘lˆ56•îŸk*ûò™ë^%™¢BùÙ›‚‚êEGíéKÏ2󉀸gPÓ½š6X˜õT“%Rl²^/KX&Êœ²‡=›<$ ’sgŸçšžGÛÂ?ÐŽŽ +_,¡Vùó e‹¢ u bhqu‰¸'¦ ëèžMÔèÖÝA¨8 ]–kVlÞñDÇY‹Ç®úDCC‰ÁÞÝí 5³š‘±›øÙ•ñY°·«’‰;>µ®¢fõ½"‡ßׯcXm¾.²ÊJ!_(Uì–¡EN«Ù\c§„.a´Ð澊IžíȾ¶Ø5G_Ô¸”¯¸C”E'•óI*¯K¥\@‹¹d9ª”˜8T¬ü‡ÁM Ò¨²ü\p#ãoºÀŽZõ€›o£BUÜòÐmŽÅ,€ýšj.uɶÆpTH™«=•¡Žq\‰(+ÑSw{îÄßk^¥¸›gõ—§žß©:‰,DÇdؽܒ£k>ü£pQ $G3.k:Xëð·ÖzÒšûx“!pTíºmóaî]'ÈöãFR)Ó”ô%ÛÚØW¯ÐÅ ŽcغŸ¡]™oßIžhŸ£ÉLGÒõ&¥s©C#q~$÷MwÍqud¡šË*'…s²QÙtàmlÝçRê_V?rW$S=M‡Uxpp”Ó®ÃÚcå5(☀ažaÂyÉŠšF•Ûý ЪµbôF‚*eGø† +p4ϳ,Ä箫$Á®„]%G0x>O6½¨ÜÛ`›W›ä[åá !Ö¼Å@ñ¶(’Èžy§7Ó~bå¢Èš°ö¼ø ÅMhjzÏ·çÙz¸ ¯ÖDö ùvÚÀ†RãÀæ•Æ»ÂyµýDÕò#à†µò{Vh2äÍ’‘½Î²+ÜÕOCj’n;¿géµuÈ)Ñ< {®^Ÿ`Ò[y®3eüLBá_õ³ÜŒ~OCE«g§˜T¾##÷ròTö<5G H×ý%¿`}&éyÞxõ¥ßwƒj‹Ìüº@Új™@†™êÄ“£öM¹„{ˆ³Òë„ÏîÀ˜ÿ/A¨Ë4¤ A¼ØCL^ œ•ó‰›z€ÙQZn£¢º51C&ŽTåT«]`² ÒìŽæ<;MkPÉõ9ZÝ—v£1Lu#*N^×\­…wµ9Û5üâ@ió\ËºŠ¦9ƒ¥+ºDk¨0ÌÓ~ 5sÇ]Ʊðqt¯óöy0ÑĤrTͪÓ¶‡°E¨1]ó¤˜jÚeÁEE<'²\sð£ïô½ 8wJß»li)2ÆØŸèñp™yró„ÜÞ`!ÑpÜw‚ðŒÓÖY P—f¼¶94_ÛjbbEwfM‰X úåe"8tŠSò` ó2™8_DW_vÜ£®È˾ê‰P_áÕÒx¡ú:|ðæû»<:Âu›â;kzÓA¤5ËúkUmžõxƵ]y„iü´|Ô"Ó¶/»Ð͇`]äÄ“À$Ã^Ì ’²€%Ë?±õO*N˜”Éõ#Sò®n.Óvž9n ‚ÆfÈX­flÛã=n²rnha¿7ò²š2Œ’ܾY¨­#Í\r¦ Si^¨ÓIl`KÏsFIŸûÆçFñKs‹ÑSXúÓ:œÜRV€‘Ô™@Èu}ɨÑ_ +°âvR@-õC‡(^—1§˜]NÝ‚wòï?¯Aj%« ûB ÿ}° MäE-f;ajˤ=b™²÷f!'[ìÔ?cØŒé"u1|ך^* oÏÅoó‹õ!–îì„Vžu?ûlôûnÓÝàs'¤1_Á-ÖËÛò‰øœ÷²仾9q ì"+ß' ï´¼ÿºWeç`Zrn@¾ès¿÷ìòëNX„ò[èæo[P‰»°ëàUð—ʼê`“òŒ[·TÇAa´øVr¯2:øŽ"SƒiØ–:ÜjC5•{€=ô}ÐL#-ê§Ð&ŘŸÉŽg¾pÓ[Œ'¯ºº7.1Æ + «æ Šï`$`@Û¾c¬°þµ§pr5ö<ž»} W<¤Z“‰X#iH‡ŸÁ|Š!ˆ·JwBñ˜bÜŒ >ý«W¼˜å3JU¡” RíÚ-tFAŒi€XK3÷dðÂlž( w¬3Æ{6‘¼ï¤`ÅOB¶¬36Ëç{lr®¦·øL{I¼“ùÓEÆa‰¡¼’™äÆ[ì+79ƒ?DëÀ¼¡–.6ÍÆCö§Ðݬ¥6¬Æù;¤|ûk°‹`F¾†MÃfk¹î˜W‚œ P?pU§Xíoì#Oîl¹äm@{’Ž$‹ççP†oY´b‡4Ž[$Ä®‰ñnýE;Vò'ž:Rœr•ñ"ÍÿiìÞSàk¶ÌôXê¸o ¢ÌüÖ`ùÌdˆñ%Ë;ÒŠ!V×>H£½¦%e5ÇØ Õ¢”Ì;öHT_P€LO¡hŒíKšq9µî™ÜÂ6ì»&= +¾¿’¤P¥d'bÿ–겆Êc„Kd–cÜ™Š4™LÁ…YáÝŽ¬™ðò=ÙÙBEû¼wG„æÌŒèá@Áµz´=kš{¡Cä4Ž$Ä8ÒÙó:x=lh:þ(d— çƒSÌ \Cø­5œì¨ü+Q)àdˆzˆ7 4"±É‹¨xÈ­À¾ÓB7¬à[j9Uš‚¿–€Uÿ4©tD‹n™çà%ÍÇ2'ÞY¢ “çÜàAŠ©³ú,~¢¢{³Mà·ÑÏ–§x7e‡«ÀÞ~N­¦ähøGL ”Ef \?ÂoWlθ“Eî»noË‚ƒPšå-i4>d™¶G+¨ð~(›–öêÇ¡bìmÇÊ-)Ã9FfØ« gPm¢Õå@#]°%$‹¦9rᥭ24(~½‹ äf`±‰jó¢=ã uêúŒƒ ,o¿ÛçLs½ gwlkjâÊSÈÔ™6Aâõ©Ÿƒ¨Fmå9°X½¥Ï½À½QBüÒ*Ÿæ†€yó:ž-y +ôhŒ}P~Ïþ}Ÿeb5¾Û¢èS YäéŽ T33‰ ¨¸’¸ÃÃ$ÕÒ|fÜô^ò ˆæŸ÷HÍÁdàw[kD3ŠÛîåUg» › +Ós«:£O €k€›•üÍ¡—h.›¯‡”ÛuV†Çö®šNT÷¢7Ñ‘ª\ûƈf\ð@)½t¢rÇ4ºFr!…ÕjúH ¶À—áXÃ!áË÷ñËÏC6æÎ,ÎVÐ~ô<…ÈJTK@°ñ"‡°f8F¢4lȇöˆä,9aÝjN/Z¹ã¤#¿è9÷HsॴåMØ•õ9hwÖ<'rÝ¿öŒï}à7Æx¶-ÅÑÖ€Mmä9 dè_÷aù<œ^e¹¿Ùµ©Bš² ÀäÓ&œÒs˜rÇÁ¤3¾ ö%ÙèE©± +Vi†õJÍήlA¹®¢Ã! ì„œÈkz “iqAn- +…¢'•îîЈ§ïiU¯ ®ºKœ¾»†Ñh#-Ì\½€­a‹¹¾sšzí¾öpNñ¦ŠPe¸=.? A4[‰U'ƒ<Þ…Nf}Þ¤ 2ìT^Ðísp¤7ÞžÐ'gmíIåÜ ž¶hݤÍ÷­‰¹ìÄ[û:(x©‰Êgÿ$MÄ;åLéÁÃ;÷¼‰°¥ùÖ$Qwlo{´÷µo|/”!»4ë­nJÜ]_ÚàìÕ?sPòÛ³ Xm^Æf~!¼§fº_ê6€BcЇî4¹ZÀÇîjÚÃIR«ø¦ü@•±Þ†IF:R˜¬bA6s¥Å›I”õÙÝ\U~vÞb>fÒÜT«®:f?(©rcˆ2¼Be90L¥°5Õ›¤7lnþÒÌëàä}֘ĠÖm¿âE¦€e°ÚË-õÜNÜMfØrÎ@²4\º­úúØЖ§ ˆëðNP­$& ë>K´cÓµGôŸS°5à¢Ì<÷ÔÓæêØøëÊ·DÓ_íšvA@WÉg +¢Öc“½¾À¹Q‚üÖv/,ØTÛ'nÌÈÝÓŒáòÍÒ¥§©´ìþZf.ýè{LãXQc3aæò/p +ƒË¢&üKP”7ö²Âqo’+!³PÇ€*øVOUÚ%Ùб³œ +BÈ^0²™CI¦r¯jVBmÍïmòÊq¼`?$J:ÞžŸ·“Õ$új?¿Œ™çàbu>¥8m=«)¡Þ“š +ŠxÓÔ& }û´²[Ô‡;¡¬š¾÷÷J ñ[s“O\h0š|b¨Ë§XAîäšÍXRnÞ'»3š7i×ö  ÈÉÄ}¡#$vîøhÍåÏsvë²ð©Úeê›\þŸëêȲ$¶aû>Å\À~Êá<³í¹ÿÖ“X^u_RI §Ðç|¾¨dZÀì[锸›¤ïpÚ}ŽÁ©õîì:òUòkž9Îp©¨R€pýSÆ‹!¨¦J·ö è” )œ±"Yxé䀦¹pR‡"OIÒ DˆT€@üŽ­Ól™ç™PÜö”ÆÃì¶y« ›&ÝÖßô¸ÛV0ëÑ~MÉ&†Î1u¹G:–ïö›}.þ÷g- Ñ{ɲíÀ MèC_¦½$l} 6—õ®ÊÃMëSÖÐlòß™×ï)aúSЧøn¿Ú÷êp+õç”Icáþî3¦4B˜xÓ¯mÊþ¥ÂâÙóû37ú¨²ÑÆ5`ÊñÌ=cµ\vRPÙq¿ŠŸÓǺÉËÀìï®Ì)T˜éå¿Ø]©KŠ6厵ƒK›'7œtæˆrøûÃ6¿Œ‹þУexñpPÙíÕEð +š"§?Áñ,-Ýg“‹`f‡Õ>þ²ƒèˆ\ugf «ZÖUb’ùþ;èh<öAêŽ,ݘÊû±Þ ¤WK¦Þ<|ØàògíG?Z55˜ü÷º±¬·Û*¡"&h…®{Ëp€g”Ã@ÂY4¹Û¢ú—ÔÑYLªëY´ÏÃ.Gªu\d5yÌËáÂL)¡Êæ`À/AÝiÀ2mÀãšÖ̽1‹üýÁ”2¤­ÉÝiïSCÉÇÏJª0‹õ ͲEi~#HÁÑÃjÉË;Àðâ°vë3QsGüp5¨‰ûÂÏO$é.ü?R:à ýw°héLM‡ð²0%H`žUS÷‰é¯~>žaøBM#èwin Èt–Ê’€¡ÁÙTDe vW÷·¦ñXð¹*¿ë3á°Õ\ #Wœúžò>Ê6ÌMvµšÆ=PÒ•!×~ßêOî&ý-í—ê0IÏ,d3G¥\’)Óº6¯Å»¸¦ä6iäªàÿþ| ÉÙƒÀªòË´MuëÛöÐÖK'’Wñ Þ»Q–PQS¸¦—û¥ Z¿È$m²‰rAuê² =•ÿ°\Z!~†fKŽ5Î™Šµ¥ö*úÜ]-6S5›dޝ‰: @KÎ7‚Ä:Òã ]T¾Ì' †¡]ô»V2š/Às +ù—c¦ðÜÏ€:Lœ‚‚¦³)ôZÓ´ÌB +E©ZLÉÓl3lÒlælHø_›DôÙƒ.Æê%pøÁEE°-bu`›Ê™ß5 +@nõúÚøîAñÈ +ôXoÏê\JÒ‹²Å.Ñ|Og°'uëΘußäÐàøB`h?‰c°M·|ÖÀ$-ê—3RÞÎ]žè‚ìû'El¨ªyAYG™Ôm‹e6 ™P%)#€·ÒƒXNRo^£8L›%€’<§-ÚÔ<÷“¸€DõDâ†Æó'µ_©WZ>©€Ž(¤È'Õ§šcÆÕ9›¥ÇI³Cº3HgDN‰ÇÝ3S + ’ëýÃ\“ Q‘U£©N&0ïr†ä5­é)¢¥ TFÀ4‘Z¨Uþ™zÈl¢'Ð7FUà̯v^·Aèh šÆûÚ2ØGd¾ 0|0<¶Gš…¶éÖרÞ)VwaXwbŸFÈ˵…V“=HÅöt¡ôÈý±µ‹&ÝÈf|¯ŸÊ<„Ü(³f‰ +Š.7ÈôöÕ¬€öÍJ²¡Å”™•¯¡$bq˜YIæœe¸É˜·N5á8õ²êlmÝ–æûÂÚ‰°’‹NЀn3>tåÆô¾IÉ!+…ëÜÆ0¤ƒ$dòµ7MA2Ùʧèzu«"ñ‘ÁStC×6Ð+ƒº9èýù\ÄüØT„-L“—\nŽee`º(Êá>•^¥ãµÄå|°4¥.G´ñœË¶ŒymsXÌ6Öã‚ÏV²±î +I:b‚þ©Wý-ƒ#‰hî°ùQÔso&ž%LÕÀ:‡Ý„æÂùxÆU‰~äMsÔ Úc+=Ô»lù`Y,/Ø^µ;Ó§÷œü†ÆF~?+„EaOÖVØA0ŽÀƒ£è +‰“OAÉÖìÀJöè¯zy§¶³ø#üws•&Ö²W†zuIÐÖ„Jºä!ÿîªÁßL ³8T†œi+ò)åÖ§ÔvÞÚw9: Ö‹æü¦PC¾OI'°JñÛ32ùÕÑIH±ÈÐMÝÛI7TphGB;f#íÂg—>@\`ÚZ7QŸ¡µýa¾×”ƒÔ<ÇJµ ©ÙG·‡í©âz°,ö:KvÑ$¤¨Î€}ÈL°ÅíÉ{jØÜ{ÞωláCÚ[KÛT݇\ª“;­L ÒÀÝÔGéú«~™hÊŒŠc¤£^pNLM‰5-•tXIUæÝm£ÓÿÑvà‘$L㸠º¥ ‘²^„c>i‚$‘„ÿåõÀ/óCÓÈ×zÆûù8:ªå&€Ù#ÿ<Úym䙚“n[#Ÿ¾^eq,i¹•qª©‘ÕèuÖBñÑW×¢ÁpâI+¨ãr»D:Zå{·äP˜;,‰ÞV@Þ]rINˆ÷ö;dÙÖ¶ze感'µHtyÄëì»/úaZ43Úc 6»ý&DÛYبÓ;õ›D…^8û²3„Ÿ÷Ñ_üÖ¬ü-Ï‚JóVUô ³D“"(]cÑI°Ùõ`ÞÑÝL‘ñßAÊ,I˜}|íÙ®mpDüë‘8TÅU¾ µf6wXzÄ +Kž ž¶3[LRÐWX†ú˜­¨ñÞºR«ÿހܴû™ö„È;‚°Â L +øpBc—å¯üöó.Ü?NvÿÖd²ðå5ûúÌÑ5:ñð›éÙᦦõ„êY:Ú4TÇ¿´‘[xþ÷Ì£‚°ÖŸÎh_ixeÇɀ⠴·Aús‚’Q;¿¤lÙj¡…)%f¦ì¿ã,•¾C¨„‰#](LpÌÞ†Ð%y4L¤ø™ºÜÎɤÓa––ÜÅô‚üj/3ù@‡m5ÿGu¹ãX–ã@ÔÏU¤=ÀkèÿYƬ¡€±ªv¨ÝOœ î'‘NRWO¢È`0 ÿ"På|WyùʇòÔÂ÷›ð”ÝÛú-ëšd°Å2÷1"¯¶ß—Dé$!<™„){—XQÈnKݨ?ï¦Z^QQ0Ó¼e˜ lY' ñš' ôØÄ_PIÁ^KÝA?Xã¶Ø»ëóUõ—#sS -[«ûÜ\íBóo#=>ê2j¯÷³÷;BP‚T—HCo@wI¹ÎØ8Hat;ŸA÷ï{á&Ð{!*ä2Oý˜êÆ«¾´@ï8åGC`‰Ú„”r•nf̪wiCÅ¥]uŸ•˜™VÝRy}-+ß„ò2ƒp^ P¦ÌŽJ;tEãíEg&õ‡Q³<œó¦3aeÕ[–à€ë3à{~\¦ñyŸÍl‘ÆóQ—Ÿ?fxþZàe2ÇÚ׳™:Jy‚¢»ŽŸ|=mH3l'¸w´5´ÎR¯dȪýér2­ë®<^´wò|™·ùðäÖ+Ñà7OæD½¿™2gUÜ7UJ©©qŽ›+±W{q% ûP¥WF¿Ù2ÓÎ÷͆˜-]²2úø±Ã<„ùØc>+A™”Bá‡3û¦‡×ŠÙãeCŒœ8ô +â´Ÿc¿vœ‡Þ"R{•¯±’Î!7çÓ…‚sJÊ~ñçzôaPèBÅ<|»4„Ö}'È̾^× #‹ +"ÍÎUÊL½¿x”iÁüx¾ÏÞ‰Æd&ݯpM†ÖqÓ© —<@™Ooë"Ô×ù‘Yr¾ISfÝýÅ©ZíÇ÷UÚͪºú«ÎyšqÐ*žj‡Xï‡^̪¨¤:oj¥dsy¸úzqë®Gõ_Üz-ÜÜz/DU]æ©9™9½µËVÕ½´ÌÞïzÞ9˜á.÷nþ„v +LU,Íë¡™ùQ¤Kc­›^f0ÔknÕË~èoÁoþ“g+?d»{´ÁÃûÌ7·îCg!'|zè3§È}¸;‰ÍsíðÊë€Û<­áYpëY÷ ÌTß}G¶¹Ÿï"޲Ÿ¦•@ê;î +í“•îJD·ß)=¬y¥ü˜ .ó¡YNÊ3ØHü÷÷gÎdÁÂXþåØPHøHó¶'DIàÁ¸êkÀYvAA´Jô¶…û:Ï/¼Ò»Ô$îêí@³ë­v„x9ö/»Iƒ½6(5­Ä†ä…hÁµx>ЂiZ •“ÒmÛvï¼Lõ»^μ¢êÒx¿¬T÷rÕÇm“FÜéABÙ1¿.tTfï!<@"”¨ÈŸ±þõõ¿ÿ|ý÷ëŸïüô—¿{Âûý­Ì'Aø×ß_¬«ó©Ë¡ý +=ÎEr‹¹HpÙ¤A -¬U´y:ª¹”œÎ +aQ©(<Å󣨒îóW-ª¬=s¶b0á|tIC8KØÖ‰ø£w6ôuEC@,t¨y²ìBƒÅ…Ùò<"+˜1Æ„ÂV(§ÏàÚ—Ñ~>9»ÒhЧsÔ4½¬DT³·z#0œ‹+ >fWÈRx®~bl.аF,30#] 9îY…øÑÛw‚‡ó}mÛ%Ìðd©¥ªÛ:ºv§UᎊÏ®"D“'5±cGQ¡q +¡a8ÑÁñ¿ÂÐÜq±4ä¤ÄÖ64D‹>-^ëf~îÕÎ~1ws’â9´©¯i<*ªGÕIWÔÌ|¨q0XÉVôx‘üÓL­çï8FþÊ8§sãÿãZ;å8§/]»F’ŠOšn"Š‘@(÷Ûá%¼Ã1Q §|ˆÅ&ÓF¿ e¸Á!í|§Q’bÔ‰& ¤½F_£»‰nÙ0´O{ѱRúÙl?îÑYa¹2í-R%y0Š­]ó+}¤µó35\†ÞÓÛá†PÌ_¾¶w¹nò á +Bé`€ÿ É\±Z†Ùòžå¥¬$ë +M½Rl}ߪîOç‘÷²øC(Šðw`°BQ•U5ôË?L€‚íqYÅ‚2Û¦çnÇ4Îq­ò »¢[Æt}CÖœ=%DýÑ—¡ZV§‰UQ¨$ψØR=¤êù"û`sŒ4£öÎz1Ïû]]€±“z KeçîÑï鞟n°dF¬÷òaWÆrÄàú ÉLM/v\a$,]ÍA$ +7°Îjp±…Ÿ¨ê«bx휙:DƒÖ´ªiÐg—k(›dÃr²bØe¯x‚\Ð[Ì–[ÔÍSJ¤I'—¼é¯¨Û)™Yæ•êŠ?(É´G=uØP­;»Ê!÷Gg>Ráÿa3\cdåY{a ¾i†¯žT žÍc¡3gµ WiŽa Ù¿]ÉÂÁ®\ʰù¯CVL¥µˆTìad½áî“Í2H9 'cæä¯ô¬ŸnÁëMÜèV ’i×­,.¬}ºS7››fò¬¢Òu*JMñ*ݨº7²“Š+™½¢Š@J ö«Ôw2,¸4•j(qlÞ£³©³ÌmA.OšÝcF¯I1WØaÐCzdX(€m?ûó††ì„Çé%söÄÑRªX5úc%GÈí¸q&@n$ƒ¥‚¡AÊKùÂ$ú¿oˆíR] ÒË6ÅFCxCjv’0èJ™(Ò;ö]˜B+áIÑýé-AÚŒçR»œZÔùVS*¹®æ¦»ß%WÝ@›\Z”ÞÕe(ùṙ­T»²¦‰•,gíe6Ÿ‘އRª!iµúmäîÉ´ßÛö¶§ 4VŒšž'eFÒÖö&B¸ZÛjQ~ZšÛOw‘7Êñ.»Lè<°Y_V×ó0•YÏ·›Ë§¡ÌÝ4¢ß–îÛÞ­™ÃWÙXþ)h.“>ò¬ì›Æ#‡D6´°ñ”Õ“úëëõk=aT]&a®óþ6¨È°àåQö-q鯦ÕéAÂɬp°E¿?Íü|'0¼™<Íæq&N6_¢^Þ¾Zê%?ðÓîÞüçljôR«Ÿ7pó›8\ +à "9“v[Oà©/zÏç&ÄpWb†¿z5ʆJªŸBÈO‡vè™ižú´ós˜Q›¿wR  וûV1¹\ ÆÒ5L¥ð𶙀‹ áŸà25øܨu_þ>0Èï˜^¸7gs“!cy§É&DÈ`6አÔvB8“=iž®¬ÊÖ.!TpµlY„œ|Ye>§+Îõüx¯éëÊoQ?í?P…€Y2 žÙ$3Íù:˜Æ®Œ +¦ÁàëÀðïĤ3ö@„]®Ä<^æEàH+ö⪅õ3~ŸÅYïñÚ¥‹ÐDpƒ‚SF{2UŠj¥lˆs? ù4Rx×IÍn˜ª„Ÿ2^¯4†‘¨×²9îGMÁƒ|\[ÞéᅢÒéåMÇùù…JÕØbw±m2Å„^3RKBUŽYg>P6ÍæÀô·4O=©œ»Ìæ!üĬ»ù‡>^ ßÕ_„ƒG­6o©›Á­–áňiš0DZc§-›çäéõØVé)öf(ªqs¹‡Ý›˜3eIñDðõ#Q÷A.¦]]Pc±þÆlDÿ­¥ºwu8–­-îbúº­aÎ}ÞÕ)d„LJ0Ùÿøn¯îš¥â • +U +¥ÂGº«8’i$d7G{?¡Z+®JÏdÕá\Ž?_ ϯÞ)jÂJ V Ec1¡/0ÙͰϥÍVæà#ë"{2zËáE›…%ÇvÝ}¥"ëÐ&~XaËK¾®É]¹"ÉìAË +Œ’ï”wÓ¼à“ý8ʦ~þ`ô.¤±÷§N>ZÔ{vä ÀéÛ ¦"ônׄ#cE¥„Si|ñuæ‡Ã*;-h‡ª ®¶ÍšÒgå@µ@¡ëÊ9h'¿ÝWŽE¿{ŸµY¹c¶ƒÚ}ºŒì˵â_-§bùxÑpúd¶šCe¥+«æX˜Ø€SŽÏÇó¾Ó'o9‘1Ï]uËðmzÙM³ÑBÏáöÈïálz(à…aYì©€ßçÔ=ÑzŽØ(Ó`+Üè5¹«H´œ«5.‘¬pVyÿטZ&ŠqgF‹ÈÒ'úIsÅóÉÌNwãÕ (¥ÏY‰uŽz›¶eð`ð¹xÒÜœgás"»ûÜûjäa6 %½\€U|Ë“Ç`<Ù¨L`î|2Fá ¹Š‚/¬Ër4ŒËR*PK÷³Â×­ænÛ&BšþBañžO´I¨Í•ºêˆð;åûÐ…¬·ý&š•µå£=–C­·] +öÛZë9ù „þÎzAtó0æEÿþþ+aÞD¦ê[ ¨Ð5/LvRÉ*!^.K'÷«käöà÷0•Á4ŒœŽ…Éšµ¶;ySuB!U’"È>¹ã[Ñ^}c@­,LNúôFxHmã ÿ†ZŽe×KnÒÇr½Ï1!çÈÉߢZªzaexç_y¼„ÉH."ÝÍš…~¬ÇØj6ëëÓÈ 5‘ŒWn…ïõ–w(‘†UýÓŸ€½Îÿs]&WvÞ:Þ+ +%`‚#6^´pö¯¾ïyj¯ºqÿ ÄPÃb±j›ÉG{ª:ö– ºÓ(fÍâÓíJ—ê§ÂM£{Óø6— °Yâ•*Ê€#е·gõN[Rªw{=v©ªàŒ,åË«ûÆQýàW5!5~~;˯âíi9ƒ=Ó€^˹©$[‰¬pE¥súRÎY¿G±UóÕ3LHØE9ë §?1°,ÆP}­*&Œl/²ô:÷Ô­ .Rì˜Ü9¸¢ÙÃù˜®Â^Ž„\›7ë +ˆMGÕ篃y·Ï¸º Á¢L|I×Íù!CV6ŠÈ$õâZƒo•i|”™âÆÞÌéÉ.g3Ùη×èr»^ ¤œ#ý†Ë´V%²Á?k^æçh$áá[vâZákÆÛ´¨Î,ðCJ¡ï3M2û‰ìýPzY!}Ù`\Ãiu›8£¤Þ]2ßþ1$¿ÃðKÜTMSìY{âcÀ¢Y-a—µT· +úv¢ú@vhˆ•¦o¨ ˆvÿ¶cë¶H!뱞&'}ÃîËw8EÁX‡1¦ß·£Êªy1™©`iö½têtJñÁo{ùVž—Ì,U;˜c’ÚU‡Ù÷34õÕ Å1V ž¶‰ù#îŸۢ +– ù鎣L!õ¶k !•X¯]Ò<{–]OÆÇ³¬=`áiŽ0ûuó²q¸¾Æ“9ÞÖˆ¡dT4ª[SÁÒ§“Z½<ÃØni–eÐGÔ–¨uý”LÌ «Þîk޾ū1Þ¬tÚúñw«ažºAÑ1 &úeݽÊ>*)›¨]4«§ò¾§íõªÈØÊ¬ÛoÔ¤§ñ‹«z-pmVæÈ‡È¶'í#W鬷)qW¥ïÙÕ<Ïêü,ìÕÎÆð`ŸÎp’¿ ":Ú¬ ¡Â*çàÀÔç{J"Ñáä9N1â/Qp·!Všöï¤Çİ4HÑñF䉺‚*4=‰SQ–— ËÅkMq­ŠxÓ_|ð^xþ=‰í÷EMh$fã>‡¢\Ïü­íüR_û ¢Ø<Š]éîb`±jT¸¢-¢wjE +c·AÅÆÎ2¬¸:Å+íWÑ&ІSp‡ÚÐk±§u&¯U)mÐNiãá¨jÒîÃÎ>wh/÷öìÆÁ–¾¶Ç‡[«{ÏøY|uI¢îûI…gd×sIÝ?¨z ‹ÈÉÝ +þ–«Ôlht$QÂÃ'àÕ…õÇÔ¸j(¸³¬3ÒÒ4Äò *·TÓ¦ÂõWF7rY>»“1›Ãn4õB}gÌ1jáËñÏëõ•Ðp§Û-)s23ù! š~Òö¨„ɬrö²IAw:1‚bë"ìaàÑWßü Es5ÓhQ%”Ì:pr}:ÝjÛc3ŒÙÎÇüä•Ê_×[fi.MîñÑÜ#¸¿O—t­Z· ÙôµŽÉ}º^³§pkUï6Ãê¹+š±ÝòåA l ÁÖmU2½ù¢ß)‚o^[¿ö°ã!LG#}s–(Ó_„k¬ëT‘¯ÓËš›gé|áþ´¶êÓ„-¼Ì¾…$´€x~Ùt°s^vë„éþ`÷Ø4×o!ñ)hÖ/íÔ }Íyf±r˜x»¥_Â>פB½¤¨fâ†rQf|%™ÏDÜRèH¡¿ºàÁLYŽøn{Šáûÿñ'†Ó<.•Àn•Ü€6έÊXA)‰åŸQ¢\¿ ¨¾Þ³ø·ïº?n ˆ[•Ó/mMÿ²ŒÄBº~ê‹×aQ"þ~ŒFÆ}Šíø•ë‰cà8FUÎÆI?Êå/…y±÷ +o¯V䬿 eŸ^‚)]ª¢®MRÿ©S¹™3²"Û{7Ê“Iì·•FÀ¬ðÌÚCØÂqžgf€b«p»µÑº0\ñ²U§‘ãq²~9L)¾¢„s›åÐX KŸWêi>¦W«|F?•óÇâýqÙÕi©¦å‡‰ÿxFç ÄU P¬  i ú°j/ä8 ñU1¬uÀRÊ8Mb?õ1Ñìc@òÇ@êà?X¼W_´*FÖÝ]&}}EÝÚÉHlíO¢ÁH~;˜˜Í¢)/4—Á{é6¾2M‚, Ù6¹Âgz4J©f­Ÿl˜*Ë *<[Rg  oT!õ¡Ÿ¡çüûƒP©$ðé‹g› ÁÙ^m†;m)š¥ÀÕ`ix÷2gSSvAéè$ÇR™u›æ +;L xwáÑŠ–Fð §oìj~£Ç8uD]u,ÀÄ2sTÅNó³Uܵ}ñJÀ|/æ/Md›ÇŸ‘®[uT­’RìÛ6VôÕKéu×ìªÇ÷jÔ†æöº‚<2´'×Å^d4PjÄ4E j?ˆVEêcØ·6‰…„`úÏ¡?ˆ§&ŒîäUùá;5Üjº®--Ø(Gª—NéEÚ.§:š•Xƒ€{ヨ™h¸ÓV(„ÜH›‹h5¤qúøúMQTé4\"ã„ùò§¾ÐšÓN¾"´=¯õù|§ÐŽð "g5rU…¶à¸>T·Œ“,àÿîáîÂ5EÂj+¼]uê5Z#\Ä;몶vhçºrG‰â­ý€AS¿u·zÙ±êµCÁŒ.óªSŠº~$ŸíÜk½„¡aN$GM¨–™CfÉ5{ZÚ“Ã¥¾( ÖJY0ªåÙNXÅïå½,˜)I߆ô¦ÜKª–HGÝë©´8©â·ä¾w&Þ#~~Ÿt%$vH¯[^Ôñ²TƒÙå%òö6ã=5 +WÝtùXzÐ<ˆƒµ“zÓ‹,×Xy‘oÉðNÛ5ÄÍD–XóÊRh¼‡&œ2åÿ³{®‘÷Án—ù/2`ë|’$vb£¿e¸%¡ž[²4ÿC€žn^Ö6!uÜø&úQt‡¡ +ô½V5{œTš ÍýïáCôkNܨ*oÞñøDg7,ÊQ2{YÑê=ƒèØÃù¬Èöíq:ÇR7´ÁÔàÔ;-(5í4#³"×Yl$bz¤™çІN¦®ìêh³±HåÚÇúÖРïm¥O¤Z(Ë{óG „¹ÍÂJ{‡ý&Žã-» m¢ ±Ã* ÒÐ’æ4Ä2°4åðEܨVœV‡Â|$ºêÏÏüúQ’èYñY;}ô•# Ô&ôä“C·½tΧx^ä›ÊDÝ +CI^|÷>`_æñ0 (@µFBÂØ£n½󑈣zhr4)Áÿ¸.o$;Ž-ˆú\Ål¥ÅzèÐÜÁÝÿ<™õ@ÖÌ}Ý]âŠÔ}å†SÀò.¡Ò©»—¼ªýÅ+Õ¤¶h®.¦ÉÊ.ƒ@)ÔÿÈï1ã+ô!’h ¨WV—nù Ü™‹‘Ðü@¾n‹ÒæÑAµZbây;‘–®£pXý£¾P–Ñ%vN¨¤Vl÷çÛ£ýËÊë;g‰Žâ‡n«À‘1¨„8ô𱈀nËõK3$²âTòŸ¹õN1ñmϸT¥F²Ç@ßB A˜µSP&r–Hb§›×¢ [Aj´"Z];¨•3Æ«jaÿpfl¨Ö>nA”4®z’‰‡üc'ËLËè¶auR\Í„¡Úsž2™$r¡õ0QDj ½¯hª-­"†@SN»­è}Õ`W|¹ tÛÍF¥Dš}Âí6Ó±…lCC*jŽŠ”2ó'±myw ȲzTÔ®ß=ªÆ]ŸqZ^â&yÒ|ƒ±„—e]'˜ç)ú­TÜÓêMòGQ«žR0ãN¯Þmî· ]užÒ6Ñ~ý¥ +®¨~VU¤r7›ˆËÿO¤“{E噄¢ýš­ ‚Ôj|5þxãgý̬Y†gJa÷ApªÁÙ}ñÓžWš‹´¹Ì4â–²o~P‹ˆ>.IV;ßjxkM»ýŸît»o:B,œAÖuµÎw¿Q2]7 Œåh&l¯ÏÝOŬüP·ù*£©þDó`Y®ãø(ä]ê#…}c&Ótœ]6[ÖHúKÈôMëÍ}3»M‹ü‘ +Eý@ëêõ¾FÌX#¸à8Ép!«íkehiwL¿'¦iw=Ù÷æ^‚3žkC½«n£M¯ÒÐÑÏ‹…§]—8@Q(;Z¡9sè~ÝPQíÙ$ï®´'©HZ8c5»¡Cɼï¾ÐºZŸ+œx*ûùú#ÿ¥ûÂEÚzš‡bùÔh Eîlšêí4ÿHo³:S„¦ßÐÖ¬£FUZc±žSzB- 9®w»ØZy¬ÌVÊïœ#´.'Ò€Ütà'çãÉDZwÃÒä÷»9‘F6a‚ç1ÆòÆ~'u.n¬£DaEK·äqá…´½fbŒW;2°ÛÝ‹6º¼×k‘UÐÎ*Ø!"o”/÷^¡ +ÁcH‚IN/‡©üüšÒ=0ªyâá¢ÔkÔ^ê~¸[à«ZG¼n{>PýÛ²/ÊKa+¸¶=/ÆuÈ[jä Ê‚Ãï'Ð!3áS\¯>µ²Rlx¶a êÄýtçô~üΈîœvE'²Ù£‰Y'Œß[DÇÎ¥c˜F±S§loXç}ß— h˱X¶CøÞyÝÅ¥‘Üiï:Ó`Tïwñdô1ÛÎÌˆš‚³ ÃU½£›JÿD‰ÿ·߯¨ó€³ö§ÿ*ˆ è¸gT,Ï·Ò¯W‡¦ÝÆ~ÔR»Ùµø€ë³8ÆÊaÊM¼—õBÁcÉŸ] 3¼Ž±Í12À«Š÷±–ÒáÀÌ:ª÷)°DñôÌÖ•§õoyIuñC€^GŸkÑC}mÙ„[NÔF=£ØÏõÝûÛo +<[³çj:Ê¿(W÷zô `ú.× ßèÑd2…ÍÇÖ«‘Ò˜‚¦@J5®*žÜl uÜ># Ú¯?lÑ"O{b:|‘®¡cUœÙk†ÊeºdØÈm7÷1kJ݇Órãí½Ø{ +O4,¹SæJúcæ‘£{ê4:ª™ÎNßGË“áó Â`¥æòý ™ 2hЉ èöh!©ÔP“éè—jÊÐZù2™‚k'©†­¸¢í¾Q;·ô‰Î}hÙ›~딞«»W!”Æ $ • ²É#W­{߸º¢±ñ°ª_Emh«e1Ò€‡m€‰üÐXéiàZ~´mà\y„´2® vZÖs1m©Ä!Tš‡«™‘ Á7Îæ:Õv(úþ—tYëž4õÉV®Û£] :P­„oÑ p²#ßÂç*Æ,ÉŸFG­DébH^pÑ€ôÏ_ßP9*á^N÷ý .c©ìºÐ70@åÞhŽöõ *Ÿ_[µÑ×ß,ö×Ö(K|SÛUNáоojßÝ]3^—f×-vó-ýµPKá×KÝ™°)l]Ÿc(„ú†CŽ¥f÷ˈµÆÉ¨ä·úß_×Ãx¯áå‡Â5v€r¦GÌSEË®PÿÔ,.9£>;`ò(ñ”X9ÔUynª›€ ͬàÝÊ÷k÷8EÛ +qÌqˆ«åY«e:ûªbp ˜Á +«($ÿ4š˜’ÉóçbšjÅØoÖF£ »*ÂiN©ékΆªÕ ê‹«‡ËÑßÊS˶ŸýÁ=Úa+ÔÈåcÚ¬ÖÌž:¹%Î=èlÅJc]0áUò*”.Œ¬™´ +víõ¤e™~.1Gt¯?ó¬ýSˆN*Pá$¿¾H,Î"Çv¡r½Z#Ü+4®£NݰÆV„Ä5ø^ó§ Î[’Ž®µÐT~†u÷%$𠤕l-ã=ŸÅ895µFZ¸c¾ï‹Õ„CVñë +çêy}YJºÄ4®Z Žáz[·íÿĈS¥4„.âŠXIDYOæýCn­R§ýÒ˜©¸®úÚŸC±Ì¥–ÑÓ5î#Þ÷CeBÑþzZÕ7^k©skÿ‘?u^ðí4h6ÔÈ|…îÏ36Ïue·CÂâŒÔ}8Z5uÞ±š +ÇÛ–yh’ÇzÊ–@cž™¶ÒPµòZVë˜yC/UwQj€>Âá6ù5QÖ‹AÇz5¨Ô?ýCÓéð½¿Tl³HEêCÀ¶“ö¼ù?&FõFmÔ§Í.g½îËÔ}¸ÞÓ/ò4פ+%&[¸fÒ» ‰÷n4¾'‚ƒZ‰ .ÏHDó„séCÄ*,#5 +Bµh\[ãQj³‡]ʯi1G§*ÝNÉdæ¦dBÔCrÓ£j°Îâ1H×Ê®Ÿ¤±pÿ +«ŸL£#`õ•ŽÞõ$M(O„aGœ/Ï GX‚auþšTe`y5XÅ ¦¦ÿãäÎj¦Kø4Rñ›ÙdÔuóÁ¨0ªÛ•"D˜yTŽ·†WxzB&~9˜4ú{yÏûJfé»Û«ïò˜­ˆ{ÌÁ<«v¬¹ΰ…X}+‹u;Ymûc,úa§o[«›žÌ5&išhä\úŽýõ{JbZ~:ÕntÑËJ÷ n—oÌ ÏF}ÖÉ "Møa•÷<¯CNVŸ£Ô¼ž1¡€<6Eq1 øÚný’¦bùcüPçë,ýÃtn³Íãën"OZºcf=}OÉš]Îÿ¹.wÝ8bŠöû[Xdô¢¤6NJ#ð7H·ùþÜs)vª5;Š"ïããI“fNëMC)2~æz i¹ÑèÅæ°›wÆq|е¹w53¨ÕŶªÕ¿ÃÖˆ…V›G=ϹÌù^WºI­^™í ¾*oÏ[¬è‹Ï©[ëc– +ë6(àJ +†š#ù¶hþº; +“hHÑ5âï›:Y)¬Òú…ö­Þ}ïCÿ•ià:ÁDõJå-B B$Äž,ÇBõ‚é>ÌîÚƒzjÍü*‰Ñ}-ú˜Wˆ0l˜¦•|±9ä¾"ÃIµî Wæ6¾©FÛ íTaºÏ…J%ÃEÔDàW‚Ú²ÀguA%£e-b¸óÞƴ½@‹m΢²Å2fTÏí6j™ ÄÛ;«?ÇÊÇ]Åæj ³x‡ÈþLŒBôh7ˆØv±„¯,ØE¾ÝšŒnáþ²ƒ+THÉÆLu2Þ(Ò̪|“*Ð:›¥ƒ²ßÝŠr¶¤_Dû>|—ž´éyKIèèHá± cÀ)3ÙîíUÞwÃöë<§ í`šnƒ2Kðº4Ë$îYg¡W˪ísÒC9šÊ’N'K/zY¶I6;+…O­v;ö }!Ö¼öì£íÞt!ý)CCJWœ”¦bÉÓ¬ +á7ä;s'@8ZŸ¸DÆÝ®•-ËÌ•k°e²rÝ;ÍÖ•ò‚‚óf…Þ]Çù‡-ÃÈÇ£ôŠþÀȹìYI@ʃ­·ö1sí™~•°W×Q3ÈGø;vR·SNCO"C k|a?£XÙ 3ç ++#6Ïúïn§7·&éÈH]º Õ5R¶†ó—we;°Œ°üÈñ¸"îÿVo pznûô¢¶žÇà +<Ô¢dÄ´ +WÔÐ4dEø‰×QÎèÈ¡é{\§¥¦y@aJá°oü«©¡ Ìš×Â[«út*:éž<~;$¯I4*ŒáÒ¸(´äR«O/!4sòÒÑÊ9{Ñ?„h¤0ÍêùډߗH訧ז/CZH}•óÛµq³‰´öUîj©z`¡·t'{WM|;ÒT6³âyÓm§#ë"B…Y*}"%xžMׄX3¶õÄÊ÷) +·ÀÓ»]P9/éR¤¾ôïí;S@,¿"¨C/éóg½ÕRfS÷ ¼ze+0eJ4_jA4™îë-ï2«Ûqõå€×ŠŠÚçÁÀ9Å‘c¬uW1¾²ÔY[­\š”TÛ» ý(‚°Õê¨é†8p9ž¨dŒøÒ‹Ã§_ú©é•v¨gÓ-ÅS‰Ú«s¤ú)†™Ø2ïÒ,ê¿­QHÅô>;Ï ~¶Ö±qy‡±LÀX@ÉÌÀ)ö´„XY}¨¨IUuCày‘.faæÃ€¡ÑüU´7¯T¦£&,Q†Ö;;¤CLëÇJ©)ªæÉåüuûýåörûñüt¿}ýùtÿúüÔîß¾+òÒËíŸÇTAà endstream endobj 44 0 obj <>stream +8;V_Y>EV>s#Xhb<(Q1"0lg9Wte*=mj;oE;_%SZp]+80K)eUqr82V.>W\QesHU!`f+ +GLT29fPkb`F8i\%HOh4Um;Z#fO6K;*^EYtA]Z24j4m.eIK8^L$P/4uT]R)E#1,9\U +]R$4*4iYsW`QaQLm&Pu/4NTOeF(+\jB[dOY\3uo&%>;]f\Y%8YBr!j/eBEc8<5^#K +`7pQ,0e#lUaXbQ[8G270&B"nXM +-mk&o#AUsJZ$dcQQU+WVf34GeWi?c+b(Xj<3u.Xb-V4Z~> endstream endobj 45 0 obj [/Indexed/DeviceRGB 255 46 0 R] endobj 46 0 obj <>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> endstream endobj 35 0 obj <> endobj 36 0 obj <> endobj 37 0 obj <> endobj 38 0 obj <> endobj 53 0 obj [/View/Design] endobj 54 0 obj <>>> endobj 51 0 obj [/View/Design] endobj 52 0 obj <>>> endobj 49 0 obj [/View/Design] endobj 50 0 obj <>>> endobj 47 0 obj [/View/Design] endobj 48 0 obj <>>> endobj 43 0 obj <> endobj 42 0 obj <> endobj 55 0 obj <> endobj 56 0 obj <>stream +%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 14.0 %%AI8_CreatorVersion: 14.0.0 %%For: (Christian Zander) () %%Title: (UT_WBMW_Rot_RGB.pdf) %%CreationDate: 21.09.10 13:10 %%Canvassize: 16383 %%BoundingBox: 0 -142 553 0 %%HiResBoundingBox: 0 -141.7334 552.7559 0 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 10.0 %AI12_BuildNumber: 367 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0.647059 0.117647 0.215686 (R=165 G=30 B=55) %%+ 0 0 0 ([Passermarken]) %AI3_Cropmarks: 0 -141.7324 552.7559 0 %AI3_TemplateBox: 276.5 -71.5 276.5 -71.5 %AI3_TileBox: -126.6221 -350.3662 656.3779 208.6338 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 1 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 300 %AI5_NumLayers: 4 %AI9_OpenToView: 216.9478 83.0522 2.69 1336 999 26 1 0 43 129 0 0 0 1 1 0 1 1 0 %AI5_OpenViewLayers: 7777 %%PageOrigin:128.8359 128.2852 %AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 57 0 obj <>stream +%%BoundingBox: 0 -142 553 0 %%HiResBoundingBox: 0 -141.7334 552.7559 0 %AI7_Thumbnail: 128 36 8 %%BeginData: 7440 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FD11FF9A9A9AFF9A9B9AFFA8709ACAA19A9AA1FF70A8FFA870FFFF %A2A1FFFF76A176CACA70A1A19AFFFFFFA894FFA19BFFA1CAFFFF70A176CA %CB94A8FFA2A1A1FD43FFA2A8FFFFFD04A1FF76FFFFA8A1FF6FFF76CBFFFF %76FFFFA16FFFFFA1A8FF70FF76FFFFA170FFFFFF9BA8A1FFFF9A76FFFF9B %A8CA76FF76FFFFA1A1FD26FFA8A1CAFFFFFFCAA1A8FD15FFA1A1A1FFA19B %76FFFF9AA1FFA1A1CAA1FF9BA1CAA19BFFFFA19BA8FF9BCAA8A2FF9BFFFF %FF9ACAFFFF9A9AFFFFFFA19BA8FF9ACAA1CAFFA1CAFFCA70A1FD23FFA89B %9A9A76CACA766F9B6F9BFD14FFA19BCAFFA177A876FF70CAA8A8709AA8FF %70CAFFCA70FFA1A176A1FFA1769AFFFF70FFFFFF70FFFFFF7076A8FFA1A1 %70A1FF9B709AFFFF76FFFFFFA870A8FD22FF9A6F9A6F9B6F7070706F9B44 %9AA8FD12FFA1CAFFFFA1A2FF9BCA9BFFFFFD04A1FF9ACAFFCA9BFFA1CAFF %70FF9BCA9ACAFF9AFFFFA1A1FFFFCAA1A19ACAA1FFCB70FF9ACA76FFFF9A %CAFFA8FFA1CAFD21FFCA69946FA1706F69FD049B9A7070CAFD11FFA176A1 %A8A176A1A8CA70A1A1A176FF76A876CAFFCA70A876FFFFA1A19BA1CA76CA %70A2A1A1A8FFFFCA70FFA19A76FFFF9BA19BA2A876FF76A19BA1A1A8FD22 %FF6F9A70A19AA1706976A1706F7076A1A1FD33FFCAFD3BFFA19A9AA1769A %70A1709B69706F9A709BA1FD6FFFA176A16F7076A16F9A697676A1769A6F %76CAA2CACAFFFFFFCACAA2CBFFCBFD06FFA8CAA2FFCACAA2CACACAA2CAFD %05FFCAA1CAA8CAA8A2A1CACAFFA2CAA8CAA1FD07FFA1A1A1FFFFCAA2CACA %FFA1A8A2CACACAA2CAA8FD08FFCAA1CAA8CBA8CAA2CACAFD0FFFA1706F70 %76FF9B70699AA1A1769A709A6FA1696FFD05FF6F6FA8FF6FA2FD06FF6F70 %FFFF6F69A2FF9B6876FD05FF706FA8FF6F6F9BA16FA2FFA8449AA1A1699A %FFFFFFCA6FA1A176A1FFA86F6FFFA1709BA1706F9BA1709AFFCA76A176A1 %9BFF709A9BA1699AA1A16FA2FD0FFFA2446F769BA19A7069709A70A29B9B %6FA1FF69A1FD05FFA16FFFFF7044CAFD05FFA176FFFFA169FFFFFF6F9AFD %05FF9AA1FFFFA169FFFFFFA8FFFF6FA1FFFFCA44A1FFFF70A1FFFFA8CAFF %FF6F9BFFCACAFFFFA269FFFFFFA8FFFFFF6F6FCAFFFFCAFFFFFF70A1FFFF %FFA8FD0FFFCA6F6FA19B6F769A70FD049AA176A176FF6F76FD05FFA170FF %FF706F44CBFD04FF9B9BFFFF766FCAFFFFA144CBFFFFFFCA6FFFFFFF766F %A8FD05FF69A1FFFFFF7070FFFF7076FD06FF7076FD05FFA16FA8FFFFFFCB %FFA87044CAFD06FF69A1FD14FF6F6F6F706FA1709A6F9AA1A19B70709AFF %69A1FD05FFA170FFFF9ACA706FFD04FFA19AFFFFA169FFFFFFCA69A1FFFF %FFA1A1FFFFFFA16FFD06FF70A1FFFFFF769BFFFF9A6FA8FD05FF6FA1FD05 %FFA26FFD06FFA1A19B76FD06FF70A1FD14FF6F6F9A70CB9B9A707076CA76 %A16F69A8FF6F76FD05FFA170FFFF6FFFA8696FFFFFFF9B9BFFFF9A6FFD04 %FF6F70FFFFFF76A8FFFFFF9B69A1CAA1FFFFFF6FA1FFFFCA6FA2FFFFFF45 %69A2FD04FF7076FD05FFA16FFD06FF70FFA16FCAFD05FF69A1FD14FF6F6F %76A86F706F6F699B699A709A69CBFF6FA1FD05FFA170FFFF9ACBFFA86970 %FFFFA19BFFFFA16FFD04FFA844CBFFCA70FD04FFA169A17670CAFFFF7076 %CAA29BA1FD05FF6969A2FFFFFF6FA1FD05FFA26FFD05FFA29AFFFF44A2FD %05FF70A1FD14FFCA769A706F686F69FD046F70A1A1A8CA6F76FD05FF9B76 %FFFF6FFFFFFFA16876FF77A1FFFF766FFD04FFCA6976FF76A1FD04FF766F %FFFFA8FFFFFF699A9B6976FD07FF6969A8FFFF7076FD05FFA16FFD05FF9B %6FA1766F6FFD05FF69A1FD16FFA169449A696944766F706F7076FFFF6F9B %FD05FFA176FFFF9ACAFFFFFFA169A1CA9BFFFFA16FFD05FF7670FF9ACAFD %04FFA16FFD06FF70A1FF769AFD08FF69A1FFFF6FA1FD05FFC46FFD05FF6F %CBFFFFA16FCAFD04FF70A1FD17FFA89BFF9A446FA1A2706F70FFFFFF9A6F %FD05FF70A1FFFF6FCAFD04FF766970A1FFFF766FFD05FFCA449A76FD05FF %766FFD06FF69A1FFCA44CAFFFFCAFD04FF9A76FFFF7076FD05FFA16FFD04 %FFA170FD04FF44A1FD04FF6FA1FD1AFF706944A8FF766FFD04FFA869A1FF %FFFFA870A8FFFF70A8FD05FF76689BFFFFA169FD06FF7044FD06FFA169FF %FFFFA1FFFF6F9AFFFF706FFFFFCA9BFFFFFF6FCAFFFF6F9BFD05FFA169FD %04FF9BA1FD04FF9B69FD04FF6F9BFD1AFF9A6869A1FD08FF776F76A27770 %A1FFFFCA45A1A8FD05FF6F9BFFFF6F69A1FD05FF7670FD06FF6F6976A170 %9BFFCA4470A8FFA16976FFA86F76A8769BFFFFA26969CAFD04FF6F68A1FF %FFA244A1FD04FFA16876FFFFA24470A8FD19FF706944A1FD09FFCAA19BA2 %CAFFFFFFA8CAA2FD07FFA8FFCACAA8CAFD06FFA8FD05FFCACAA8CAA1A1CA %FFCACAA2FFFFFFA8CACAFFA8A1A1CAFFFFFFCBA2CACAFFFFFFCBCAA8CAFF %FFA8CAA8FD05FFA8CACAFFA8CAA8FD1AFF9A6969A1FD7CFF706944A1FD0F %FFCAFFCAFFFFFFCAFD11FFCBFD1BFFA8CAA8FFFFFFCBFFFFFFCAFD0BFFCA %FD22FF6F4469A1FD0EFFA870769A7070769A6F9ACA9B69A1FFCA77FFA16F %70FFA8706FA170A1FFFFFF9B69A1FFFFA19BFD06FF7770A1FFFFFF9B9A76 %A1767669A8FFCA6F70769B6FA8FFFF70CAFD05FFCA709AA8FD1CFFCAA170 %4469446FA8FD0DFFCAA1FFFFA168FFCACBA1FFA169A8FFA8A1FFFF6FA1FF %FF7694FFCA44CAFFFFA169A8FFFFCA44CAFD06FF69FFFFFF769ACAFD04FF %9AA1FFFF9B69FFFFC4A8FFFF706FFD06FF9B76FD1BFFCA9B696F696F696F %696F9AFD0CFFCAFFFFFFA16FFD05FFA844FD06FF70A1FFFFA16FFFFF7670 %FFFFA844CBFFFFA16F44A8FD04FFA86FCAFF7770FD06FFA8CAFFFF766FFD %06FF6F696FFD05FF769BFD1AFFA8A16F686F9B4469446F6F9A70CAFD0EFF %A269FD05FFA86FA8FFCAA1FFFF70A1FFFF9B70FFFF76A1FFFFA86FA8FFFF %A1A19A69CBFD04FF6FFFFF6FA1FD0AFFA169FD06FF9AA16976FD04FFA19A %FD1BFF766F696F766F696F6F946F7076FD0EFFA169A8FD04FFCA44CAFFCA %76FFFF70A1FFFFA169FFA19AFFFFFFCA44CAFFFF9BA1FF6F44FFFFFFCA70 %A8CA44CAFD0AFF766FA8FFA8FFFFFF6FFFA16876FFFFFF9B9BFD1AFFA170 %696F6F6F456944706F9B707077FD0DFFA269FD05FFA86FA8FD05FF70A1FF %FF9B6FA19A6FCAFFFFA86FA8FFFFA19AFFCB6F6FFFFFFF70FFA86FCAFD05 %FFA8CAA8FFFFA169A19A70CAFFFF9ACBFFA169A1FFFFA19AFD1AFFCB9A94 %7670696F696F69706F6F9BCAFD0DFFA169A8FD04FFCA69CAFD05FF9AA1FF %FFA16FFFFF9B44CAFFCA69CAFFFF9B9BFFFFA8696FFFFF70CACA44CAFD05 %FFCA4476CAFF9A6FA8FFA1FFFFFF6FFFFFFF7668A1FF9B9BFD1AFFA89B76 %6F6970446F696976706FA1A1FD0DFFA269FD05FFA86FA8FD05FF70CAFFFF %9A9AFFFFFF6F76FFA26FCAFFFFA19BFFFFFFA26976FF70FFCA69A1FD06FF %6FA1FFFFA16FFD06FF9ACAFFFFFF7069CAA29BFD1BFFA1706F9B709A449A %6F6F709B70A1FD0DFFA169CAFD05FF44A2FD05FF6FA8FFFF9B6FFFFFFF70 %70FFA844CAFFFF769BFD04FF9B68769AA8FF6F6FFD06FF69A1FFFF766FFD %06FF6FCAFD04FF696F76A1FD1BFFA16FA170A16F696FA16F696FA1FD0EFF %CA69FD06FF9A70FD04FFCA6FFFFFFF9B9AFFFFFF9A9BFFA86FCAFFFFA276 %FD05FFA1696FFFFFFF689AFD05FF70A1FFFFA16FFFFFFFCAFFFF9ACAFD05 %FF6F69A1FD1BFFCBA2A1CA7070A8A170CAA2CAFD0FFF7668A2FD05FFA86F %76FFA8A86FCAFFFFFF7044CAA8A16FFFFFA144A1FFFF7670FD06FF7669CA %FFFFCA696FA1FFA8A244A2FFFF6F69A1CAA1A1FFCB44A2FD05FFCB44A1FD %1EFFA8FFA8FFFFCAFD12FFA176CAFD06FFA89B769B76CBFD04FFA1A176A1 %A1FFFFFFA1A1A1FFFFA19ACAFD06FFA1FD05FFA19A769B76A1CAFFCAA19A %9B769AA2FFA8A1A1FD06FFCAA1FD42FFCAFD0DFFCAFFFFFFCAFD13FFA8FD %0BFFCAFFFFFFCAFD30FFFF %%EndData endstream endobj 58 0 obj <>stream +H‰ÜërÚ:z_€wÐÎNwÈl1¾`éô¦Í9¹0¶ÙÓÓa„­€!yd™”<ؾÀ¾Ø~’m0Ýž³i&DÖw¿~ñ×þ°Ö‰Ä˜Ô<ËF•/z’`%ä12·èŒ±4QR_UGÈiX6 uÎZ£ñ‘ üØ€ ðTSW{SIE1G¿ay„ªG¼¦Š¿¿}ì^| „ Þv­8º=*¤»¬Ëu,»m96r¼cG³îa>ÇIBè^˃»®HyDù¤+¾#Õœ†‹|ßCÿdÁ±šž×,×jú~Û žˆ0®úR„$Iz‚ ™£Þ,¸À€`ôO˜¸G]†Ã» +8ÁRFÀÞVÈ1ÖwÎwÔM)‹.ÓÙ˜€'¼ ©¯½‘aù>^ÀVŸõust6ƒ›!Q +TZpHY ¸´‚FÓÖšZŽÓ„3\ÇZª^;Þ¾ölÔ}íûÚ‹ÿ3õ·ú©Þ" ž¼#üóQ®‡±¾IJÞp×½¡Ñ®É,fã6·X>ª5ø-sLp‚Áª9n`®ë šçÛ–. +üÀòšÍ6rí–x^+£Y¹›Ì)¹?F—‚“̧©†Y„ ÛÎ~3È eD¾çTꎾjgN½aù•¡?eØøÒ|Õo†på„(È ÁRer×+$@ÐÎñ‚èÈ72W1á×âƒÑÑu«Ýh¶P ŠÅw]äZA’Ó P» FJÃCŽÛ^ +wŠßL‚æ§¹bšðõ! ®$P~ì¸-«åA ôÁmùn–'o%ViÒtQ+û1†Y­Ò_»øË,g(ExîHÏÞE)Ýlëbòßð¨'f:"‰®)Š@ +21É`˳ygæ˜ç¯/)×<+—ÒõY + ·R¤ñ¿•jÖP®% ]¿PAW¸ÄáôÐpÊ ‡Ç>L©"¦ñÑNn`›$(±y,þï§>!·P»+òìöÝï®×dŒðÚoi‚ÕÃLD)è>'LÄA?C±Œ÷ è3̱Dæ¾à_æŠÎ¸"ß):G3ÌŒÎé1xóþXM¡%Kõ;|´;S>Ù2AóÎÐ÷ó†:m$êÊ4™¢k!ØRÄ0&³˜ò„° 9™¡ÒD? ¾!àW* šÊ) °Ÿ–Ò…1ô“ÈèaÆèDâxJÃÇÄüšÃo)yTZFÿ-Y·˜£Él•l¥›>–ІŒ §Ù.nÚ/·To8Èô¬%;­Ÿn¨’õ  WA¯1¬ÕôÔ —|ýôØr­Õv·×o&hg=[Õ‚‘¤Rÿ•‹{nÐq¥úi¨ ­a}>BõK<#èe¥>¤°ÇFWØqàãÁÌyú}o0 € ´›0¨àà{n[`C€eF+ǃ™ ;í´á­OæÆoµ\tÓ©óÛF7 xø_àê5ÐúôÙFÜÞ *FfT©›Î‰^UPº;ü7¶ƒ³V–ïu_:1ÔoE íÁ„V`ÛM£p£´õhm¶Ú~£µTmsÑ2#ÿ桲µ€õC`çú¾m›4Os³[;Æi6a-ý–e/tWÙÞAR¿»´µ0é[räö÷µÄØò¥Áøo²Ñ±3PVršÍ_òk`´qùó\Ùb„\y1ªϯú‰†zÁÃr‘=ß\œ_®ø(ðª~1àtoIÇ©"0U_jÔŽ”øÃâà_ +§Ð¥^+4Ž‹ê°o¬ úG-b’A«çÉhŽeò +:À¸Ã’¶†:Ç,-põ}ò‡î‘¡åš$kO?©w8¼Ÿà&Â;â™óåóÚ5†QŠ:ØÉ›ÿ¥1b¿}eì?(üßé g§'²Ÿâ1#‡$þÞ¨þL…~¯U‡ÆhJèdzH'_b>³]¨Þb‡Ac¡`8'·êJRxg<Ä´mš`ð›Ž7© IW¤™@Z8 Ò'2"Ñv˜PýR¨5°SN.V¥Š(7¥(ªÈ£uò»ë¹E¥”JÄEs;Ê¢\Ê·§«¾—Wý \õeÔ,‹ë2GuËŽZ ö[‰#ªKó(Ÿ({­ÛgD纷udFdúË&ÑanpЛþðP?dÈO;b÷*ïÂÃrË.û+CÛá°uÛ3ôýƯ»9£Úïç=IXTr}µÔÖãXZašÀ¼ÞŽ6q"r‹S–·¿íÚmâ•^Z ÷)¬òEõÝ)º–„Ž!€ ˆrJ¤Ú ›\V»–ý˜ pCŸ§‘Êê<æ$ƒdVŽ\åݺ}ãuݶ2iÍ€z—b2²„œX;•Ïqæyìì'±˜ä?¬WÛVâÊýÿ!¨xC \¼‹ H ¢ÀÆön¦ Iº*i·ý=çöÓyë;«*„„P qóàjfÕ\µ®s9w-Åý +±œ‚ Uú Î#i8Ì¥€1AL8”™›£É8…ÍO5Ä“óÊÑ^ ¦I°ÉCÍL Ô¹01ØWåXL8¥Ê¿d5¤–pJTH†˜‹Sš<Ü)’tÍÔµpŒš!ÃE0z‘‡ß…tZ·2Qd”j2ö·A/êo#57XY> ‘ Á†@7$} ‡<Öׄ§ï‚ðF±4)RK hAÓ]¹õØ5¡ƒÖ[b(AU¦M}n¤-˜ƒMÕéÑTWÈ(’]äØï>7Êc@ŠEÕ"e "_nÏ£Ù‰L)hŒ(X1 â†f4¤é´€½b1‰ÜPâÙå0ʺ9Ÿ!ƒHA™,E>Ø‚OÉpÈXiž%"¤¡uKàð)P*a­v†°¨˜!¤€ ÔÆ ŸD š†ÐÌ@›dó +1• gÒYTiº“e‹A3FGD2 K à:Ò»Ž~O$Euº÷®€¡ 6ª‚±|xOq!—/Y#;Y´ +²§-!7žQÎ@ÐLÅœe@*Ëy +EMdñ¼¸b›n@‰(Ú0¤™SŽAb…Ê~›®êHq®+  ž<"xÖ$"`Ñœn\†ö6ŠB |" 1ž·:xfu¬Çêh¯ÕLE3÷F ËU]:'†Ô±-· 4 £"gBzO 0²9¯N¨ÖaéäoIt×b!GQš3vï2a‘ =ÓGwÉ%Êb®â™È ÓÅã`fi’".”Ñ/Yš|ŽCÚ  ÔÍwGApé@A³lq„ ]I½Õè¶¹Š.˜äU¡’‡˜á™E¬á"ZàÇÆr[åF&ÃÝÁÀ• WU$_LÊ}2ÔšÀXາiœ!hŽdçg(¸Ìk +ÚÈ‚nÆÝè†eøoüÅM—k;ÓÉ È¹®«‘åÊ ®m™¤ur]šnò³Q½YN¥ÉS auà¸ôµnvdIGy%:²ÁdX]G!:ÍìjÈêBPx¬0wµ,"0KÂ21E£èÃ8Ò¼"'ž·™CD4ä+U¾éb¦3Q¦¡ðEÔ«iÌ¿¬­Ç†ªZtÜé(ùÞˆY7ÕÚëÍ´”=T/Ú¨"‚¨¨ð»“Ù,Kð87UÈÀ­ê&†*7ˆê-‹ú¯p#²¶´šF€é7ºªHŸË§”·÷ßZØ~0ë9HíßsF“†Ð’ñ;×0¬AÊoªA¸ŽJ°IyÎiÁˆ#K-G–*ÿÍA£k!mÙ§²„tQ0›Â§Œ"…¥Ž„Ï/GÅk¯>Í[ìmEa¦Æ/…žkéš.½#}"»ö^)Z4=ëDªÌ°Lí€*ðÆ:³2Tf‹îcK1A½"™+[CõÏ?ØÒFKJʱ¯f»¾Ó`˜nàu#¢y“„é +%Ɖ´GI!anñ§]ž)N¼7§@á ö/Ã÷C¦Uîº)+ê6Ýpkðî22?t4î9Ú•º‹]¡6Ý¿«Ñ0{DÄr[ =ëë  AŽ”$Ìh}ÍÓçË6À“%;CàÁæl‹É…:hb@LéTšF#»·4{Ä®ò;Â0ôÀõ_Ø¡Ùä_ž]UÃd¥YuÄÍç“kQ@ ؇èbÕól¨ÁczQ6Ó¢®Â¬ç0p…ˆO[r€€†zJãDY™p]CV$ÿ¡»y•JD” *æ€!YÕÇT§¸¾Œ>d 2×…ËËÜ…÷ê]¾Ï¾rö=Øøó(fNѼ$ôú?B?Ñý c +ö&îNÿNqç)®¡Ï•±Z@`9Ô57ùóôN~¡w°jô翪©€lŸZ áß²4¦ÛKå± /l¦¢5@ —bÌm‡Kç)¢ˆ]¶*óé¶V>EDA0Q)“–€Æw²K–'5è¨w²ØWä`{èõ@scC@²æ$zØ!x1/GÒ*=P¸¡Žq28ôÒ¬íÁ0äÁò‘èS7sxû_X¦‹´"bÔDp›b&T!t-‘tS]3;¤·Dh*D‘@J÷Þ­‰¨ ŠÁëÔ~‘õ> 9J÷%®šo¾,¹iÎÖ¤0«œ<޶ˆÄ¨ñðÎňLžŽmsR æâr°%Š6…æ©!ºDѳíþiËØÊlct¾-l¢‡+qPW¯Ú®¡Ý¢@þ™É¼žCóÑÈRë|[¡öyÿC¶Ûr·Òh”öª2q¹5q²÷VLœöÅ4ŸN´‰Ów3G~Ëænr³·³ßè‡ÃÜiÏ<¯÷ëã˵αPò÷'³¯ÙÄq§ðÛÎ]Ç’éÍÎJ<–8Ŷ¯öc»ï +|z¦b ë Ûm}¯Æ’|+˧ï·(ý^¬²}›ÇYÜãªãüiûí$w^Ê• +…ÉÃQò­¦ïrüÀýÊ_¾Ê••8B'Çby׸þvvµOJ—Gw©šþï_ §¾úP»ïÕŽËÇRf§\Ô¦,¹õÛD%¹Ó¾f!è¹öƒR¹æþ:xlÔÄâì6øt¾k?õ —jf?û¢7øÁF†2·ÝkÑ3àî’•8©Ç6èÃi\ªãT—êùÒÏÃðg]…Ó÷ÕyÒ'ôÜzºe“Ö‹/{—“ôeýº¹÷Ѻ¤åªg“ŶÎÄ›ô&ó”_Í츤+q—oî¶’¤{ï[Âæý›4ÿ¯ñ;-&éjmPX‰¯;Û׬·òµÞ]5€´°¿é–ËA¤o|}íá/—Þâ¡­'Ï6bê;ÓÁO?„”ôfsÓçÞÜ¡©()ä¢x1Ó{Èäçì·kB»½ÕÔcþ¸UIi^_H¥—£Z éžÚ^5]R7“mZ½lÄû¤5© mrLR\~Α^‚ÇôÇ{ýÖ£Õ-¼YÜ@,Rd½eâÛ[§Ï,R¾¶qâ’Ë|T×»}tÈ&Íß?óµçËó¥«5|§û]éJœ¯ïZ×o-¬mÊ£³vÀKci„›uBº³àÞÛÚÎiñ,ÖÒ¢±÷¿µY<¿Ÿ’Þ'·|¤…nsÜ·I/žÆµ¹—>œñÍÇ‹=éJ¯^þÄÅñÚmÒúI[;H $=¿VʤÛ|÷@Æ””ä˜ÏÁWɧ«¼k2I»¯§‡¤×O—ßÎY¤¤óç+|ó{‰éàÕæšÕ‰ƒ“´ßÌè¤ÕÓu•’®Äo½âûFî,€ôt»ÿr÷Vf’ÞŠ;,RèÉ„öõµlÞ8ø)Ï?·{ÛlÒëöèÇ÷êÑ“ôÙLÝRR2_ß:¹Il|"­ñ¯·?ؤí³môXÆ)°PÚ‹ÉB€ƒK—±»k¾i“ +«f}¾hN‘u÷˜'¤‰…¢i¯n¿X“W¨ÊÁÆ1ò¿õí¬WçZêL¾‚\D€„Jˆ”^¥(Gá>¥ßÿ·» IvÙMÿäA'™>ï¼êø4£óë±iÄxãáMøÓ2n4ºÞü­z¡ÑˆaXÑ¢å‡Þ‹"0z·9€ÂáâZ5š $"½ü}±éW¾n“U,½Ánø¦œª+Àlì +»rä².΀ÑâŽ4ºþ— jF“í(i¹›Ä[dTÉtëudZQcõ¾lÎ'/-h4~à‡kÑÓß¶+Àhâ×÷“ŸnXPnéÒìÀäA·>¬Rå»1¯ Ã[†ÔŸ–Ç›–—&(J¼õå¡”†0åÉÏÅeÑ'CùAÛxÊ_Ëý*£IÖ—Í×ò9!Õ«_Þn¯äôŸKúב¿kö +m†t{S«T½º´å„z8|¾cÈ/FwéŸ!­}¶’—Ϫôêá¼ß¤ ‰’±zܧ×2r(½»ã—Bš!½ <çn{w„TÏX=êùÖÿ²Œ¯ËÒ(wñ4¤K÷ÅY*¨éÒ‡ØÈ³Í¨fÈû³oeK0¤ß«Ed>½¢K¯­‹Î8¢~KÉØkèEïîïG«ç=R¤ã~"å‘.‹¬ŒMûÅ­§9¥ýýòÏ*ªTèµ?žüC†&]¯S£6'(wí@Ê£‡òD¶Òlg¿¡ô„Ö÷£ï ÿêÏS¥»÷d $ÜòïHz1 OCw½ÐØø:½ Þ.õ‹o‰@*}]öÍzÅËï­œ~š]ÒN3óeÁ‡j72/å;=^z~wåè㉼wðW ÞŸ9>R.ÔŸ_ªŸ¥S‹9ðæñÙ3,ÇW?~pŽöwèØAWÒç­nÖû—šÃóÀ¹ÃqsíIøS­ˆvìøæœö*þ«ßê±3ñuææ½o6{²zŠo¦Ñx1{Ñd½ð‚+éG¹f1£ƒ7 £%þœm´TZt£ +d&³Weïêb7Ü-ý‡'øÕlôìÑgNoû®c2ú!Š^Ã(°ró_÷Á0K$vÛ’nôl0`õÿƱ©ÄÍ¢Ûa\“àv˜°ŒŽ™F!/Å“ÌX#a…|¤ËJ¯dUÙkE$ª*K€k óè—Vˆ‡Ý‡£÷šÞ)1ûŒ7=Íïà½õn4LhcÖÑò½š!F|-ÂÙÅæAí~ð+ù_%fŸY}âKÍÈqCÒ™x&( cRÞ•gRÇéèÑQã ÝO +Ôø2r­N‹Ì¢Ç¸Ÿ§UШŸ’y~jØÕOjhýï!Øc‡ooBÖÉr^¿ÒãˆÅU²,”=³›´»‘¬ø§ÕwÚYF_é3wÖBûüeW™gå=ftòÉ™Ÿl¬óÎY%‹€žôCBOa˜[š èÑãÐà ¶Õx+È…×MIW¡ÐXª‰)£NeaØÜZúƒ°]‚”;ãAž’;0©BÛì© 2CS|7µº«Ðð-¦¦zèµOµ¨ÎË‘øt<êQ™{ ‹*(¢¨è0:–øš° ˆ0…a>Š!Œ>†XŸÇ§­¨ˆsus™Ò¥á +¥fì„Ä|&X[º­7dêä°…²\ôÅ2º*0uœ`ž»IbAÎÝØS_9˜;ë©C<.ê/1j)$õ¡ÕJþ¡·ÅDñÐÊ ™^PøÐP°å÷S{cìiÈÌÞˆ}-Â)Â/ÔÉÉóÄ*‘ýs]¥)eF–dñ¥çWK¢$àëîÚkBO ò±–¿ÈXLvœëÅŽª¦µÄ .ë;¿Ú¹gOôÙÎOxëdÁøb¶.]{,v¥áJì}yY.Ýi³ï´‚LJ§ìhç·äüXí(óú­õU¥ì;ùeþqÁÚ/NpªÌîî°òKG~]«çÝi°º_ÈŽ´'f G4×S™Æ¾ÑÙþ ‚®e8*÷ìØðL¥êÏ6mƒ&BKDZ¿e&½æ„‚Mç +eˆ•ߙʿåÄë.[³£ûð¡~¶ Wr›ŒÜÀXŽÊŽó³äFã–Ù)µ¾í4•S0bIo P`Í‹ƒ2Yx„#*S¢ºb‡N!¹åQ9±û½#ÜžM” uEeû£3ǃ„.ñg[ÒCSƒuѺ?¹NuLþdù­;¡ûI’» +ìäA¤ä>Î0Ó%NpåÔ‘ ÷˜iäf•_ŸhÁaÜÅ—I¶Ö)ç&=¿5¸‚Ýø2y½Ç`×¾n¾äßi*0ƒ¥ ê~a$t>È€ÌY%þ){ú“³¯`~ëtÄ™gv%ÁdŸ¬¥2ÞS[bÀ!ŽÉÕó²¢( çEJ5ªä€ë£»ROá{PD­DÏ\óY{ÃäïÚ3^W|ɨhÞz5°Þ@Že£U þ¾ïd=87¡$:>mEEˆüô%T=XËô¨D5*z³WãÓͼ‡ØÅAµ\TÝá;U¡õ9´Rª‰Á<ÜbŠïzuæ41Ì´ +£µ}b (³³ó™‹¾Øw² 7“+SŠp*­dž¶qœJ×H*'ξ-™Öjl{ÌÝž©þà‹l+&ŒånYÃ× ‚ßb®a²ý óR#wà}žlóH +÷‹U§Ûôy¦+(â¬;½F,½£`YVˆ}w\bðEG¦…;\u . ³séné\Våcøª ÐKéë²o¶ªÿh=wÖS‡w2aØgÝñéx!b63%ë}GQs2/j1‰‡®,~*&çŽÝíNìUT5‹•Ç .ôà‡¤ oЮ4ôœ©çtD눦ïÊcõàˆn$t-wñé¶CíÃQÙ±„@ÁnðU–Ÿ…}-©=àÐ9ŠÎ-5Würa˜á„>þ—s@7CìýòN"¥“˜,' d!ƒ=f27 ‹fŸ ³ƒ¥â»©ÕO‚™OÿêŒN&( jù°3„±ÕC9WÞ€Xöz¢¿• B>æR{r˜”ÜÄ.e²{e¬](¡y!·aï~5ép…vái¼°l˜ŽcöÛ(sr>2w!vYeg§7ÚØ3õ¾ÅzÖüÞñëÂï1-Ú.*¯3Ôƒ.¿v +ÉÅä­ –L àÈ/9ÔÖgTÄKI ;R<¶¿ÌŒÒ†’$ÌA:=[ç*>+(Uþž:gvß›tóÐÃH.ö\Äø!yä?Oñƒó3,Èð]ý꣪eïü’~û"\t ƒw + #¨ôÞu"°ÆˆÏ@..ÚX ?âÓf!¬1âÈZÃ+ÆÒo¤bAï6YÖxÐj•Mõ ÕÚý£ÏZöiSiÑ™© îcÇŸÓRƒ¹ ™Ð´{¤Æ¥îæVB¾ýU€Ù~Uå…ùW¿¬ô–BcíÎ}цµÄá •tƒ:9¤JR,•Äjó»2d»,8Z‚¸+À—¦¾2šª<ž7MSÖÝßјUy'I Yõ˜I"ÜÚÕAí†ÉÛ“.„Yc¹¿½öV²do=VŽh-ßFÀÇžÀ(“ÇuYJÎŒÌüä²Ö©qAeH$‰ð±ËôÛº—Jý âæcWl’‹z³‡ØnbÌôçÑ<Ò«pq¬d"Ìîtbz¶b"¶¦+ì‹Phý36XóéQEVwuèe’kpo’Êá­ÈÎ¾êø®eq´´ŠÕžÃÃôÀ*VZ—›Œ8TÚå–xPÞctÐmPÿÎCæ'èVnÝ\bÚØý›…ùýúE°ƒÀKçsÏa°*†»›}ÏdS÷sg’¿Á~U¬ØÐGµìT±ÑòÛ*f#Ú¾[ ƒörº„cßE‡x]Z|lOñ§‘ÑžV:OfÙ«sa™‡Ô†€ ¦päß2ñ;c=>Û½.‡DŒ$"ö²•þÚg»]’@R1Ó€ÎV Y9ĈaDU-¨zõ:ͨIiE;;uTìm5}ÒS2“SO­\øÕ&R³g S¼QÅT¼Œ*77æ_ý²Ò[Šw´l¦„õü+û ½Âî'DË­Ù1oŽŸ.³Mé÷ŒlpzŽ•ÅÕbÛ…Á!œQ&¹(má`mN„&™u‘q²|¹!É2˜ƒ¡ø¶ˆ‘åE 'ËÔœ%rȄ˽L˜BxŸ·à­iùö>ö³tÑÊ….Z×DjøEÞžôíÔŠQnjÔù$îË¢E=î„ÒçôÒC"M¹Ù!›Öÿ”ô»yùàïü®4CfAL&×;€á¦L03ù˜ðíb–ò7¿”H_ìió#Ñ#ó“Òy#ôÏõÒƒx 1¦h1#¡oüjêƒDL:è( ¸ñ™£Ÿuþ‰0 ÇÔõF„[¢<ú9ÑÆ:Ãw¿Gcð»ÑBòF' صn÷í¼«_ý=£qù˜igωÆáÎì7ËžJºýåPÜÑz[kkgÝÆ_¦ßÖ½”}b“·wŸ»†1ÊÞó×XBè…µ† ÉCUY5£ o×Òá„Þ1vÏÞŽ1×PòÁlÔûÖÐXKèi±íðÖPL½švXCÔ +XB+æo_CŠIˆÚ[ƪɱӢ*Ábã]o`†±ô«:¨¢›“‘}©tqq!㈀ aúp?õ 8ü¢Ñ\½2ˆÕØ.4Çœd&Ñ~åB­ëC¤ ¬ö±§’öGª±ÜŽó­H¢vÂM‹c‡ª¢vΊ*Ÿ¶µ˜¯ 3šÔÇÎõK¦VÇÓ÷Áûií±~w™ZW®µåsqTü]›f¤pµ’j>Ô‚oÍ»Z9v÷»8‰€ŸôøR­ÖûÃúkV-É5‹6^‚*²óSnoY[Ý”»h £¥,…AJD¬Ø=ùXïRåR0§ÛÍOèY£T¨ o¼Rí³™šNû›å2í's×ï?hN—›—B" æÖsš®§Ú §'ÁÐi7úÄpj §RÉU®/rl§zð±Çtª^M’§ú¨ÓÀ.P·ù»ZàÎqqúª(A¤¼ê©²tæ0§ÇÑHyðŸç䂸‰íT®“L§ézëG‡áôT,œ¿©½ÐsÍ#ŽS=tÂvªÿ +>zN!&c£¾ýÛ³œv9å½iÝ3Ó´^ïjþ=îþd}¹ÜSBßåªiâ;k_È/Ó/G…Ÿc…ùZóN'ÈÙÈ“DÔSI*å Vi¢Ê)GM1%É`AY£Mo\\­y›®TÅî5°\\àì"ÖÎR(ùt-v¡ §u +Ô×H9J I +‹U]¢,l+¤ ÆþOÄ-tÕkGYa§§6࿌®7DHàŠñëtôs¢QëD\{në`ÅØuº“©“[¥¹Æ}vëЃx‚ÉýnÆ aãbó¤ßÏwÏÏÕ/X†íi¥G~$ß¿è8FPC’ÂbAMVß´/óìÓ¦Ò©Âem2å ªŸ¥_ÕA™TmX]Hl™&^6#¾äëFÉ–¡o¤Â"¥ÚÁ:n¥õù³†WŒA‘ácÇŸ3RKÈžle%Z¹ð«Í—P*æ¾³öň/„ˆ¿ÞRìcEA'mXKx ™Ûê–P¯tcÁKPl»­±žµô{F6v* ­,æDÀ}ñ•~J «<ž7™¦LÃ3†Ó„ÌXÖc8I¨“$a{Î/òXîoøÛ›‰÷2qø LÀ•QóÚ‰ÜJa­åÛÅ»Hÿ³^¥[‰3Aô òa'l£¨ƒCØdQ`Àñ;¨#Ž#*ðý¿îNHºCWºüÉñxš[U·¶[1 §÷µÌS1zã@¡¼Ð`W=Û)Ê3˪Î)´ÚÆ¥ƒ<ÏÌVÃ4Q +ŠJ æRµŠØJcbS>ÖÑd¼¯zÍWK:×+# ©çó#XÜ8ºÆ[ܽß/£›¬¼7ˆw~íÇuÌHÃ%nœi)5\²$6¤³Iö!§V¥& ¸®úv›É¸„ºÞbiOçï8æÏÚb²ò9ÿ®úÏ5-²êÝ·}’ƒÊž`rÐÔ–~ÀØ­²#c–*ÜGScŒyCÆ>èB»ûnà²ïÓE¼ú!¸°Lµ;+tÖ߆´Bç ÆÄ}(ÒØ‚x²+Yó#èîU înJúàÕÛÝH„ X5Fuwy´T„-¸R,W‚ëU1šjÞ9yv¡®$³X„ëO”¡Ìl9ÿ-Ø/qKÒðeC¢÷ydÐjÓ‘óO‡‹ ^µÙ·ç*”KÃïXüTTØ©ÀR´baì¿å_Ä`|®$¤\¼o\IìÀÔãË…ô´0ÕE6þó¡Ê¡ÿÂ}MÒê—ày¹ðT~®IÄSX¬.äxÊ—®Yž–Ìcx + ¹¨¬²ñòK¸´žc’Nmº$5 +1ßÈ)?õÄs Y±œšûች0Åƃ§™l÷öé-Æ^DÚæEôÖdWB^@[õv^ãÞ•M|½Ö…we,LîJ>cÙ»´»’.r’<*jaèš$Œ©ö§/˜0MìY{×Т$4r%ÑÁ¹ɬ‹ýæ¯ÎæF ó£ ++V\ü‘‚rîÚâÛÔüBŒ1šq³vÈ§Þ +ƒº&:þ<äåœV°rİ=Ë'&hÛ„‹Gà vžtm"bË{ŸS™‘®ÙΗ« öá’š0-\µUŽ„"%>NE¹Ü•†‰ /fÓ +U^ÅðÑbegT“懕ܨ÷Ý5QìE¼s ŠîÍЊQòÄV°@¥{‡Æ®N¸>Íý¯ÐÒPÍÊDåUŸ8ã× ö®Ü* ÌSäsä]šŠ°u‹½vWnÑ¸ŠŠ‰)H#Э  U2п¬þÅ3?éÓQáÿA‹NQ%Ví­ŽèÕþ3‰û…Êåè—[·nNIÝŠ ÞlY[Ìk¢ã* /½‰Á„ÛNXc˜oÙæó¨±Ìì~³]Þ‡ 8’ʾ$Îv+¹’ήHP\³Ûž–.g—<äc0£V—Ôzޱ`¬ÔŒ ²IFÍgvÎcøÌ{K³Éa6‰?²‘ë¯è7ã +· Ãúʗƒ5?Ëi>wHåË,î¢Ê uHzˆ¬ÖbhzMtÚÊržp9ÌÔØæ…‡:~èKº›w%§ã¯[* ”¢æþû*·DÕHœa,:iµwíýå<¿¥  ®$ÕàI|W9AP’¢ìKâ¤|ycÝ•©öz“v]I•¹ƒ“~^$ÎÖU$žh¨AØ6ÌÑe‘,GQ™ûõ¬“–iC¤½âî6Dÿs'bã~‘lÃk_mè*vĘUîã½µ!‚b›PbŽm8þÛP^c¾÷¢L¡Uo+ EÝ Ž }d®W‚³SûX[ ã¤÷U†A±š«>ŸÒž€ey` ”¢²`t ÜÅ’äÑãFèÅîôÃúAÕSJÇé‘1NEíëÕU^ÙÀ¼Œ¾×+%t¼e›¼eŽ"#tÖ`Á-P¢ÇÖ|£²³å¤ZσÛO,:‡.ÇŠœåü·/oìì³8h¸Œv +ÕÐXâã£7tÞ5Kk”«ž]>I¼Å¬yŸ€V n‡%øD'g'þ<3[ ÓéÁbêèõÞ·Û0ÅiÑÿ6t5áz Ð3`22ÀÙbÌæ¦©œ®[‹ÝbHØ2 )¦9?¾ð 2B ¨¼Da°R´Ú–þ RÁP1¸+X¶ÕáˆË—®}Ü•(“ší¼Ä] ŒTÄè5<˜} CTcØ)WM@!' u-冨Ю v‰¤0ƒÂ1Æg¡€9W=@;€è³Þbp~uMp¹ÀðŒCyѵo2Û,°n$ùUàAm£aråq ,ÞšAgxPWÒf.ëÝ7Y0 ?–då‘Þç5;]â‰6&ë¬Ęx=¿œîͤkÓÏž•¡éL7ŒRV=O¯"zmPú>VÔÊMm<¨ÜTóŸÂ ©—µ?º^N·臿>Ö‹G}eÝ»4ÿúÌGл曖^5‚Ã׉c4Ý9zdÒg£/E5ŒÓƒ‰–o?ÚŒqT1¤™ÕåQ¯Ø¥KijÐè¦gýÂsâäÏU‡ª Úè·ç¸zz° g²cÖ0Ç#Øh ö˜fjƒrgTQ‘ÙBP½ú×¹çÅŠÞy­§Ž)£ápÐ1j,‹‰%1Š4 ,Á‡£çöÉÚhý•6zˆÒF…£Æ×]VãEŒ‚OOÞúv¬¬ÑB0øYøºå=O@£ˆÞ·1êè1:ÖLm1€FÃíÙó#dtÆ3Šî³”.{#àLõrRŒ5Bïù“)d´GŒR9HZÓr€üe&â ¸‘}þ»ð¢Ò/oÛRˆ‡±®ùÎZ“íGt®·ö…t²ky"²Î p ñ¶{>±'câôY Ó /¼¯RÁnþ_€Á›Ø© endstream endobj 59 0 obj <>stream +H‰¬Wù^êL }‚>H)P   üJ‘E6Ap¹,ŠEZxÿo¦-ݧÄæW±Í$'9ÉI!SY²âc…‹•>ª,“î§ÒÿusÜäã7"'¥þÕÀ|±èC%Œ2±z¤· ÝQ”‰;N=ZÀ8¿¦ñ¼‹à2ÞŽ“…•À)êwp²/¦z €X\U!º–¾CÛé’ºW:œz£¶#|¡êáRÊØ,NÄɺ©º¹D˜NeNI¦a4§šé'„Sí{Û¶n¹E®.Û¶ÜT(»Ù$îž‹Þr‹\ÃJfÇ–«õdvÑI†Ý&¼¯nßZtØ+±¯ºµ‘¦MA?<C£l¡™¬©-x‡VÌu[¡MàO£a`tTQ·8\©ï•ÿûE%6ÂÈÑ r¾µëdG¶°re›áŽÊQ6Ö0Àœ§¢(tα*¥ 6f‹Ó«½]°ƒ:x_ 4‚ô•웆U°ÿ 2Up> €‹¸8<oßãŠKE4à¨j¸eRŸ/j.á¡1ª o©Ðe£yThZ™rY䣸ŠtÄ65Íó¿BAιX飊Î}{@dÚ»vü‰ 2$>mXt¥ô3`lcÒuVz«^ˆ_zÈÖÈ^%R“ê£ÀÝg”Uÿ–Áo‘¯“ì–bçëdÞÁ¢J 3©w˜³\\9´¨Å@eŒÁ) ëªë^cÐ{j••Îwrú +Ú&H_;Ãõ‰­`ÔW²?ô¼¼ÑèfEÓÎDò÷æLŸ$´a +fßn̺ÂaÌ.5 bÿ[™{Ö] üjÝÕœÌÁÜÔSº¾±œ¢ðoý›a›]4*/w˜Pj5k•ê–dјòR![ }è· `?<Ųes'"ß- +v!¯Ð½—ñ\ìºjYÍËñJkîqÔ,øf. Œu§rv+ùXï,´áÚ&'lVôð#¯îè Ôɺ7j;:=*oìbÇØ±Òвåvõò1@¹Y(±Ònñzâ¯ØÅnÀh#ÖWÉ+y‰Ò.4žBCÍ@’†Rú9 …§öÎ[æ$6 …§!sÌ}L'¡ÚÇ¬ÆÆÁSi8´‘ðGjÎpoÚ¬¨± ìüœ†&+„Z;ÍŽ“†nSÌßš†fiöF‡ÆÊÉÇŸSô¡`|4ûJ=–uV*Üá‚> R<¢7ª¼î!?Å“ûØÓöx™ƒ¬1`L:'Êœ§-A¦B—æI« @;ã6Õ©fÁVü”~òr°“<½o+®;Ô¡ÆŽ°óƒõÉÙ-Îb§²2ì0Ë5?T‘>Zæ©(*a ¾ô­CVê]×”øx p#ߊÃÁ¢a.7h¨Ý’‹¨i0zòOi8r£¡M8¦˜uv› QýEŠI‹ ‡ JM]XÃäýz͘»ç%Iû!fš±E¡Œá±¥v¬ˆ}“¿´W‚\Š/\cˆÆ5‘lsÖ6÷Ý¥¡GyVˆQ,Û~–t†c\aH~Ò°œä©µ´c xLä¹ÌÍBTÍ}˜[” ÈUöÆSMö”ÕXm¬¾"HÕ0`úBcQc\£ég OÃÌåTqx×ò›š¸œdt×US°Ã !† _MÐCÆm8@ ãåfEø M)±oÍtÒ1ši—Õ¹ ]`’š7T*”]1êÜ¿5à¿nÐ ^5ëÄsc¾<±Lubëcéxëé„-´|™ò¢6æC‚egU=ÓücÂÓº‰‚Xò½óe òÝ ÕJ¦šÙÐᥦ,I¼|ˆý“ºL‚Ì…S÷­Ìu朖—7Ìz?£j‹?ÙXñ1ô Üì¢ëj ŽÿžçBýû³ +¹úî7©År“ Èó~s;¹X½6ÿ]­¦·ËÆ¢ŸÍÞ>Õ¶Ã>·i¼õ—Ý÷ÏÈ´öÉL&e:ú1Î|´¿:ôåÛ†~¸ÚId?BIR*®k†dCËËèCóeHgéV¤° }5!÷ÉïŠ$s@ìYløRû“¾|I_±U¶X`«w÷UV<[ß²bûv)IïÅ„´_(™ŠßÎaà ú²°èüŸÛG˜’€$¥Ç]V^L$ù_ý ²²½pmHZ^&‹²$ä]å¡zݬæ¯ó/ƒ@K4ŸÃLlÌæë)¥!E‘ÞÚÌ«AÙ·¼Tä_ï œõŽ6Ô¡r^áÔÄp!‰ÁGãrbuÑ9€KÄÈ¿8˜œ~ãåøWo'Z`w„w"EŒsWð‰Ê®ÄWÀmœ¶qE„|ràYaðyèˆÆðŸtù‹pû†Š¢ë:DÞ=¿àŸ.2X” eÐúéH”;çÞ0Ùu· èHBÎå1¢…Ôåj¼×ê·ðçXÊ¿3>i‹V§Nà¿¿oqMWV³a3CÀtpAQ¬8>S¼“S¿>N¹dª,ÂH¤wäËÖI`˜‰²ü?Xõ!JT„•7ÎÛÌßb­ò‘Y=â”Z¤Ç2·=‡‹Ú˜áÜ.Ö¹þ4\Ⱥg$œú )ž3n1åƒwÉ‹!º‚Cé·ƒXÑ;8±J¦m»¸ûèââr¡[LâÖżOº–iIÐh98cF‰ '¿óÐ3o½…FczPésH7Zúwè8y3çu8¡fÐ¿Þ +h,ëæBš¿;«‚AäHõ]‰ŠÑ‡ÎÊ”O=SbÑ*2øˆÛö[.iÜẀrYò¦®IøüÝ4A:Ù¡zsaìB‹‰¶Àg$ßF®Sl† ô¨f&”]ò:öfGí 8ã–^îœáÁ¥2õX>jË.tX;8P +g;0ƒ£Ÿg/©>¨Õvi¯y&ޏ¹/âÆ›’BСÛÑÓ»B˜ å/8!ÔÉXˆêÃÁ:“±ÓAz×µ °2Y|t¡ÿ®ªc».cw]>Fñ…‹©þÝ4¬º¼w¡þ2õåóÄP®îqbïÚ°3}ûü;—?Äb•¼:´¿äz¦ãòx ¾ôøßI­$.t¯µÕα•ÒTέԱÕYêØÒ“â:ŒjgçÎ¥Úۻ쫳k¹¥\ =¸>î¨×RÓ]Ëõù].›‹+äéѵÔÞ\˕˙º>¹–W˜êÔ¸ë…îŠ[½xË¡Ïç\jš+må +D[ëîÓ6®P´½+ííb +( $n#a ÷Ýl ¬Îù$†:›÷miü2÷ïÆ†Z½ÊªqS)M±°`‰XŽOhiÊ•õ28|uÚ °V "<‹^ÆPJh \ù\â8C$™ä-•9ŽÞ>‹d(ÌÅBV OÂ2J™†TØ6àAÒ4äl0ôØ“tuÛÈ™&™³ÿ#=]&yÓÐlƒsûj +O“´sçj>bŸbd{ïªÌÚ&8À>ÀUµÁåYm HBF¢þTÀ˾„|‡e~¾!:¥ú„Ÿkf;5sœ˜2½„‰Vè48ül0<ètDQ"ü,Ñr`¸ÞÞ³àúÑ~Ž6²®$ìRÓdSµÍ‘]¢Åd4™^MèçÒ:!·‹Û¤/ù™<3œá¬¬§ÂS»<öø™?¤-ÿÀc_°=&úÙT©Ð¦g¥õuýX¸/ìQ³ßHÅQx‚»¦$z1xµͨÕ^3g}µclJŸÁ£u‘`÷1 JÊ´ñ4÷>°ø ޼6žŠÃ(h~4ý¨ÐJ™~2¦^{‰ãûBæ’MŸUÑšKXð]Os)K¢ÙÌí¹Qƒ ú·Ø€Nló“+R]Ýaœä2|X?|cúÆÕÿÛè'ð×#Ð7 ¨þߎ@߀P.ïF Âÿržë1þ+)JÂ/¾{Ù®ô¶þúòºÿÅxÒ¾PÅþ~yõÕê~õï¹|X\v«ýùWê_è•jµd¼¼Z–+øÔìÚÂï ‹Ü¨e¸sOQi¸øçbùù¦ºQ|Ýì¼ü,¨9Ç•ÃãU²Ë_u=*’Ûd(º5¼¡˜õ+˜fϹ¤zÓ”)VhJ yÕsÈ3¥±ãJ»a†É‡ëǨ°´­Ö –ËjæØú¯ßœrI%óÈɇaì¡¢‡By(«÷r¶]`à#»Dýw‘îâ«ýUº$¡ð“ L ü3 ˜‡I¯Pl’™RáûB‚b$¹D1t¾L1ÓeÝñ[ˆ*H¶¾K”ž€ÑB?K”¤·~˜(#m>ü1¢4˜xò'D‰Ñô{DiM­?J”d—&JOàÏ=~Ÿ(¡“qÿþ,Q#ªüa¢ôLÓDi¢×ßîÜ ;)ð ½dÂLê¿aͧ0su¼?À[G²¢"ÛX!ìÂ×~óéˆz¯I9ÑÝ^ù ¦+ón7÷¸œˆïÛ«°Ñ’Ö9â€Ö]³¨§ì"zûX™ã" +«ù”#¸Ò î®0n\á¥2;Šmg|@R1MDæ%.wSmpUëÀòO§*d ýÄ Ÿù  †š†Áævòƒ €DH5p +¬º á\–#²È4"ˆHë,áñ—,or² U6ÛâÖ»—EÖ_[›Ú¢mN^mx9’!àºMTÐk"Vp0>a]àæ—¾W¶ˆ2ºÄì—"”©—Ç­b! Ò¸w–A&„KËÁDþÊ$:¬{ÖuétÔòœ1[©qBïXx—¼ɺcˆ#=FC'ËE烋X¸ÊÅ”ÂNXöe]Ï ¼³éV×3l÷9ǟ⊺Q£6iû„v ýeÓÅ"øÁE‘w¸åAUŒbL×<H ®å_sý +–˜ü+“B‚©wÄïp=¼™oUmïÖ3™n@˜VÝ%_QÎ1zŒ™ÂÇɤw]—§2 ÁgÒÛ~ ŸÔÅ‘(¡Ë,ÅÜ‚_‡GzTƒ>ˆÈ`9(6СÛÑÖ>,n±oA.&Úßà›ª#\Ïÿy¯Ò®ª’+ú Þ¸ÝÂÄw©y@ieP1FP£ÒiŸø@‚2(>WÇ|ÈoÏ>5ßHOq™åêö­:uê {ŸªÂbŒ¹2gwbã÷w>~÷ˆµQ|Åß— ½l/$Žvšœÿðν¯^‡ˆe¿ço~w^Ý £x2±ùñqv/«ȃqÉZ0ð*8Û«"ä*|Í/¼žÛý;¸VÝ‹1iý^]îw84%âÅe‰ˆºµòh.„©ïK±×bŽÉ +o Ü~vm?Sø£óÑü¥&Þ\ýpíkŠ(s©ú0ÈË%^\nbeáú½FÊË&6úñ×]ãéÊòH#/Þ7ÕÝÏ.ذ é½µt麡=pòõ§<:Þ8XÎ+Ñ4»§âek¯±_³¸ÿÛ— y (OGÝÛZ¯GQœ>4GÝ[ÿ°˜]zËëºyõpóU 8(‡€½à÷Ã×УùÌOøÒ;{•¸ïeV¢gE¬&uz‚ŸôI¹ãcàÅEš-g t—É,»º¿ZtgUIs­¶A5¯¢Sï¿ÚþütD;›¸»œ§ž-Ö¾s¯þc’Ýüqqð~Aº÷˧¥vÏöÒ´|·^ÚÃòa¹ýð~ã¨|àƒSozß<¼Ö,¿÷táuQñëí‡#uP>ôÏùÖÜm&!¾5¾KµñÇqaëÖndËÖöë£%ŠíÎõ¸h:gWÍbÌ ÚŧãUJüÎr˜”øôÖ} +ÛN2;ÝyJ§ìàWn^ OÊþäb>=ÆŠöI±xëö :åž³Ýõ“þèÚÚ£é›íÍï÷ø’qaƒLÍÿ·Kú’g±¸u÷æW[lííl¯{£y²¸®gæïý¼çŽÖš;¾³wðˆÑ­x­ßöÙ÷â¥ÌåõD5ß¼eK©<‹cœØÜÙXyy¶œ ÿl¿þ™Tóϳî3A~ŸÓo²ü¦¢‰;7N ÍïÉâd¿·œ÷î±ð[8e7þ¼/ËKfO¶6ßÍÝ™¾ûàñ@x«ã]â{éîDÿöH>J­o;’£_rÿ~Ñw¡¡üä£ùØh~$?ÿ÷#”èÚ}Î'wΞþs¶y>ýtzx6ÍÏy|8ûôžèÉúáÑñÙöþçËïè ÿè§õ®ZÀÞ~=ZØ:>›^]|:;Xì¶‘ØÉòÚÅlóx:;>?Û¿øÜ­ôüÁöÓû›ÝJ7\£[€[l‚ø¼Ø!c¸:±n ÿ=ÿe´½ƒ›Á­ñøWå¿ïèÉ›'ÇgLJgÝþÙ¿Ïþ Çeã¤nüºþ·ó‹ƒ?ãÁúßwôÚ§‘ÄYkøó¯#ÖãxÆ|Çzo”‘øi™a?¹µRá§Q–iZÀ¹ÅïøEpmœévW¹ÑݽUɺõU­ýž¿±RJÏ?ã¿à—·€~éT÷ ûégÖ ÏwG‚ÛÞqã»±´½G8NùÞr®"¤m'„ìµ0J XÙï™Rª›Ž„d½Ö–S½¢{bñ×c@Ó/†§m 3½V\øî½SpɰÞ9†Iõ@˜uÚ`•è™u±|˜ n6ˆqÒ„ó +–rLˆ`\DH÷IG÷ËHÜg¨&«W±žÐpÁÏx”<¹ÈéÔPÏ^Ä«IC9AYÏ!AX¬Î¡d M-”´!Þš‰Ø;ŒCI’œéÚaØæ@¨°Ú‰Û f(ûà蓳 F„¼k ÿ´#’[T–ÒÁ-‡Ã‹G K^ 0pï1ʈY\K:°'2"…aòcP„)…k;ÊÏxBtd¦‚Pm¢X®Y¥Pù.Z·A ;¾‚!‹ =D–@0< +P@¼¾"´ Ç”mVyÞ›@Y@¸; Þ Uìó™ìê*4N üjɧªç)ÚcºñŠÍ|s^ƒ”û °BŠ&z„0ð÷ ž>éH§F(™ñPlçüyä†{ßd Z +"àB]7åR„¡UErá$—çôAÙ†Ô@šÀÙz 3RŽ+2#%‚iL•)%"ç™Î‚hd«2ÊšT†0‘8€D†þŽ žÔƒCG4C˜—-&#­Ui¤1JC€ Ô’5¦AŠÆ4X&Ê ú!¥nõ…ü³ƒÏùâ…µ/˜È U8ÙÈ‹Äxäl«ªÄ™¨ ƒφêŒÎ(;1,8ÁZua(4”ª¸ P½Ò%± Ž +T/beªp‚ûä…°"Kiú\IW£Fˆl /„iom•®NÜäe€$yi°”^BTÐæ,„D^©òB˜Ç@Ù®²à?«ª¼"òqQbRÖ4Cˆ¡1½HL K•˜NîT#1  ëe#14/þm$†FWŸfŸ,1k$¦`¥Ó+’Ù€¦Rg†Œ+ÖJ qü*äƒ1*ôQKQ4ZB*DFó_h„Bv¤Š eJ&ÃpÕ®–·Ó"Yb*–%ˆSE¡|N(9”\†…¢ª«HˆL+15håPbx&º²J°xÑj‰^C¡šó&0oZ¯€8ÆÚó*Rï×b1 +@ŒõMô)RŸã l–´ +Z(™Ì}VÒ€SV9lCÿ„híL+„ =XÄ*«GCxkȘšz2‹¯®B-çã-’¯×b1d‰'7c €”×N'|ÈÏ´ˆ¦aîš¼PYkbö¼ œŠâã0L`t=´‘.•B=+¯-žÖRQ(E—‘\šÓf[åÝŠåòoÔ"ÿa»Ì­íHr jÁø@ æä¾È‘^Peû¯Î «ÕÝÚÿñP¹ €¡ä‡BÖJåv/󔤮¼—y +WX­sßòVî|¢|$@HjcG¡¸/z£è·}Œ+9äSÀŽðÞ÷{$ÎNPwŽBxyöF=T|tðòõêîeõz˜ÿ.„ýÏù¬ôl6ã `Ó~_è"÷vó°Ðž-fämO6ÁÞöw¢hæ©g/¹Y-œ½4iµö'ð÷Ò*‹#²< +x)õ"/íäªî?õõT·ãˆ]ã³¥¹b±VjÚJ2§7Dë…5[µ‰D†FKt|.oc«bÆ– ’“ ©øŠˆœCê»âͦeL ¬­mD. Þª—Ž?ÅQ)qÓ±Àš+Ë/06šš{‚°¦t’?5w6M*ÿ‹p…TÍù½VŒ}°pZt÷fBÁõT뼈ήñc„ õl­ØB«Ëê‚Ì,/ñ¨>C°–®Œ?,©¡'ÞÞÐ`û4„•;³ü´Ïú,ËNžö(5ª¨ñÜE¯’ä.ܬæü jµ¹AÞÔRD`ûNå|æØcGᅥ<"äGÌ[ ‚f;æóÆïp»ô¤éí9PdçF¥ŸöLgͰjApTÙ¹ãô))ÏÏPÒQ¯½Â R`H[mÛÛL^¤q“åzôbP¬b\ˆ‚ˆ]Ó-œá¾"O'FM FùеÔH ]Gåg•$É݈Щ7õ=%AÈ„mxɼï0—ß¹å㢹)/C¥ôÜÊEâß(Îî|Em˜¶ß¹ˆ@ScªUP©kYÛ0ùA¼²/ÂI¦kéÅÐ×5<Šm«!+IGÈ,M!_Dßqô”ú7ÊßxJéSs$«£°ŸÛÞmu<°êRHÊÉUÌ}\ä\Ø÷s -Ûç2ĸ¸T Å‘o6d`^m¿}ªv©ju*ŒdïW7ÿ&¬¿ÛŒb—²ƒgø+`.ä|æ=a?žAjQn³RÇéýÖPòÔ<—sì:(#ÃLô Y©î'Êú—ÙgÈo—è„P¢Á3|ÓUv<ƒVÏ9z!ÔÅÇ3èœSÏ¢¨±ÒâBä§—|]oàØk˜Õ²zÒš_`å8Îi7‹ƾ¼$#,ž—z §d;,Š÷pyG4;ãPêôÛòÂdIbÒvÛ’«ÝbTg>É9"°ü­`Ù l¤Õ›où_«!:h'üƒ¤nۦkÿø ¹"-Z{Öü¶íZÑCÅ ?”¸¶ò2„„λÝO»x]»z«ÊLQôÂ@*ªU‡]»Ñl?ˆhs¹Ï4²¹E•5G£ÓAøNL¦xc”¦¦£mµ“élTÅ1¥ù)Ûã•å&eÕ”C”Z·\@^'u14^=üO„è£ú†=×bB½ YYdy?ú‚¯1ÊJÜ£vÊÍ’0$‰r! …Q†±œbp×»±¬w]˜~'þeóÀÚŒžSd™õŠÝ¬ñy•°Dd4#Æ‹ [Ã<Ëë¤Å¢òX¬Üý³6õ⟙íúD½HnJøEÎ>ßQ‹Y9Ù˜ž2«Ý×’#„®Ù%¥U¬¢ NÂÔj/÷ÖZû˜"*¬r n¼¯ãLEÌÊ7ê•ýVYÁaõš? Çÿ‰E¾KíÀpºÐ‰{„9ÅYÛˆQ 5Q@¸àò2Ÿmݵ=S¦¨v„:œsæ)‡Y=½½J¡±×£¿÷GÀ^WÕýK¦&Ñ^_Àüvd¦¹ØqòàéSÍ¥ûÿ‘8!dŽîÖÚÚ§UdGkí,Ý\Ì0†–æâèîwKýÐ ×{w×T¬ÇJòð Qúµß8ÆúBÇ3 èà sÛÕÙ[уøWç@oÔs‘»ÐS$ 6MúÕŠ¶¡ö s¸ê夗F˜;›©:Ðe.Ð ””èEzõ'ýý/Žõ|l-g̃émáÉð±U&pxå%zÚ!)ûL… +Œ\ux¡)íñF—îWå +¦ÇäÞý3<ÙL1WU hæÏªq†Ê'ë`ýŒ§oÐTñÞç‹Lïç³s*T%­FºTÉÓjRUôpÖ€å²Pû]±Ëü¯óõòºÐÀúœ1ˆÅm¼¹ ÉžÎþÙ.oM:9De’;Ö_DžëEl ¹ž,;\"‡Y›òËŸl‚µ™"‡‹ZB¯P$ÿÆ}9Îj"ÍmºŒŒ0}«gê[5ôˆ‚ªt«°i§0lÞ9•k)wØœìÙß)„%Ö3wá¥ñ{9ÌaBfí-Fì•ã`ÑP¹¤¶‰’M5¿ªd ‡“Ì ¸L:*=Õ(œ¡ÚÄ„¥äoB›e*TW.ÞŠ1B˜M©V“ÌÒQ3á=fcíGºÂ´;zÕƒg¢®¼|rUnå«Vw-À_t%iȆ—ø&XÙ–Zý"L$_=аôÏw2ï9*[DîDì¨$ JÖ9()æãí ‡«èÉlãÅS •±®þP¡6Ȇ$FáQÊXd™™ûw?Ù´úÑw|ñ +'È£ïÃç ‹ó£ï2|uO>ïÞ(ŠKCT@Èù¬ßÚÛËJýC*âýÐŽ¬wˆHOn¶/ƔЙìl¥2ÜVÐÙš!#o7L«%3ÍœŠ al¤e«€ØÆlÕ;Ñ!Ú3îÚgÿh¿h U›ë@V$“âú ŒÎ½mhETòT%3z:mçòØ6¹Eöbaµ+;²º í¢“Ñº¤oB**$™Áyß|§FÔwŒÒÛWh_d×ÕÏw;2 dM‰Ð#.Õn-e~}g–ªÇ(ô U”BÑÿP^<óÂwy’?õœ”„kÔåèæVýh\Õ7´+YÞi1ÍôpH‘³ºò²T’8ã¾ú§&–Š0öÙÊ7>lYqi¦Æ%»t'´uø¤T•oë§Ïàíš!5¥u}¦)¥ŽUÏ›<3á"2!êî…’ýù/ú*ÕM?þGEÌÃÚhÚ¤ö/ðÒûbBʶkÚ°‘„Þf˜¶kç®Cùe'Æô.²<´Ô¼}‘i!ç3-µåLîê¿ MŽPgÀšýÈsNîº.òû_nh£ˆîà³h“¸QËÜJeh˜Sµ”"gÔ4nŽg•OMLÌðPêï< ÕÒvgˆ0À…ÅûÂÄ ÎJnsEDºZE½˜šÁÿÙ®–,»R¶‚ÚCm }0˜ß8ÓÞÅ›&ûŸ¶d>6I’§â6¶%å3jl'¿÷ŸÑ}È´zteˆÌ­ …ª2þ†|‘²c;d쳘éFƒÓDݳžÒ¿‹NÊoÈŽxÈ»!ŸüÚÆÆˆEd+ÔcOìšXG¶ÏŽÙ™í¼Z–“Ñ:‚ß +‰ÐÚ"¨å¼»‡­ÏÀuÓ `䄟çQM'°šŠ¾«úÎïRÖ8Â3@KXýæî޶´¶×bjäun²Üç ˜…Xm®¦åÑÕ ¦¬õg'T¢Êë9ب‘Î|’[‡„›G䄱•î”JÔÇ8/é,O2Ùa\\%Ë“M@YSÌ&çŘAûIykîózˆE¶¼^OŒq5¤k(¡Êã)–;ùnI9rªî"§4?ÿ3WÉ«Ð::Æ¢ûÓ…a ÷¨U9§Ñy ‚†‚yPÛRó$dº’=B‚Î#QW1Ù[y ¯>+"&ÿ‹À0¾Ü+™Ñ¸?¿&u³½† 5‘8ÙïŒ#õ{¢¬Ò(|¾©f}ÖÔVW)ÔŠ¨/€stŽõMûú—#äEá™ôb{†(Rõ=i»dFB˜hÏ9ÂÄšhê<æhi5N°ÉìÕøjIòš_ òøT:K0B Ãa¡ÄÇ.€¥ }6O4þÏ×à}–¢Ü3~§Ûidµ:„7’bköÞûs΀tÕxReúm#°#ŠE |rçÛÞÜápŒÃ@Ôªaô£Æšö¥º¤Z_Œ%cQ»©L³÷õÔå00LÊlV s&>, .Ì‚Lh½¿ˆ^É}æ'Àìζm©yB¬“ýQ†ƒR#5^Ï„ üH껚V;ÛòzûÌ© +ÝdÊì²%ûRšºYP²<ŽÂ${ëa +Ze=Šuµ8zμ>ª0?à™ +îŽ>ph¬dÈ=»£­ø–&Z.èÇ!ê¦ Áö4ªÏ=êIi#Gˆù)q6=¬©‡ßú{;šaŠ˜ÖǤúÑwèW=Î…ßÔtúÌçøÊò0 žEúèa ЧŒì»À¼,?ä'=µ°†»ùÆhÑS„,nº›ª!3äÚ[̧.¾P¥·Ý"ÀÞ5ØÆ&¨ýL!e{9<¡x)‚T„"fW³¢ÇeÙ±í&Øe \Ü´wÊð‹t^¯ŠduÒ\gÿ“Ãq™0çA:pˆ•~Mž*$ãšÕc?Qjk??_ ÞF9@¡€¯ë}¬ù8zæ:¢C%³X*¬¬pÊ@·ÐLÔÄ{#Âb¹@ÂLc¿^Ä©ðBGð9°¸¿{§ÖrÑÈyÜV–1²kOì•Ô:úr ˆØì£LQ‚5'àØÎ=Œ<‚ý3§®ÙEu¶òŽÉsìÒ[ .@ÂâˆWd]‚XKKÃy¢ÐȦ‡KÕȆÿŽh¢ÚÕÇN”¼…ä]ÃVj~Ùð{Ç ¹ä]ù')…Ò°?‰ãÉ#Z.¢YÕ³ó“˜Eº/Äÿi©®ðo-ÚÝ@aj¬& >Xè»Zü÷.§ ¸¸Ú\‡Pž8Ô± +µu/ƒÑŠFe5œ½.œ·$`‡wtSF=fë:ôFmòvÏ@£QtJ€¥¶½ Í +‹;Y¼ÐžœÀvFÎ+룳¯MÿïŽG[ë¬÷7F†¦²¼ÆB¼ÓâÎjÿ>Î ,“_oF‰ú Jöm‘iäŒÈXÔyÌ">Ù!dƒôÈÊöG²!WŽ-ó€ãpd¥Ë]’†ÚæÑK-Þú*祔õ’uGáÝûéˆÕh(Ç©D[AµÚ‰09•ø¬MÃYÉïšb$ÉãLdÃ;E1A#o¾pGÕ Ó2Ue Y7•Q1M±æÒn/N!Ó§½Pw8hƸ̳‹Äï"º€·×ŸüE»“Ñ ³ Ùs óû+ƒdŠòÁ®=Add +yíæxJEû9¢Ôo™‰ ¢›áðYíâ“/£5«ùÉY»}FêNK—‚aðúµ5]oR  î)Õ6,FÂ,V¡Šªö]”¯™ÍÓg@ø]Á´V%¼r:;‰)°—»; ÁwÀr«-®Â„=5Z°cÌáñ+‡LGÛ6i7pYZS¾?O¦ã lM=ĉB*| •äm•TA†?ñ“)<–ÒÀÈ m/¸j©§nÞž'YüŽ£NÖ°®9×žà\‚â0ý„ïh””cûg‰{aH–žy÷¾&éÔ™÷Ý»rfahC¶ª­‚Bš&åÒ~¦å””ÜÅ>C͵­§-‹Ìêq‹î^R:;õ 1þª°TÒk/‚jÐ]ƒ¶‘TmwíHïÜ Á,Žð»SbwÊ4¶Ô43yX¥:Ëœa gé|¶<þ9 Ð{>&œÙ¶kŸ xh[ ’t{ž•$l ÙYžTò¹Ô¸ªQÎð( …)Úž§Êí<ü}ÁQÈQ %„ÅÊf¡†bräÜENY~Âw­,yù+b™.bÝ ­†´&ͦ|·ƒ¬DœÖ«ªíØ(ýÆ‘•gY{9¢BŸt²ØTÚœ™«pP¡ÇiÈu!‰`Fë¤ÆìxONp~g¦fZnšbS" ¿bÙ›d¡\0èÒÎ9æÂžµ=Éöw´¦Ñ¥×X¾œ9RžŠÂ´&c\+'+gíýN©yZ ­áˆWYÄV•I6ÿÍÔ)¿K´„ã©2`i´]‹c\Pm¬UÐÓP&I`„É›oâµ"+”~Å:ÙÁRDŒ”r"Mu3[ë]øž–M¼gËÝò[,/­!ã¼æ_ÜùŒ*d6¥&û¢PÔÖƳ`@#øN3O"èlÕ¨ñ4<ì‹Xô\ب2CÁ¤gòøÝÅD¡„}¾HbjE&¥ñKLX“KaݽûÝì?OÔ‚™¥Te1ntê;Üþ¨U<ò‹ÄÐò7ƒrÍ:Ù9Ÿè…¢²Ïç0æ +áè ß×y\w·¿Be<©p(@B't>¼chE£®”–£Ðya2NùGTl ë+1>÷¤äÇ_˜-ž)˜»³/Èf#ƒ²ÂtècÇȘqÌÁìœ`„ÐH%æsl*s+p¡oóVûEÉÒ‘«Ií€c–æumŸñf¿–v÷„"7$"l#Ì +»‡Xn¼êÛ¤=‘^ûêÙ„ßa +}.:á+ø†§’ƒ™º.<4Â!‚k2ÕÊv#¼;„Û5®B}–²¾ËcÈ‹ÀzîÏ6‚j±E·P« ;M+³~~.}VAÖ,˜›bÈrÁwä–b·<«ð€v¢¿“÷8@xßáaË^µîíÈ .B+l†nw:Y"Of)O.yƒ^â"ÝœÿÛÕ’žg«ÃV=t}s1ãL³‹LÓýOds1ùÏ Oû©À ¶lÉ')p•_‰©ƒ‹¯…Ž)OôžDf¶dBã;Ȇ¿óCºêq`T€6í.´Ùù·2²šè[ˆ\«’}³Ì ÅÞƒImzíÎiíÉJÉ>ÉVWºUôÄÿ‰X‡›ª –*j{>ëÐO‡ø2TWC,'K8DGL 'Òšì¢"nxnj UD ÓðÚÜw°[¨Û È +ëd;“ƒ|·LèðL«Lýƒ;6I Êùô´Ù@Šè% )YfPÒÈÏL3ãr3Îß‹,Žsií¡4ø÷0Y=µ2ñz¡aÝNUù–wK]b]*xÚjkª{ª{ +íïlñK0C[k !zo»îçÜßö^n/-D|çˆQ£A"-îLu]näõ¼ƒ¶²£”CZí]…|”ÜE ëxÚõ•·Í•€,>]äà¥òÚa𲑈š$4J[¬‰BÖ2úä×Ç¿2¡Ê¦8Œ5Í܈©Ö`¾[_Fam??†i5 éÉNâ±ïZòP­þQ¡ÿD4iD¾?`S›9®¢m É u@ ÜÉlYÀ8ÕÁʈ%“Ã!Œä8AZþ#TQYñ7Ê}@û¾ù29®ÙÏ 3ÉÀß:]pœ…H(«Kè`|SªK›èŠ0_!Éøþ¨ ‡j€~>*¼E“v¡Z9©Ô{põ4|ÞI-÷~¾̻p"„ÂïUÔ øþ´zÃ]³…“B ²jÏbùùÁ®š»;¨.>3ðÝ,‹*˜ fŠ£³\ +  LG†âI@tŽˆ|ókÙ&Ç»JQ‡°9|œy4õKöYרxklw@2¢}£1aI‡¬Jñ²Ð„£+³g3€9Â?•LÎzKéó£!0#…‚ûº½ +ì-GÛ€!¤t)6à|i*UÙ%ípÁ¡®e¸tç¢d‰z‡Ë–?­p(èŽ °²oºr5´33G@ö¦†ú©f¢7òý¬™Š«Ð|( °¿û®Áf*× S)"J;ŽÏWãÑA°Mw«ÆòZÙfW Ž@0†h@°Äiû)†uRªÏpR‡Wàˆ¿×'θˆ^vŽxPDÖëÌBD;J@jOó‰%¯@Ý«„ n!+¹Kú¤ Ü àÉ/×Ìà Rè%SNßßlºÀ&\@-¿ÿ+_ÐSÃÛyQŒG™ì?€8· ››;-a¾»e•.™•V¦½·LC­½ Y “F©£R›Þâí c ’©¤3Ãu +ªôá2é)2 -}ÍuB]‘Ζ``Cø*ÀÑdþZÇqË”0Å\טMmßj@&î?þ{•?þ¦[óx˜LK{Ù {B9ãÒÖó·Ãgñ-¬?€[Ô°=" =.wæYÄšêAèƒWS ˜©F¾öL3ücöúƒØÿŽÙgXE“З£2Á¹¡¿B%}ñ-¬Â zyNBâsšÏ÷”hôp"ÕÌü¹yDöû.¶£¤ººGŸXâµ÷°¦ç;Tl¥±¼›Y}R +7=·%9ðѹÒßzj†àƒÕ Ò\;g +£¼è4æËóa/ x[ùM¶2¯c–ßàÐñÇF¨ã +†áöàæŸ¿8Ÿ¢â0±@rÍ ,‹s+”´ëèØŸVµeLY¶1|»y·ºs´³#×’º”wUj+]»_èÕ¢¼ÛŠ v ïσ±qOž¥Ëñ²¡¡ "è»øçß¾ÂÈyñHÖd3•Ò UCÍÒŸFKPdÌ_ër³P®õ7´zû ZŒ ¹ñ?:ñ^d© _¡3E‘c¼«qñ +“’$Ë#`›î ¯u LÍÏa ]ò~PzÏ:¸Œ ¾²1ü-1jùe ìúFWújƒ7WÎiÊoN!µÌeVroÉ$Hƒÿ3ÈB`õÓ8ÿ|þ?¢0¡!3»„¨`ÿ"¶Èw‘%…erTúe­ú{t•Pq߲ŷ 0·åG¢ +ÅÛÒò2ÑÒ[{"…ÕƒYf¶ÅeyµËc/^h%ð-ÏüÂôMBèaõ! ¯‹ÕgÒ•·[§¤nˆ/E–^úLˆ°åÔçxIމ ½ÅuBUÕÇ) +Ò{KÆî†ìÃ`,QiR‘gIhâî ‡tN7ù† ­™Í[õY×Oä46Ñ‘ÀŠ»ó«yì‚Ø„ 49\ªë‰è÷Ç ¦©ï:ä$±gʈ“A¾uUt\·o‡riÅ/œrë᫟öÖU™Ò¥˜I°ÁÄCx®½¡þ-mªC6Ìñ«ÅF'{jÏôrinÇ|!5×slLpCžU°öMVÏ·2#TÜò¶ªžT€–¡!É—±ÁÒ}FèxÔfÎŒÈîÏ/°é¶Y¦‰ƒ: X¼tÀï?ª¹ò½F}Ôós2Å5§íæ™±éNS7±µòþ ޲ãqˆ‡t»Ú޳­ ªß«pÀÔü'B˜Yþ@ƒÍúûÙŠbïPwæ3!ÔáW3hùß qkµÁ÷]¶ÄEf»Å³5ZÀL":l*Ä;k«Ù %ô #=߉,# þUÒ0:VµªÅ€€ÀmÌaIy@S Bpâ0Añøùm'ôèYW·ã`6r•X¼ìÚJ‹ž/ÎlF!Çx²LBàÔÐéЄS5*ŸZÉ”=<+Ñâû56Â÷°Æ‰,ޱªÍbŸRýÕá<8à¶¢?/¦¡ÐËg…hÞ[ld•0*.®¢rÚ6“ìÙiÙ–}¶ÇKbuNcì´ÊGÿ/ÂŽDTóþh×¹ú¶`³Ñ^†%t÷YÍ$ÏùðØÌ9Gâ Å3¢y9oè¡S\g½ÕN³Ô×ù˯¦õ¸˜¦á‹ §þDÜAµŸ(xÎM}VZ‹INíUƒ¿Èšw\«†`ºTAí|J”Š«gñ÷­KUë-÷ ]>ËÁ{þ÷‡®x°ŽÅÞyðïÁ83âù@Z6ߪUàkžeKw!OʨLos‰  Ö%‡évÉìMéü¿!\¯›ùÉq]ãS¶aª¬‡–¼ý¾yÅF]t{íEJ%L÷кsøiÛ“í:ú— q©ÆDõ0jéÅ>‡?Õ‹ 3n4D'©g ³Îïh©zæg']º•^û†àšÃªÁÖ—š5ˆF’–áï¦ÏloXΠ*,°“I&š>D$Dœi½™Âp+¤ÙÝ;l±M¦!q)Buh зmœvâ:؈2ÔÈÕ€ š’Ï)ijêh¾±Zí‚N–Ç  ¾ïÚÆ(?[d!æ­x¥Q8ˆ²h؇=8Ù†+U‹i‚)_Õ,Î]|tuQÂ@^x³²ú™ Õõ\iå8ðL~¿“é´ô!Ii}­ÉíU`Þí1’–sŠõ<°·™Ñ(o›ÒJ\áÄb¤MÃê"ÿc»ÊÍ,½aXîa*ð'êf¼ÝŤ;ý§HÔ[g3xúu šQ­ÆµƒÁä´ Y`«Û{ä‡n‡¼•:¼€1e8GA:Ö$3F’Ò]Î5ÉŒÂÑuú呦P±¦Ïº1–oç Ôc Èêu®œÁ~…¼lL‚AÓçp!£""䂳ãX¦£Æk~? ú˜iI€Ðš´8µ²du«ZKÞ7qêЇæ©b묦Í\#Ó„Ë™š[S›ùisóᾜ͋P³É Èh˜ ­›»6ÄGà–ÍëšÏ Жb¯H™s¬–¼F!NgöÀƒ×%øÛ…ø%r:Kë  3×½Û̆4NŸa’i±’ÆU XËòl‰Õšß#i—ê³N8ÍÍø€Úï|@Ç%Û‰N•TßÐëm'e-+[­OžØ|æ|Ӊ⇞®´›ŸÝí#@Šog~6F¶K¡Kk®²è¢ŠÈýdÁêp]¬ Ö)Si}mŽ[¿²P¼è l6šîtpSüÀ×fìÑiOð‡‘­wÀèj‚m½×&J´Sàè±A…€ »pa˱š¤x»ÜÎØ¥uPÆ%)QG/„‹h›ëËÙeëñ;€J•€<8õ`h¨KYëc{€ÍÝ Í,áhG{,–h° +C3âGð£¸Øã"5"PÀ9Êúì`f'¹7<~¦ˆŒT눇ô6£udˆóˆ~öä!ØW`«ÑïUH!nw‚~5Øåç<ø²Yf«`[’póˆì÷]lGHõ¬@Ý­O0© yÆ5m¹²ãW¡»PÿÊ/—éݲ÷rÞœaé{êw¼$‚%ŽGĦ•H±ªôô‹z…ÃÕND_Ë¢nÎMŠÉø0† Iâ¨UÌÂ@:;"Ê_ÕMÙ`?¾•JÖu4Ø_V½`¸\«/œ‚àæ¬¡„Sð¼X¾È÷_ÄL“¦=õŒH Û¨Ý¾ÊlÞ꽚¹úý`«ú^­¥âÆYè€P^²½p÷ +f’¤º@íPo¨Ýߪ4-T„o jɺІp€9™ªÄuIº8$µ~BÅmà šÎ‚* š\Ä ¾Š×ŠÆu W™ ê +KDhšCÝÈ·å ±ϲA§8Ãfp5ðIžC3,²äú,ƒ/д6 ÅúBë¥/h!TÒ7BP¥öÄ—7©mºÖaä“ÐΖ²-—cV!N*kô¨LŠ´!Å „5ö ]dþhEÿ²CÁ¬åäž`Í~?Ü#b„–˜²´IÌS¡ì‡8„Н-ó,tJB\ørÈ„\5!b–y Žp±añˆ¡2‚pðfeö¾è‹X ûg ƒNN$Â6J*WKíxöÉ ¸‚aah×° +BYÐG»‰ô’4*<±’WÿX«0zöw‚¹F‹y:Št6ùo^TÃÍ/rß1wJýÆŽ€61˜´÷3iX† “¶ ³-AÜ" O&ªcÍ©("S² |JꀖúAFòðéB‡uÚìüŽŸR÷©´¿â‚ÓTØÏª]d4q“RÉE¿ÿR@̬þuŸÄ"k… ÃËá°»Cè+ö)ÀšÝj±]A–Ä>G¬wBð„ã‘€›Ú°Æ­.MÌ ú [`#fêtSyu“·°R‰úz8w×b^á<ü{hÖíZª-íã=”sT•WüË@Ï^9$` íÓ•hôG~CËk¤ö¤`2V³ÄD ûCß„âQɆ¾“÷A7]ËÃȬx,:òx¸vKÈ -â~ÿŸÛä@ƒë‰Þkpïy¡}0¼²:Ÿïõ€¡3<$/œ=ÆóØÂ‰H>HN[›õ!9=¼>Rêîñ;°1:úÃq:›VZLëíì? ÓœÃIÓ™Ä{”òAsÜw´§¥ó©Ò³<»uŸ.ħ"Ù£–HM„kH››ãX!ˆMšå©n¬sÆS+Úñèñ 8µ¢[^ŸÚ *·ó¢6vlKÄüû…ph£Î·g]ç´f3’™;eõBÙº€ih²%’×P8ðΰhØ­AAŤEê!D£ÓdÈ)Üë/2†¹’„xòBHHÕuß!H³ñ„GÞBÛ“ +Dè C#DܺÆÑʸ²¶·Ô“–Ðxµ"#®‚¼ ‰ç‘¥Rå9X®)ÇU‰-¬‡Æ{‘Ûx#æ;ÉÐÛg  Í—ØxOœ5P:=4^ 0Œ¯e«[ÖiV V·©“˜ÕÚ—sjÍo罊q:o€vç½P輊µ*}ýóˆ¬ùÙ™6þ'b˜ YmD0{ö0wQ/†´™ÌR ÝsŠ¿¬û!L®ŸS¤Ñ Ȭy^„ôBM!\aUã-­‹à©#3’Â¥dÒmÙ¨PNgyc5rM¦@‚%cX…5Ï&-¨:Ì:}¤3¨iÆéâBµ!~ŠMº×ÛY‡`@l×nH†AMÛ*ÁRÕR0O]§æÜû×5!Ô\{ h8 ú™'ë6a)Ç ñç,C<[û`ĸN¿_±Ð-Ä˵6oi{Õ.ê‹l‰Û{óYЇYÖ^ …÷ÅøéÕ¡QÈòÆ9ÎF@A/«Ós¢»ùÈüÙ¤ã‰QD2>µ ]•ZI;W¥ ®&觬ÄÎŬ¦"ú¶ [5Æu°JÝxñÑ™¼ABïõ4TqpxMEh5n ·ß¬ñ ðfí¯ÎVc¢3ÊbÎñ@˜,ûÔ'÷'Ë–|–¯°¸ßÂ;›M3ω—›¦Nåâ£ÃÞì‚Ô‹B]Ê©F‰4…€RßXQ£  "‰½‡_á©:ªcª\E1M¾Jzr½¢\oVGïªje +¥¬/R0eíï6Ö2ä›HëìÃD¦:b†ç ßvÏ‚¿ã*¥×¸¢4z¹ŸGXPIû +n­¦Ð$zž…ŠïR´í#ž…rR —æY°sß3$U„“\ò½;«¤ö9/‚ãžÞY¶wU^ŠwD™j)ÑÕŽc˜‡`çÛng—÷ÚŒn¢hxv\Àºâ”1!RÊЋøw¨"yWÙ¥˜½"à>~öˇæ¨ÖKˆÔiÿIk€?úd…ãDÌq«ÍJ€fY%"Ó½ÅA˜9øí¢Ïwp3yäR£ßb.ËnY½¸‰5¶0`%¥WaËJ»È*U?oa™¿ °&«ûòþÿЪö?Dp^ÄwÒ\f\k}íÓº…`Ë4.>³…ÅjyÂùƒ÷F4s³i žWÙ>©ö4ÎqÐE~ªM ¸ ªdd<. b!&ÙóiHóQqþÙšxâŸÁåwÕBP}]Nj؞ïŠ~†L-ö:>J,«i…rî”C+4Wÿ_œrÙg3L?% ÛE óV¯4-DÐû I6ª½7âßY`Ã*dÌÒ¢–ÂHÎÀdî,$Ë 0±ÅžlRÕ˜V_Ò‹Ï-§ˆ©8Ÿàï_ ŒCœ`YÌE…U‹¨‰íT^¤Ì6^г-À>·)-_ŠCø +ß{o°UœIŸUêÁ'Âcoë–ßµ±‡)gs5Öœ=îÀ‘žN}5ÖUz¿Ì‰¯ìï< T©VþûÿÙtö‡qôr­ŽÀ8¾f9 u‘8aMilª(Qð@&s ¾gÖ‡ó´ÖiXke­χ=,™#bš»ÞîŸu¸ÚÿÈ®“#;B  ÈûrÖU^Œÿ>(ŠªìÐIúL74K=˜¥–ï*‹›Ó8[µò¢Fâ¾n¾°â:Úïrž×@ŒU»Ï·ytÿôvìÓîŽèó´»]U¬±fÓp? ½Z]r´xïÎÊÏóF¼—4;ÜJ.çy½N½Y>Ñ+àý\Cµ!oø{±g>=†;«AŽýá¿p®DW-<¤YbñØS:¬‘ÍþR¹Çâ©Â#g–ó4ì±}ß™7‹âKXÚjï|ƾxOk§ÿØçQ»Ÿ;è…`iólþÐ +m³Tú>+gÉq¡ Þ¶þˆ:ygeŠ:¯yIÂÛA½—ŽÿKÛN\ èamD¦Zj¤²–˜v¢(¦Qƒ8&iùH‹ß¹¥¬¢§w Ð"Àõm„T'ïnJ×þQâŒ6XTsäÀ¬fYŽ +ñ”\Ô¨|õ¹”dmÜÿ¤MçÉ.޼©Áæ~;H¢8HçdåøþFyÃ"ÙeÎh±¸«µ¯û,+ìÂÒíÅǯ §C‚Õ×..ýùµÐÛ*-p…š}|Ü‚ºÊÑ:¿7«kþNëôÅÜêA°U££V GñØÍ»š˜ÑìùÓäv払AYMÅÊä£q+‚ÔŽ³M¬ëÖºàêj|¼ØtU–.ˤzÅ QšcD„)2)›TÌÞ¶B•Qá¹öœmŒ©¸R#r¤FdFåË3ùø‰0+jTô˜G]DU/e»P1ìÚÓP âÓôÖ[Á*¹†Oìvàë>å2gÆS #pœjtlŠ á§Îu®KiЍí6>m,0˜j`.Õè°AïçÞsUŠß#Ï¢(]n3)ìè$ÕÀDêÑ)ƒÄ÷¤é ޲3kìO,ßµõåÌ–¢1kQÌìÊ)«C}?OrA×Ù$Àª[ÊeÇ…¢MlA50Fä•è21–¯ÑÒßíüD÷Êì-®E‘ªgÝžøs§üâ"Ûc†<ÔœÕþ¹/;}±\uÊχNž9}9'9É-§/Œhq/Ï› Žƒ›<Ær¡MçÚð°‰ÆkŠMF›z1kâ7Îÿ.đĥ)™ÑI¹ä1?ZÝdz¢ÍE<çm¦.¦Þ'žÐ«î/1ßs^˜šQ4ï%M“[XÅ–¬Ï¹´-QÄ;ù@DÇ?훤4ê– Ä`‘Ví9r³™cÌ‘ˆê9Rž#7‹Ú.aDcÖªŽDÔÖžŸ6œØp¤æHŽÍ`VrØŒ¯Î««#÷)5â7 )ïC*gC E®šO‰Bü^Ügò{c• #7vR«=ZäÖâ¾ÂZ{(#7¦N +FnØ“çé?3ÿK8 endstream endobj 60 0 obj <>stream +H‰l—M–e© +…Gs¸ȳD¡]5“Xëµ2çß}=*FV§*î—EØüø‹åiFíãö¸+}~-ðýE¥>,µF¥=Vz)I"ÔŸRØÇw›ÉSÉ«äé½:=\¥ƒÐ£¥ HyT¬}þÁwüx æO‘ÇÕG¬÷ϯŽ5­q"ú®•^3'ÃiÎÍÆql•?¿ÊSÙ:Q\Õ-‘ï/‡™Š¿Ò*}š6 ¢\Üá–ú8þJßÕ§·¸ÞYÅI¯y'zªú}=ÄÔò¢òx³i”¸:“Ö«Œ0$ÖñGר¼8 3M»Ó˜Ä§UóžÖðSà˜ÌÈjVV»rE žk-B÷P«W“>êšV¿;Ã~š«ÍOšˆ…ûáîŸ *¢†øàT ó"8³@w¿¿þ÷U>ÿFPŠi×{ƒ,þ$¢. ‹ÚCø§JALªò°¹Š{ ›”Ä5PÇ9Y€-”àÌ~@ Ž`•ÃB‘Eá<\¥%ÒÕF:¾[¬?F¬SÜ¡‹_H*ÒR?ck,4-âïqË#Aú¸#4Ã)D$TKÍô8i&µ§5¸½‹`ÕøÍî3±„±rxƒj„G€–Gñ»ÐùíÛ<äG"8›…° Ç?™ˆ@Gû¸¯ãŠaIóó{ì íhZ²Ò2¦ÆgSXÕ¸Ì}+wÎ$ mƒ(ùð7._AÒüVµEÈjï£vPžBìˆ/bð­j2Ó3+ܪTÌ*N‰0iúý=L,di Ôe£r"M*¬ äÍ0°OgpA6ÇAݘ?ˆŽÈ>‚uq ÓŒätyødæÂü­‘v~ˬÜß…-BIÈ3j¨~±ÅNÊ?‰­Ì=d%w×Ç.Ô IŠÞÁ´ Üʨªd ;ú]lVUJ5)PÃÕNÝ +2Ü}j[ ïò"´ ·–ŠdF»–fø–ܱY¼uyQ¬^å;îÔ̯eút•ùmZiW»6ëSZqr¤~ÚŒ‘=?¤h¤t-‹:,v]à tÑ·CF:×ì5ìïæ·oaG¯–W½‘ÎQŠN]~FSðc¶ŠÙ;ð߇|–êÑ<°v»ÄƒîMQ¯ŽÂ9*\ä4ÌPY!ºß‰¡²<=ä>km›Då쥴 ä@¿**=}¨Ñ‡ÉÓæ›,b«Ã¦©¿ÛÚd_:΋h&ϲª)­@„½¥´RDK[¿¨<µ´¦Q˜rPfÿK¡WyJÕ,j—ˆ9Z;lI2v¢k‹[ï| B]¹WQìØ®lj]åÎ*@¤Ðµ =ÞÉ®ÍZ F?²ªêc½]ËÈ,WUHè\4Á娬jš³‚àßî‚vÄ´šV¡¶ÚrŒjLÐsF=±¬¨›L)§0¡ÑÉ)á(G9,ºè–×&[‚›¤œÚìLe‰¡þÕ¦éK<JkuÚ]kš@$r^\ÏÕu§/©¡]Í2Ù…pké”Ù¥·C^Uæ2{暋ɪ—o)õ5áQ˜äm/›ämëÃÓZ@ÆÛ “aBnJ)[Úd_:lˆW×q H©¢É{h¯æ1[,ÿ ì +X)œ"Í[ª¤h‚ˆZ½b¾›~^…üµ¤žL–Æ2›é2[¬aA½$½çŸ³j IKÒk’:é³Ç­½äÈÎ&¨e½þ8ÊŸŽv}¯ÂSPÒ> ì›%öÞ¤g!ÅÉéö$L¨rùÃdóšc‚rYË]øpá÷ 1£‹ƒôœ>1fWõK%k ÿñ,à¢O8χxý²÷M/«ŠêÍã™écÀA'ƒ9‡èƒC"yÁ¤ˆ,] +}^­»ùxH0Å›ï{g:œ^k¬joÍŠn-(Ÿ@1|rM(¾DzÏëoIc§wDÐ=È{KÎl2g¨½W!¹fΩ?æ×øÇº5D­Y"¡3K$¸f‰Ø­å!ÍÃ{× V4õ¼A³æy!½ <6¦ID­û™$Z µ' dOM“Ä&{’Ø$M›¥BxØ’æ&[¾a“ö«¡RJ6ê'Wpá¶*ÁJ¨p‚¿}¦]xŠ5¾ðf¯~·¿íá¼JKõT +2Y#³Y +Aš¾sʬ< îµ]õiKí¬ê)%Õ¹«¬½µÐc,쩆y¼Az*}‘(`” æ–× ~ Ÿ£.ðÞìbãþA0¥¥v›Ý3Ù0€Xò*ò½ØI-k²XCañ")º¨¥åJè¡´á£ÇcúØRZäÈm“S øÔ|tÿÌ }|ÉÓHg¥iBW=d: +òo“õÐ| •õ!P4ƒYc-E^ÝÄNð4Ùœ#ÜzË[8“bÆm¸à6NCƒ):>k_ÀBå“;Ï1b؆j¾Ü —+÷·ìŠ­YÕÈGµf&NR¡»¥&ô„JYοó¦’?Dô«¥Ä¸ÈYfSd H×7ã{[—+]ƒi/KŠæcUiïýL¢cÑÛy`šÑÛÜF®bÇ(q_T÷9\i¥Ñšø|äXCœÂMp÷¦4 ‚`2!Ž&÷£ƒþƒ¶Z>ÿÎö¤1hãÿ%†6j‘Q‘æÔÒjC +!tžGÀ-Q³ÂûÕ^3Œêè­è[,#¦^ q‡6*ø-Ò!;_ÖODцŠkQÂy4w“V‡«E‰\d¦1óxp¾,´Ž Р’œ ¡²Æob½)ƒ¬Õz%d²LP—ºéRÁÜt%$nÓlÖÖx'íÞµŠAÞ‚ÑfÖ„e¸SKå õF|ÌÕX>æ;&!ò˜I ¢!‘ý“ú ++RiȽæ%µÍ™f\蟯ÃÖ…‚ˆØ0Þ +ºê ¦šiiïw6F(Xß %"§ÇkÇø×ÏùýX±Â-EÓ EŒo ­Š|Ä=TLœC‰#jC^¬Š. ­SçD"ê:‡®Ã0½ÃÕX%QYgQš +–õDÀ}¼×‘´‚é°¼Án [¡É:3’%,¯øƒí¸½ÓèY…jO¡2²¸ñv%‡l¹RšÏ©Rž—Òßv‰?Â4^Sã;p¨£n­xãºû%ò¦Â÷h'fkú?ÛÕn]YÃ*ئ‰úÇ“N/õôŸ.@RåÝÌÖÕŠ@îîÈÛþFÌ]ê"ÛɈhÀ¼vG-kðD"xÍzl{;RŽÞJ ;Ái0»o0“Ò§äWe+Ûƒ£ªw-.×8š~!þz½ÇÍËKÈÇ69_ ¯ïl&º`œ›‡&>§™0»7%X2ï.†FjJ c 5ã*9¦ä&ÒÑp-%î²õÇÀµ ¿Ï`' +D<¼ÿR€^ÇDmLñV[+AÈ_Ô”3:±a·ú„¿ÙŠÝBõ8Šq‘¶‡ËjÌIȼeâÁpƦ:ƒ‰ +£ZËÊ6,WY‚æüY^žv¹ Æ[ +_£wÞœi;ëzò¯Jd<ã°eHaõteœÛÏp ¾Þ–lÎ8ì–TгR}o\ d¾>ãpœá±¡“Â"è)LgÓºÙ‹ˆ5C7ˆÝЏ£pGÙîȃ!év€Ä´PGY7ˆѾ¬LÎÔC »š°cØEv »ÈaÿUÕ"ðÂr˜5)ÿÉ•‚¼Íš‰(Wt­ël8Þå",HHì .Æ š0g®PÝ¡EKiL&•÷ÁŽW¨‹S›®7³úݨü…bÃ÷Ö áÏ «êÖ…ð% ¦-yÇáv¥gNK¥Eó8>Eñ¡W{Lš?sPÂèªR}FPVi?Æe¾ÞeX„Ã"è ÓÙz |"É‘aºmzî(¼›*óa!ØûË0žªZ3a#ЧÒÀ»%m j¤¡™¸…M±‹lŠ]äRìb—bÛÑë 'žqOM¢©jÅ“Ÿ= Å]N£ Ž;´ B^äÌY®§é=IÆ»œµIô´{¿qÔqL5µqW{0µ"–à¶epé1:»¨´³®¢¬c=ú{¤hO$r–r‡À/ðB.cAŒ2ߥè!£=£(a3ÌsïsÈ ÷îK­©-ƽEmøbÿ@$ߢ½M.Õö¼ZÑN·Ý§-lÒ%¼}ÑŽ|D‚’Ög`ÑAÓ.â|ü„ï(÷s~¿L}é—%¥È|©[Pç߈]S­TbCé³D`,mÃ1w-E‘©!tï€35VQÓ®9Lñ¬ÓöFOâN­e”KÒ€¥Dú«z/ˆ8¢ÚyšAT%/síÛÅ7®¹ØÓP« O~iRù@22U”ÿÃ[œ¸Bš¹ð%¬ÎeWED6Ç"f$’ew› tãz«Ïù° Xïm³l.•›÷v‰i”{ojådÔÔ·âqf2h. Ü…¡ +H«YÝ íÛRJÍ^ŠÞ0#„ÊÓ7,š.#%‰÷zèoøjB¯þÔʸyò¯Qf-Mee¡£ÑgmcjtI\7í²C4iÅ>V¦uàô¡Mw —Õ †X§o¸¶O«øC”éCiéf»6H°÷Y´nª÷±RÖ@F!²"&Ýx*B¬Ù¶êòºAé¶úT%RY¡s\SŽÙުă§UߪÄqú4]PNïÚBÁx‡Gq]˜I« ÿJ®“ÅgÈK?ûù0¶BV9šÕe­(¦¿ŠAPËÅ‘lZQ&X÷Œ÷Wîbf¨îÒçZ`ÒüõG1Í€ôÐThâ@Ìê#ÒøÇùŽsU[úÌÿÇ0ßCCC~Û.ñÛIêÈçηÃh( d%>˜¤mà(~kL#-£¨€ / 2=ð ÙmBÕ›VºÇªÌÞ)tœÍLÀú„JbmäòŽªuZQƒnãE¶ˆD̤ú©ä[J%ÍGÈšÕ‘FEiÁ^+Unbüè=Mñ¤gcØÐ=³P£åuàyh3:ð`:Í3î: çló_í¿Siý½IÈ„ëþVHÒŒß1(VS>íÇ=¤ÖäÅ<Yû ¼élU‘µô-9¿uß“žOÓeÚûcÐòìÑ© + ~KÖ¨ +`'„O.òQ–ƒ)ýbߊÁkøfÞÙ1XRJ†Œb=íĚ뿞U4Ùž˜YZŸ{Gy{B¤÷þpÔgŽ©-{´ò¤dÕÔ){Œ9&[ÜŒ‹-Zu­=Kì9‚Ug’‡uÀ°XGíÝJºlÎÈαŠùÆ%ÏbË0ÊCº¸6iwDz¶®nÑœy8*È4l0Tñ¸ ¯‰ b(Ÿ,§¼,NÚU˜¦µKh|0 +“V «¨Ñ±,€Ö(1Jð;ñ4€Vº±1¥à.PùWÒ?'züùQ±Fô[Ž# j0ùÛª +YcÛÅeÿˆþñ>ló¤r…XR/¦HŽÆòŒqc\鯱k"î"•S5æ¶ò"Sf¾"¨8K ×Wë«]gyßèdK$Ñ[þ{Äí-õÍzˆÍÿŠÕ:‚"é%r–qv>˜*"øeP@"0ÙéI,åçXbÍ5•¾¾¨iG#àšx!—DN“R”D"8Àˆ’ÈëïzÔDÅf½šH@F šH¤Ê«‰È8‹ö.G‰e9þáb~;’X ™+GIVC™#J"±"j`*‰xî;Ê%QX3­å¨‰ÄNd¹uK¥äAL¨.¨WKÃŸê ½oq#5¸1J •@´Û{º³ƒ‹"1tº=Ž‚Ì0y6íä'{µ ‰Æx5ñYÿŒ:{ôKBïßÔš&âÙ¾Vêåj"‘dRj$Q/®öu%QØ-h}oIöCe’ˆö\ùÔÑSʶ$ÁV;¤2Ù$ˆ}‰þàŸÊ⫈„j±V|+¢t6œ#4óR„,VP‡›"¦³Òy+;½IÑïX²M»íý¥«”YyêÉ¥ãVÌ`Q‹LR,XHFKó›ê"Ãh8Ð0·p=†¤.ú +U¯¯dçL£°ÊPR­£Z¤sÔ6¬‹°´t½ñP‰úê|áÎ’T±D}ŒÉ]BŠ5Yá–±šo U±”³½”¤äAmce»&áb¤¼ƒP…ÒÇíz-Ø‹¸A<Ä_ÇœõM¡9øS¡­ÐG÷Ú^ÇÙõÓ&*„j©9@v7}ÙÎ8p¼ÎöÌF½iåǪ‘wwx>ós† …³^pì‡ÃcÌe‡‡W­'‰ì¬8ÕlB4µ6ÖtŽA’‘"•罦þ ­  Ð57†Yñjå—ñnó…¶]tl‡Uò ܲrŽ:Z +ÌDOQ4úáÊú"‚;ÌÜRÆZÖm6JeW®Â«ZÂÁð6š".ÂŽŽÍ.¯3¼‹YÂMW¡ñrqÍà¦ú\Ê€‰Nêp¨¡ÔV÷GH*Ô¡'ÚF{8 ¬MÓŸ;j¤<"‰ÔG-¹û—ÜàduEîè.^^óÓú%ëa¶4s„¤¦ñ’¸ñIÇ;òöƒÄuâÖŒ9wU€MãÆ3®ŒUãtÏÀ}'œ-YIøÅ½ßë¶RZqÔÂêþ¿ dœöãE¹þ”Àt V„Ù%˜€¦¸@ HXm5²l#—‰Ù|ý„ïØŸ$èíwÄÁjoáK(<|¼ê,YÂO¨¶ñáMMeȃdGVnM‘”¼'Õ–_áÌvSCÞmHšµ=6.øŽÂÛ×ä]j“õ"»©ˆ˜uœiIÈuºƒ’B»òùç’íŒ"#ÅÛk™šös0Ú½ï ]w¢f dz:€Ó˜Û¨¾ûÛ3S@öñ"f—@DJh‰¤§y÷¢Ö qGµs/·Š›ó!ûõ-Ø›&c說ÏåAñV PekâåÓF.çâÌü—íjÉ‘,7b'è;ÔÚ@’BŸuyÙ[û¹YÚç7ÉžôzŒB™L}Bñ#ã£}n¹Œs€7*úSíº¢ *‰çNð{£s„Xb jd”5R¤=Â0•[°Ø–:Ø^%l`]D8aðÝdšW° +…äíl™-KjÞò Aý¥¶Ô{”i¶2JÈ5çÔ2®E—Ê-œÿ6×}0ñ![måb¥Îk˜öJ1Ú•V +¶´UG$V +bŠ5Do1J©Rê¡Eiç’« ©£l,:,¿.î{0‡u®‚fÉHÆÙª,XSTâ(Êd€§À¨Ü7©ª&Ç¡’16QüÄ™+YÞúúI}È ð*›¯üð@ˆ"JÑ^=‡ÀC—!ÂéT¸M>ïUÎ4ÑAÅ¢—$cJ­Žn‚ÜÏ츉ú@‘/ÁÜ0¨ ©ÂcaŠ×«”YPjª.Võ ñùM£×õ6`ØS÷ªÑã ³–pdñQãïë÷‘`7ôß .ºT‚æ*f+C!Ó/ès½ðµ.|õ00] v„Vkžå¤£[ EY ÍŒAMŒ?Œ]o"Öä8SŻžKÃØrÈ[Ùù`Ðó“î.¹£Óaê@Þù2]ª*­?5™„®0(°vÿ’™5KzBXuËzM±äj9ÐãF`(?D¢–I•¦ÇÉ,¿1 rýì9O=‹ð–A•­Œ2—HaÆs2í-2Xª]ža_²ëøF¨>?^\R…H—Iì=Â}˜SK÷{ªhSIjo@zŸCVr,«ayîZÓ¦…Ô¨+od½6.{°áØN¤çÅ;SÎ…‘æ):¥MIvÆ’*hmd‡¨Ó%ï¥ê°`¡¨É-žþº°-±²e‘e×Öj‚Ô^¶Ø/È#½Lb¿ |DfÂô„nª}ävÏ—‚$„ü»d&ˆ™~‹QLGÐÎiÜ«ûÝæ¥koè´ \:Y‡Ù¼U7ïl£¼U7_ÐÛKuÃoh*»š + òB¸•–_úÙËœ²û°4á¡lïKz¯ù·uQ¬ç tžzÛ%<­–ËmI‚ýå[šÁä¾|‹‹ÚŠÉÎŒaàŠ&‹qt>4˜ñèübR˜õ•;€FŸw‚mä$áFŽÎ?ØÑù¶Hü [—ɦ"²Å¡`¢­ðˆ4çÈ"/IµÎ[*Êmú”rTÊåhN"¶”ø¦Ç¿Ï" c,å/‰ûB–~aÐùC‡C棜ˆ”h¿–"6J²{•aà[:}Áä&³¥uv¦—ä÷}2oi¹qR}}ÿ¨@uök 4·ÊùÒôËcÍ·j²upƒôÅ"ºØÖ€hù¨`Ë„9©ßk`OJãz?Hí®ú­mÝe³“ªÈ슒¢5/„ì3ƒën j î‹H>*›[ûZr¯r%OÂrÙÉûòÜvFùÂ*ls­2“Ÿ¨ë:-@Œ¬Å[•¯û𬑃Iª³p@cÕär\ƒQóB>jÆv¯“åU€ÉÉ…¥.5DÎ+äÑûqýPÆ"ÀóKÙm>ÿ‡|þ%åÉöÊ„UBJLBŽ0ÆÒœlaPT˜Ð¸݉‚êAÀ0x¯œð`œMSªZ•L©Ign&¤KNE2ËXíݧ‡ŽÕk¯¢rVM³KCÍ@$ÕvA‡f[Œw­ÃÍ6¯òÌø8oˆ[)ÎÆkY:Š3º>È"ØÍ(¨U£×º¿´|±Ã =ìpƒ‹µ%j£óA˜ËÍ2dÞ|L¤YpÙâBƒÊõ&¾jM*Áyâ“6.~ÀR>ü@9x ƒl~8Èᇃ~¸°ÅÙü@$”àô{¶6?è%›1ÈиòÍôÁÌe~ âNºÝ­ŸH¦$½â8ø^õ4zÄ YñÂÔk‰ØX ¥f+ òêÙ‹ N²=«¾«‹óû#2ëÜ9ë>Úµ#įS W{ï»Ý"ˆgün×A°Ÿvcá"xíå¤ÉÙtΗ+iBÍ·Ã'œ6î Iëè9¼Åv+Œð–5 +œ €Ü®Þ_i‚ ¥Þ¹´‘“o²²òsí3N†•þ|c(ˆ©ÝË‚^la”¢²‘xpˆb=’ò¶i ˆ@ÎÌBž]K D¼-øh›jµ‚M:ÂáiÖ{Ò[æêŸµ‚#Zز@!³•¾à9T&ÕNÞÎ…Ã=F´D?GPê°©ÞÜ_Ê&]qÛÊ&a2x%.$`BožíV;@Zô”-AnäQW¶4X?n W!5ÕW±³d;Ã÷!Åç.ûQ\HÚ*dŽÙŽ:ðÂd ~RB¤ bRA:©—†Ÿbîá¼Ù8K¦´†N'–ë×ï$ú bM_ÿüÁ<ŸS4ŒWÐÛ)]f‘6Ap©D¸;lecä4ÂZŸ"N<+Äwb0Ù¢@ã#Ÿ¢Z [ ²C²å H¤>·ùÏLS‡Ç«Á︪r1YoùÈôî}Ü«*¨•‚HËùU ´­åUY«fP¶^_‰,,6nº 2ô]‘(‡4ë»"ñœ6¢)„l}Økw c íD+ÉUá€æNêoè7]eÃ~¥}¿G惘ýã_?þñŸ^¨{ñ“Câ½"zhàÄè‹زñ‰|&Ý fJZ¢UìA?®Èp¤lj|ºÅ¾P6 nE2´­PÞ5äg.±«¦‹&nnµë¶¼¨®‘»_ÂHຎšP AÉûEB‘¢~6ÔaÓ[@óòN’ª§Q[Þ5§déZ¥†ÑP8¬;‡îU°\0ãy#Œò²G[ìëÑGé/ˆ£U™¸.o–† jDZËÁ³‡î@±ì |àEJ°Ès„e]ÁöŽ G{(êÙ>P hPަÒ3gTì5lç*qÀ htŒ™e;« w1”…<œóÐ6ÎDl­ØæÅåô¿™õkjGq›„ˆ"dÃüªèìi g®S™{hwº]ª¶0l4¤ê¯°Ã{•i£ã„_Zm?t˜Êš6ÄDÅlKà”¿[%ǪXÐ\C޵cŒàgÑg•£/±}äú¯omƒ‡M¼¦¢åᘲŠR‘yxªHÊ“¬jßï&„1¯8G;Lv¹ùÌ¥†ŒLÞÄðju¶Áœ†Î‰åjŒ[Îr"îìoa´“5~ Ë]ñF5çÈ–y†Ïÿ­L™ü‘ìP†ÁÄ) ÂLq\”‚6TÖß24aÒéÎ̧‘RÜ—HWD<…Pè)‘»Ù˜ŒìV™˜¢Õ0UÂë8ŠÊÉœµr]YÒ’F­ÄŽZWF¼ÜGŸVöz¥6'ðœ +ŠG[•!H;ÊFüÿáT!tsê%+ur +Ç—©ˆdC]ì Dêà.1›"S¾Õp¸‰]â==°Xœ¬ƒé–Ñg\e#5Jñµ .+UÅÚ±±EUªa42´F,±z*ÅX0:jι ±ªÎëÞ¸íw|ËOigÇbuú –6‹€•޽y oTŽ©žÃj(ßò¹fGiåº+#ô>‘C´ËÜãèúLbÍgT!” ÍæË3˜¿:x(’±äÑÖu(½(°ÞšÉÌJ1·8ô‹¯C=j·Ô°’‘!' +iš(¡ÕZ|/}ê;´_[»Þ~R忇¼%$˜e¸x*^8Q÷DBà²I%Dúž3õR„>3,#zJAî`UÚÙÈ3Ppe †±ìdW9r]»ÜŠ7`I€SìTñ¯z±bí?ý=àÈ’n&áò ô HA7`p¤îl?ƒŒn¸6®8t¼Jˆ†ˆ_ݧ_øAŒ,Q#x"?¢}¹I­ý³‡•eÚ£|BÌÔÿóì[O¾ýU¸å“˜ÒìµÏê„›—R¾«À˨‚q×ô2(ž§CI°c„º¹öê .¡H²$¼„pŽL!#rN#jÏN:F#Å1*­BExoFR”=ž»Ðïú!lO9jä>&ㄇ­¯. þyw…Ñ0ºHI~¨lõ.Ö\CbÅrGu(pkÊyä¬ùÙêGF€!«ðNh­Ðu@²c/=Î*!FR;×õŸøB„,ŠUî–ÀS¤{°QNÔg>/Ú"m¦{ìTYpþ)‘P{SÞÛpÆRKMá&«œey_‹U¡M5¶è…°¨Nµ¢#ìÉFøY] $¶ÔAØ¢]è‡23¨rX·ÔÚ,A‚?`=Ó-*FÇbHÉ6²´ ¾K)yAú¤³ÏvduâË`¦Ý¯…cŠïºÎ+‹‹ Ú* `p/û½&N¾V›¶ªPáÂç(«šê—Ÿ÷Ó­ÑÉmÌ,C9ó±dS èMõòÐÐåRªóä4,§šÛŒÈ¹M«(éLé!v j¾1•;€HœHaÑÙÚ¥¶ÙA,ÞW¤?®Œ&bdø~­·Š@\%¾¶Ü ¨ðŒüVߢ bd0¼1h ¹÷üz-ŠJ•˜ŽÙ}iåÇRݲ¡ª 1,€´^…qeh¢SŠ7µ§Aì·CÐ8¢ÆÂx5ŠUhÁDo×X2æ6jÖþŠX¶áö‚DD_‹…Ø94XÕ0Ê3€ûŠ Y¸]oJÌê¸SˆÂ—8—«®€ÿ/ +[þªª›J2É¥£.×5ŒØã°¶ßké +Óy‰Na´ œYáÜ0Q:²Ó9¡‰5¿¤IÎÆeêù ;{‰­‹çzR(ÁEÍ~ÈÈrNƒ%Hœ-ºãF ~F“Cx"awL3#=ÔŸèõErc¤…ûzíݯ=Ûg§VÁµºÀòH¯×ó@d³pK:‚ÅîMën(ýã:[}¾‰D¬©Qs‘À]yXñˬ“»r<¼¿k”–ÇM’À$ñ™<;þ,¡-”{_DQì,‘¸óÔiÒ÷·4‚ú{Gµ' +{¡Oà.?œÜá½ðVŃH`'±óÚ´]Íè1¥[tˆ´ãI·xøg1hÿ´6—dƃýÖ)½ Ѫ©ßÖLà•U³UÆ ²3žÉÝ%ƒS‰ú`mï~–f˳ùi ••<¶GÁQ`dlébóÒùž ê9Öç]ð< š[5mý”Øßuv“†¸¥,ûÓj—]J7Þ}ðZ]ðhÛ„VÈBж‡ËÞFj + ÙS%£ú–R†"½Lॼ*:Oñà¦=܇b…ì`³`s8–ÇFmIr®â­r ¿»V³Ù8ÌäÕ)¥Áéæ˜bªÓ#ƒ?rp–ì(šWI~êÊS*fý«úmýÑ1­‡ÑÝtM§"¢l— ßeåÔê£×wK]K¬ÊiÄìé°z ÆÆ¹î“¦úMÐÙ@ÔhÛ˜w¶•§yÛ)ùŒêÍ¢é8 +±Ze2—Ðc0¡žæMœ.þXø5ræ·Ï†ýßÏôÞ›%ý¾–9$íѺ\o⯠+ç}«Õ*·E))½®«Fc9ʾ|ï·ê¨CQm_Ì€; + †•èå›·¬NŠóé]Ž#r%¤‘­­N„Þ-¹¥»cÙ~K§OwçÀ®Š`Š*2E*x65 'l÷+^TÚ4õ¶S£'{ËzpÎþÊ4µy–¯}ì¬Ö¾¦£’–ÒÞLw9&®hIKlÞÕ,£¸‘KoÇ'¹«+"ö³Ï-ŽDKB[*Í;ˆ$,ÊúZ_Î10®ÌÝ”ççÁ€hŒ&ÑÙ0rΈ yP„äÌÎþIÂtý uÃ<$œøÿ{OEhAìxpíL¨Pê\Ô…S“^eÐFz=DbãÉx\“bäLwˆ£7+vÇ/FZ²±"QÞJ {ó]t_YN$Ž©@’/øŸÄ +jËDÁ‚—ÒÒZe¦¦Çè“mYlðK—æ:y/<Ú-@™)c:Ñ&³Ú?i)$&F‰]þëQ8ßÐŒPŸ‰žÈS±£DªÝb‘T¼`e‘#ÒÅŒÈà0²Æ’úáKʇZ‘÷VbÒPÁ©É”ªá;nÀ‹ù>ÖPTyGßaÖE¶Èµ#µ¬bÒl<ÊÝŽsç±>3VRpMº,Ö°2…iñò46b8ciUl +`J°$~òØ=½Sö3ë;mú[bGÕ«*ÜrNWÅ#B±г¸ ,•à´b]ì„2íFNyy«üãG©$~ýÐ0ç°×:ÕˆéoE¨Óî,hö9Y Ì¨a¶ÄŸ¼a*¬°ÑWp…C°àÎF[i￯)¸ep·ÔãÉ:yˆ@àg}…‘,Éb­ðÐãbDȪøÔ½vu¿Lûð¶i®ˆëÆ‚,¢Ì1¤f&í”&±~Ô¤”£«k•™IvL`KçÅìs§{mNa$þƒ »M°(€¡®=K]kæj]‹ŒrˆÜ[¬ë×£÷̹ê³&>ãH3v1ª!<ãºÓ¢Üã­‚ +¤ ¥”Jž!ʼÕ;`:×2Œ}m«†ùèp½(÷6OLWÓB@÷+׋¿;q=K Ü^ÝR‹  Å„´$"/N5 ¬Õ~¨RÐóêYØTÊqGå!,ÒÐ2bM&½r¤N÷ònR¸[“Uýz[Ù.Eàî>ÝÖQ™Ngë0U¸<ã:bFÏž´7\p©E¦,pÉ]îÒ`H îö pˆEL‘ÅÙXa>Ù])… лÈ#ÝO!†`àHÓ° }Å&ÓDã•$¦§3´Ôc«&t3 ³PãE̵èÚNSÁUƒÎ·\² ä£ˆbÿ/f4w˜Ùáw¯±ð¡q +Ä꡹XææÝ”3*¥yÓ«<¸ä½ì­Xˆ´>{QǼw)–´¹âý!KƒÎŨˆ;j¾a§û8p³Œ+bwã›òU üª%½Ôx8ÇžwaWí¡€Ž2¹@A(ÒϽŸúp:oNœ×‘¾Ö|举p9^â(€58¼ËÿÙ.sôZn¯À{Ðä’±RmàÅŠµÿÔ5 ­«ùêîCb¨úEcl}<Ú˜Šd›ÎnŸ]æBOÑÊÁ:¥–‡U›çÉ‘Ÿ¢j©åh—¦ Bè·b'—µ§q]M¯EŒ¬ÞmØI+Æ!@¯eÙ_œð\"Fb¿éÓJ1N·œ]žÆrëPòôò®˜Šì§ñÓ…±Üª|*€ŒÖ#n¡N÷Úõ/±8OT¤îýF¥bä¶ó謶„?3âbºþnµ<228- ˳Œ‘b^€xp9`äÌ2–±™'홪h!¶9uÐTMï»Z|Gþw™äØÓC¼M¾Œly_ð†kw5ì‹8Òªþ¡­°ü]5š7Àng…,Jø¥#ûGÕÇÌ×ïÉk1mzú10Ž€rS‘ªñy™cÏ +ÑRY€ÅõîbŽz¯œªaÁVø--“:¥´F{♺ݔâi{:ºÝ/½û,ôzgǾ6K­èN =•æÎÙ‚_Bó—#“•uDýÖº£Ðœ$òN¸Ž,N7#@±Ð‡øÚ—²®jv>$fÁÒh‚Ë$*ö¿ÍÑŠDH?Ñýž?´ÙÑS?fö$B¬=K©½–W²´žÛ‘võÞŸ9yü³Â5u¦d(ï€9iù…³E:ãòȼ ¢€…­ÇÓi°ø¥_8¥àÁ¶6¼˜÷n$Íhq- +'ýçL_½P/á&;L_­˜77mãšß“â‘°š±m°MëÚæš4VÙ°7ˆdš´Ìò\IVCþ rxš€Mô]}›ƒ |c¬×Ù"+ö¤^ãN³ôI}ʆĄ<î*²¸ßñÛs7M\Q²Ä¦u„À½6=D ¡ˆM+Ãòk¹H4ÈTãÙìYDóö;›Îq¼.Ëúí¬ ±ÄÁzŠ0'dI‘Jaä°AÀ.'vÁã‘•,®6œ +@ Å—Þ÷z±¤à>ç6sq—ý€DÜ+ú"ST˜¬¾Ïüv6¯¾µ‘¿ƒp@ºQû-’X7ÇMRÂû"x›dlB•ƒÙº„.ns®÷6+;¯¥ÃY¯E‹¡Sâ˜=9‡ˆŒMÃUÄÌæõŠ8ïˆA¦º:æLG°½ý®‚ÑãAÆhß2Ý !T¨‡ÙLHÜ^œqÈþy1rC]<_º‡×6I5IáÂX͈‹/iþ²~ð4bgµþæMUò‹ª¯æºœuC²CíuYܲܲºÚçÙy¡ +À3OÑmtn®”t—®g½‡^FàvP…FDÄT¬½(ŠÊ½é0$šŸ$™c)ÄŸŽ"]3ƒˆçC€]ï¡3fú©¡Uè*0“iQ%¶ÂÅýÞ9íú2êrj‹°ŸÞ’¶Ú£ÅN&OÜÃ×"]ƒ¶sHïºnÖ.Âê*sÎ +Zl(–MEh4ö­Èk8ææõ™ûQ’½¶|ÚT<á¹ß3L³#I~ùÐÂd¡„8÷©…‘ШC‚ÆU`¶´ZvÖ#\¬¸¥UÊ^‡8Ø×µ×-®«õJÞç.¥¹~j’Ÿ '*K§YŒrÄ“KhÏôÜÍe²EÓhaÃ)ݚܪüƒ <Å£‘¤%DFô]”l¦cå§@Ž´8Ž< šÙ…¿.¥qL#¸ö1 æçøj¤A=Õ÷ý•¢ž=“é<›lµu±.²LD¼zòäÃÞÄ¡S$I* WŠ‹á˜Ú'ÚÝ[‡Ø/Ýx<°È÷×'5Ua<‚ÿY{ZµðéõP¹6´c`iQD°‹C5:‘ñ~6î=x +Œ¾…í]ÀˬU@Y"¢P:#Ý@%Ðà<Òt4VÄöHË­3ʼh±`_:Î]# è¡{EÒ1¶› ­d²¥ ù×lÊRnnû]*pzå£3M4¿ +ˆ‹M¢,¼ shLîKƒø9iÜZw2^[k¢HDªA7m«À9m¼Ê ä½±œl^ûíùÖu÷P~èµíο1vËG)™+œ3€T¶°å­Ý½aâŸS¿ò¤NáUÍÿ&„iÂè£_)’$;à +Òûáà†Ñ±aÐŽ@|œ'G  ŒœRNF¸Ñ}üŧ¦TŠÊ­‡_²/„’ šì n½F`âÁjha=„¡ˆÝÄð]ÉÁVHÃŽ˜vF†š¿Æ»ÿ¾œ®|€ðóŒf;¯|0™ƒåSaAoYô +ßånBÃ×ð>D;'töÎ}2|0ò#£7Ÿ}­Š€¶"]£Ããö@7}}`gÑYÍÂ<¡ƒ\õèœ}ªÎ|/7 M (Ž ƒNò£ö×8Š"0¾Úøðo“\ÙðÔ=ø(#ƒ<‚Àº¬(R°| ´Ãc"æÑFlóÛÈÕpo¾ýΦs )íÌ ¥goµÕ™E†ž} êzJM +é±!€™nÝ—pñ 8±T'å‘`(8€Wns+¢ÂSx\Dbtß/ûñ3¹(Tµ¶}ËEãüRsD#à þÑY‘.ãÿ7yÃôLyÄú1<$€®c_Üú4 ¼6ÑÓ”çÌ<3‡aøãÿdéS¹{ˆ¸"ÙøV0L|›^y•:P9“¹(û¡ˆAöÄØÖœ¬Ø˜)Ã=Á­Œô]òL很½8n1œ;™‘˜á²wj#w÷ÊùAëL1ÖÔ{0¾Ò[¢_—³ +z2œgj$/{8C’à ÒŰ}ï—#ÞG v°ž!°„ŸÒ¶ =¼£l¶Ëe'exG>ü¯#°P±gOIcû·b˜‹x»¯6ªIHLðTb—ôki¹mŠ»!«µ‚Vê<ô Ão«8ðòê\(عË~´P O ôIÿ–Ï©¡k&ßú˜ý5XŸ"woŒ·KÄ h‡íŽ`GÜúŽöS¼K û‡í*·’kÇ¡ü”ÀÌ!Ap³åve—;ñÏ]ðº¥îoI‚Èz –»¬Ã×QB†R_kþúY&Qp§´ä¬ÍóoÅš˜ë´x³·‡ô·0`¶û$Ž™Ò*síÃ&âa-¬!as¦"sÐM!’Û´XßÃÊÚkøêiÖÑã⠌ĉÒö#d;‘bùTȶõ¸Ìð¯C·BðI,‘Ò—¿7ŸKP2+Põt5{G& DWâT³é×Ã*½{Ù9üã»õ­ÈXÛ‘×çè3ds±[÷À!3,¤­à0b÷$¡ò`?%¤ûT¨ãøu4"I-ƒ@v5¸[ѽt«4ŠÒAîŠ<¦$;°H‘}mo(B8s·<&E害ţ»IÑý±Tá;Ž0“ºÓò_~V£+ÔE¤.QAIv 'x <± L—È`ò[]½¥‹˜Ym3§%ýÄ/ŽèSŸÉæÿc w£9Zâ1ù[?”I•D^šš.lckŽÄ½níí¾Ø´êã•ÝclQ¯³’Æü¡<]+×Û4åM*Èߺ7%=¨r޼Çd +DóŒaªX ž›œMeHDàfhŸ@ù¢JOäõ”ÅúЦŠî +‘C©J1°4•ßjà­ç)‰7  U[ÈKýþfùqµ³}zPæºtsˆ@GQæÉÔ¨vTk‰ÅOí]§­Ê7=CŒÁ2Óo´Œ.ˆæÑDz{ˆ@Ì¡b¤”êÝ}“ÔèôšÍ[G½‘09åH +EÛJ¡÷Š\)r<ï”áé(»– +1ˆ>ìK§dZŽ´K›‹ˆågÙï JpMÏ<HLE_ÀkŽü]a×[|‰vP¿Æ’Z3#$~9˜§~m€Î´ö±LcdŸ[P-=wcqÿAØ”šá–Ž˜­¹Ç`˜b7‹1ªÁÅ–@‡.Uþ +ê@šEsW„²¨m™:áó%y×ÔRd~0‹æPX:Rn¤Ï@ÆÍ¢ ÃræDî™ÉöK‚+#&ñ¶µ Mòt¢rÛW–ƒ`\ZôŽiȆƾ¥aA¿n†Øž‘àAd·XŠŒUXÍr_z.ÍÄ¡d1™›úž¶:9LáNÜÔ5oþ ›æD‰d²f¥¬óù"QîðÚø¯×‹…k@¥”£²™@hÞëɽÝQr’¬ÑהѨr½äø÷jÚãóXÖo‡„1ƒ ~§Ú’5µ£„"¸ÝWȶƒc\×*(Ê\+¦!õì¹4s”¢b¬ø¤‚'+r‹¥¦Z‘Ú&RSÈþ!-8¯k“xšÍå# V-Ư/¶öì$EkBçRÞ¦<rr%Ó±*4"ò|Œ´™t¥Ø«}§VÏ0í–±•H–Š‚E;±Šb%𯱼/I¹ý¨DBöÈÜ­• "Pª·¾wOÒ¶ +°b;’­äýô7ˆ¬Ç>aŽ©1d%i.Mòc(ƒÆ¶É'HTŒmTû-¼oΧæ;ŽIÐæ/¸æ‰¬{m³Y/ZbìXÞË¢#@>&Ùä!mY°@@ B®T©k£MW3[ó Û‚‚ ðLJÈ1ÃÚùP“Ÿaó¨j~6ݬpN®Äk, ¨i_®#u=ÌŒ) H,BgÍYƒ±éFK+¾'™Ítî;wwZpœz³´1­5†œ8~`¡bÖ[w¤A¤‹öç"š TsöS*ÃÆ§®œ"ƒs£Ïµ=-© i6’™¿wdDð<¨që…5©NÐÍü]׊“­i6·oÅ"d™P´¦Êsž¹ò°c[äÌH'ÎMJÍ5”=í•EêiEG¦-¸ÍKÚÊ)¹n~ô÷>*1àÞræÎJ¬ ÊU<3ž4Õ#(Jÿ32 ¯þˆš$"û0‚½”-e”y¨süÂì XN¨C‚÷¤^=Vo©ÝÅ/ec¨ðAR®®[•o@}² °êL‰¥ð¼ì=û‰ô(_-/3z–4%öá½+GàôŽêt‡Vàgí>J Ÿ%9SPâµø´ a§‘âwÐâÑá ¶F`dUšÁ5úÏ zNŸêœ™Á.5ltš™SïY‹$>Ê\éÕRF£D·KÕx$²Œ~LYŽDè€ IÝÏCAÓt´ªytO1¼R2È­rɹT'|Õ¬<º¥/=RÜÚMl¤¶ +&ðrÊpŠ¡Ë®^ÈS†¼—ÏÀQe]ëÐîÞœKU˜–6Ú­(‡Ym@÷BÝŠ3i·¹}³¼#Û7¦ï­P'о¡IŸ_òý+‡³«£.¥°žYö +$è£~Jªìäî>МGC ¸ö‘Ìû\Úh×RÐ’ê [7ìøÐ¹$wDÎM#RÃæX ʤ!"-ÿ[÷ft£Ä _ËÞÂFú?êGÂM'0š&C²Õ`mxÆOw_ KG0zf%“½Â9q±AØ‚ÈÚª8 +§2=¿õÒ=ð¦um?Ã÷ì9¨£o8bº„TÒèÖ½Žm …NAóX­µKžâ÷HCÕœµX£ <ï#¿é1· €†ŒÈ•íXiB¡ŽÊ"AüVd!^?Vk-õKÍ)Veµx<É‚ˆ©GlsњϰkÚtiP#,KêÞ=Ë‘Wà{öO$ֈ瞴 Û@É)”²§‚Â#(ýXln;ÝmhÎx1Çaöi¥D¼ «Hdhˆö`„°¢ÞtSÙˆèÃ=âX|™ +ý:Þ¨xÐb`RMøž´¾ü˼)OzJ1Êgal?L’½\áíi¶=]BLEÎUDÿõÒ{¶„,¾‰‰\Û“ÖM|ùgTøÒ­QNÚ’ÛUœVûlSH׋ +Ì}lí¸üØú œ˜Û®7  ¦SmS„®=–Ý#"1WhôëäA“ÇlÖçzÞûÍáä? –IŸ{Ø•©ßvt¯ËÙ1²BYÎsdèkP˜’†ò_ú†åÿdW;v;\÷à Ì9ü€ Oê ¼ØéxÿéÔÔ“¬L·ÔÝ@ PUC1±‹²—;@È«0F@MÊNl=Õƒ7£˜0óß‹éo›5Šòe‰]QVhw¢Tç”S n¤J$Å}ÒûHÄ}ÂÄOGO]qCМ8ˆ8áàwDW©8Rî¬ãêj5È?µBPø¿Ô w¥±uYA UdÚV©y.–ˆeGв¢Lfw{ŽMð½¯û$—éµÖlÒ‰‡ZŒ#°¨Fú]*E-ö–[fJ¹U¦Q¨ÃõʼnÖǯY6lA"§Ñ<òK=?î5eÁ–'|û{“6PD±z]v a:=Д½d1`xkêµTÎ@ÐÅ)ÄKaI—¸VÄ ÿ;.psÄÑßkòHìH-*ðaØØÏb¨øU"u"ø6¦ç-‚m»´€_7xäzÅ Œ}½‡z®jeÎé¡ìÙ+gŒ^ +£QL¶ p‹KÕ¸÷h{Þ<Ègß⎾ÒuIÝ0#&‚ËÏbа+<¨‹4Ís¼˜.^%§5Z¼ùÞRŠÀZÆUPÜk,ët”$W"¹ýþtŸÁÙn¸„²Bq·ÒBqÍ&®%DâU_C.sååq|jÌ«(%¯ƒlvÕLø4?4)bÄ]õíµÂ$hYLj8y¿Õ"öx^“ºv/‘hÚG7ŠÛ'{7Æa?CØŒãÍÒ)Tàî 4’4د@´%®OŒp9D¿Ô‰Þóä>g ÙOÚË)î顯U¬m‡Ië`Vö]Hl¹7R*' IÄj$:ì­×†êÙ=¼ E·‘;\*“zB[ÒqãKëlíÍ9ri=…™ÄèžP×ÀÂ#©úGÛÄâkP5)Å»¤}ˆµ#…åí*¦sI.@’ŠH%‡ÆEu¨Å"ôØV1]„mÖI!sM?3¬°ÕYïu®@Þûöƶ>c¹7*¤ö.t”?ëÖKù±Îûîºu|u;%<ˆ¡»ëòšÞcÛ®*îRûü}s¾OD¬… ›‹Òu‚7tŸÙ)àx$âCÇ PÝ‚æ8gî­Ðw©€D©;iOA· Ô·¸RÉvó·;h½'…t¢\Â@P#s4#÷ŒT4\àC¿³I„M¸BÐËýç·ì<íñbLjñë„Ý}ü1~t 4çêe!šlÆR7Aƒ„ÐÇ©”•h˜ÈÚÇíÉVÄ ÑâbuÜø,Y&` ®á“f&‚KJ!PßnE¥wZŸÍý²(÷åqLX.ìÍo¹)cÊÑMúÌÒ{È8RUç«Ë·eµ¼'ÅWV‘]6ÝÅðüaØu7›2°¥¦Æó·APC\¥€ WûcªË¹Ý¥ÅU˜IEp&çaШ_Xô¦kfÙ©½ÐTàˆ¡{°~B2(BÿùÏÖaJÒ m'3¦\hÒ»ŒüŒ$šx¤>þ°s½Âÿ÷ »b6UTß¼.vBV™I–t‚{¿@;CÀ†9ó.É:äÀŽi>ëq™w>BÏ :S¾sèálÀ„Ü5(Ö¹~äŠ~ב§8†`PÚ®‘½ž;œBÇÞ…_Ë´G´QÏ-Ô“3#RãÓ©ôx„(«ÒO{´}z¼7G(«å¤—'âìJ ™«Øtj"s‚q,J¸NJTê{}Ù%ù-Š¡ÿêU·5AÛÐ[þ‹YU¡Öoå>ïÌ¢ Í +×§’îtV‹w&„c q©$1oQ*±Å;f³î=È®dé‹âíëR¨¿"ªhè)”1HÙ튄8"d1ͰTl¦‰ÛZ~¥Bd]° ì$PÛ]£_ƒpGß&Bs§B3¥9míª†–¶üšúåêì×áFƒ#Þés˜{ 4.+¾ºC3Ò<­Nˆ¥^žV"xZýõD=~ïÜü<|Ǥ*Ó„ÉñãX–(NîqZ#j-:ö Î=<x4ù2êî ‰"Xçtkƒ½1ï4¦,ÅïÖ\¿g¶ðRÑðók.…<{E·Ž©¸-_´<”žÒ‘Aãç%]¥¿ýÑØì·p\.~0k}ÚËP˜K«)¨¶ß0ÅP¥;W—†õ¼ëè‹®±k2‡Kݙ٪ÆnÝ-—'sžmZ}(Øw<Aö> ŒªNé†Òç–å¡Ç§Ë=u*hæŒjP9>ÐQÞßÖ:(¸íÍoé½H Êe É; Bšs•§•¯º¸½|ä )¡¶)êyâe›ý#)liJQÛ8OˆÉRvŽ©²ˆ-)£45¬ãmPBÐhWäk‚ Õž2 ÊgH¥àÊo*,*{Ù”2íã_" ÊBh 8•þu¿tÔ¬AW¤™g.×û…&ªÊ5kÅÇJÅ>K&‘È rï£ÎŠ 7s•õòÝŽ¢#ΖÙUÂõd•~Φ7Ñm‹tDMîïÓ:Ñ0~±Öo±\'È Ñ—ãy0B¨ÒP”Kâ—v%OÓ‡¸2UÍö:‘kóÓ% Äÿ³]e«uAð î?œb2ûb?ÉKÀ ,çÉÜ87ŠÀ–‚,bü÷©ªî9RŒµçLÏôTWWÁ‚ W¨™Xj‡¡UÁëÙ1v7˜^`5{¯hT ]œ{‘³HŸ_Úø@QRœ]¼dÞ"Šzì‘Ý,H¤ÊONµÑ­¥©ž)t¿å…cµž¥‘DÐfÉ"P¬&YÑ\ñAˆ9ãzé}‘(§Çu€0FÉ%Š£,nŠÐ´I¨—v£~!%ÀýnØCFãaV»1ä¾Ló`øEm*jf;ÛRßѤt ª™&n’B¨‹é*5NÕa)ml‚{’‰ÚI³Ažj m6„A"#™¾äêYÉr]¨Î=ÐÚ +”>½š‘>¯iôR¼;Z-JÁŸ‹`<ƒÐɲFš“jÈ “oÉñéë(߈5Œà½7Ýò»7o-Ð't»$M F ˜-yí%½^TÏéæ=ƒDeø5§4¶Ç{7듽> éíî¨^ã5C_:+“ͼA3ÁGÀ@ÊRŒó.‹›z)ƇRÈCÉñp΢2˜É™tÌ… ¯H0mQ—~³ú’‚ß ±ödÏ aÈ»:E±$UêkúÓ_˜Ä×aG/IcÓ2„¾rÈ>C>f‰H +C¸érÂì€Ëy¥V™6Ú)܇T¿LY¡åzš¶z…Èjcê¼j»TÏÍ“fˆ> ʱ¡K^‰&²A޼|rÐ/~fR˜?#Ü´”’µ¬T‡–8’{kÒȰ‰‘rìï’][1×,ecå¹—©2)-”wMFoÿºØܪâ ߯ÀxÿÕ/Då0…AÖ U ï!G—R¸RŽe@[ûƒ§àD]F_Þ9Gçs޶(>™á-±E­>F 0ør–îÒ§ƒ‘2¬Î}NÄ+;b^²’vƒ7·³É7F¢-Њè-\]´†¢êß_;‘pÛÈÑ^ÆØ%˜r¢ž<}7ÞŽÙÊËéXDqª]‘Pë*aã" &i[êS·ÅΤ` »Ì•:7å±42;–¹¦ˆAëŠÑ‚1¦ÄõmÂg¹ŸµÎ=D3{ íŒÓ‚‰Vg™›êrETÜQåQ +ˆ›&åCæ'Û©ÇÝ™º²âۤౠäÝ«æjz¡äîRǧ~ ü#xT|¿Q³FýE53­2uöêD-HM€“l\F$»ÁE0.°=C1©Fîdʽ…L&ÏÂÑÆARÄ¢+|z6ŠhÔVÓn༳Ïê_)ÔP ú­÷Bà‹lf·I6iÈÖiÊö3â³TÍ+¢à®"C›¼ýƒ6€×PÄÔd±îcÊLcS½C?RìP%¡*¨¦*åGëÖü ýéùÒðHŠ€³vg_$ûnæ ìŽHhÍHã)êÆ¹Í¶Xdê¤`¢Ùíõ†_£VñïV$ð¢|´PÚm¼Lfa'(+’Bð¢Œû°j£Ôó´ÞÆ*YC”ŹÃô5ÑTÙG€i(AÅp •H¤O`Ò«‘À…úWuIT \Co \•ý à»â óa„n׳­˜™…ªÍQ7\“¸µÅ˜f¿†É +ne9ô§MÓ@Ž¡œÅÌÝ(8t¤ ž G*Åî¾ˆŠŒ³-…ÇIYÒö‡íǘuëG€´ï”.ô\ÒÈûNÅæä£DmÿX•»ËKô;F¡›i~ÚÆ=nšb )LÍÆ%q5i³È?ÒNøGjj—uÔÅØ=RÕá»XÕ,ÒfˆŒÁÆç”b>|Wibízí¶(Û"ˆšN3„­é:Kbàôœ#t#1u+Gq–¸ˆ#(A°™nÅüê ”DÌ +ðý¹1(UKÇ1Iˆ5¶ü2h…@ç²àji±‹Ã*Âî§7­Ê†_HÇé‘ÔIÜEî"zº`ùð°!jà çæÒH¨Nå?øÃ¾×¸Qa>©d t"ßÎn':¼Ýï"»ÐªKÚÁyõA®b eN'"¸Ï1l”êý$^kÑìè¦(Œñ×øð!Æý» f"īƈMRV¾Ww@à>M™èIÉ ³[¤¡C´Y.Ò‡I¼]9µù,«»ÇEH^‘AC´*ãý )ü¸]¨W‹ÉcæÊ&Ü,x§ÑZRHo$ýu¶“»¶$GŠÅ¼&Ÿ!rZ w`ùB¿íX(ÑÇï°§¡…°2¡{kžJ±Ží¿åõ¿øépñüpvþº¾}uýÛÅñóéöÉûùùéòêZ‘CÜìWÀ/þ $á[‚ +D 0|ñëáÑ/ο}¼]\ÎÞ~u~{÷òêÝÝÕÍõñöóö”¡7ß\üôúåötó…϶Gç¯cx‹¥ˆ?޾Ģgø}Û9~¿ùô¿G;ûþxyúñöxõ»üxüë´¯¯oîŽw§?ñ?ÛåíéãÝÍíiûøÇÍ'FðÉZ~vö껯 0i endstream endobj 15 0 obj <> endobj 18 0 obj <> endobj 21 0 obj <> endobj 25 0 obj <> endobj 26 0 obj [/View/Design] endobj 27 0 obj <>>> endobj 22 0 obj [/View/Design] endobj 23 0 obj <>>> endobj 19 0 obj [/View/Design] endobj 20 0 obj <>>> endobj 16 0 obj [/View/Design] endobj 17 0 obj <>>> endobj 39 0 obj [38 0 R 37 0 R 36 0 R 35 0 R] endobj 61 0 obj <> endobj xref 0 62 0000000003 65535 f +0000000016 00000 n +0000021147 00000 n +0000000004 00000 f +0000000005 00000 f +0000000013 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000117691 00000 n +0000118341 00000 n +0000118372 00000 n +0000117766 00000 n +0000118225 00000 n +0000118256 00000 n +0000117850 00000 n +0000118109 00000 n +0000118140 00000 n +0000000000 00000 f +0000117925 00000 n +0000117993 00000 n +0000118024 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000251 00000 n +0000052594 00000 n +0000052669 00000 n +0000052753 00000 n +0000052828 00000 n +0000118457 00000 n +0000021199 00000 n +0000021574 00000 n +0000053473 00000 n +0000053360 00000 n +0000051557 00000 n +0000052033 00000 n +0000052081 00000 n +0000053244 00000 n +0000053275 00000 n +0000053128 00000 n +0000053159 00000 n +0000053012 00000 n +0000053043 00000 n +0000052896 00000 n +0000052927 00000 n +0000053547 00000 n +0000053755 00000 n +0000054851 00000 n +0000062476 00000 n +0000075641 00000 n +0000096091 00000 n +0000118503 00000 n +trailer <<24AEDBD9D06A452B99A853D33D1917D3>]>> startxref 118691 %%EOF \ No newline at end of file diff --git a/pointprocesses/lecture/beamercolorthemetuebingen.sty b/pointprocesses/lecture/beamercolorthemetuebingen.sty new file mode 100644 index 0000000..c4a5da6 --- /dev/null +++ b/pointprocesses/lecture/beamercolorthemetuebingen.sty @@ -0,0 +1,61 @@ +% Copyright 2007 by Till Tantau +% +% This file may be distributed and/or modified +% +% 1. under the LaTeX Project Public License and/or +% 2. under the GNU Public License. +% +% See the file doc/licenses/LICENSE for more details. + +\usepackage{color} +\definecolor{karminrot}{RGB}{165,30,55} +\definecolor{gold}{RGB}{180,160,105} +\definecolor{anthrazit}{RGB}{50 ,65 ,75 } + +\mode + +\setbeamercolor*{normal text}{fg=anthrazit,bg=white} +\setbeamercolor*{alerted text}{fg=anthrazit} +\setbeamercolor*{example text}{fg=anthrazit} +\setbeamercolor*{structure}{fg=gold,bg=karminrot} + +\providecommand*{\beamer@bftext@only}{% + \relax + \ifmmode + \expandafter\beamer@bftext@warning + \else + \expandafter\bfseries + \fi +} +\providecommand*{\beamer@bftext@warning}{% + \ClassWarning{beamer} + {Cannot use bold for alerted text in math mode}% +} + +\setbeamerfont{alerted text}{series=\beamer@bftext@only} + +\setbeamercolor{palette primary}{fg=karminrot,bg=white} +\setbeamercolor{palette secondary}{fg=gold,bg=white} +\setbeamercolor{palette tertiary}{fg=anthrazit,bg=white} +\setbeamercolor{palette quaternary}{fg=black,bg=white} + +\setbeamercolor{sidebar}{bg=karminrot!100} + +\setbeamercolor{palette sidebar primary}{fg=karminrot} +\setbeamercolor{palette sidebar secondary}{fg=karminrot} +\setbeamercolor{palette sidebar tertiary}{fg=karminrot} +\setbeamercolor{palette sidebar quaternary}{fg=karminrot} + +\setbeamercolor{item projected}{fg=black,bg=black!20} + +\setbeamercolor*{block body}{} +\setbeamercolor*{block body alerted}{} +\setbeamercolor*{block body example}{} +\setbeamercolor*{block title}{parent=structure} +\setbeamercolor*{block title alerted}{parent=alerted text} +\setbeamercolor*{block title example}{parent=example text} + +\setbeamercolor*{titlelike}{parent=structure} + +\mode + diff --git a/pointprocesses/lecture/lifadaptfano10-100ms.pdf b/pointprocesses/lecture/lifadaptfano10-100ms.pdf new file mode 100644 index 0000000..6ca0f33 Binary files /dev/null and b/pointprocesses/lecture/lifadaptfano10-100ms.pdf differ diff --git a/pointprocesses/lecture/lifadaptisihdistr08-100ms.pdf b/pointprocesses/lecture/lifadaptisihdistr08-100ms.pdf new file mode 100644 index 0000000..18496c0 Binary files /dev/null and b/pointprocesses/lecture/lifadaptisihdistr08-100ms.pdf differ diff --git a/pointprocesses/lecture/lifadaptisihdistr65-100ms.pdf b/pointprocesses/lecture/lifadaptisihdistr65-100ms.pdf new file mode 100644 index 0000000..b654602 Binary files /dev/null and b/pointprocesses/lecture/lifadaptisihdistr65-100ms.pdf differ diff --git a/pointprocesses/lecture/lifadaptreturnmap10-100ms.pdf b/pointprocesses/lecture/lifadaptreturnmap10-100ms.pdf new file mode 100644 index 0000000..a3a37b5 Binary files /dev/null and b/pointprocesses/lecture/lifadaptreturnmap10-100ms.pdf differ diff --git a/pointprocesses/lecture/lifadaptserial10-100ms.pdf b/pointprocesses/lecture/lifadaptserial10-100ms.pdf new file mode 100644 index 0000000..aa5eb8e Binary files /dev/null and b/pointprocesses/lecture/lifadaptserial10-100ms.pdf differ diff --git a/pointprocesses/lecture/liffano16.pdf b/pointprocesses/lecture/liffano16.pdf new file mode 100644 index 0000000..a424589 Binary files /dev/null and b/pointprocesses/lecture/liffano16.pdf differ diff --git a/pointprocesses/lecture/lifisih16.pdf b/pointprocesses/lecture/lifisih16.pdf new file mode 100644 index 0000000..f44ecc5 Binary files /dev/null and b/pointprocesses/lecture/lifisih16.pdf differ diff --git a/pointprocesses/lecture/lifisihdistr08.pdf b/pointprocesses/lecture/lifisihdistr08.pdf new file mode 100644 index 0000000..4908f72 Binary files /dev/null and b/pointprocesses/lecture/lifisihdistr08.pdf differ diff --git a/pointprocesses/lecture/lifisihdistr16.pdf b/pointprocesses/lecture/lifisihdistr16.pdf new file mode 100644 index 0000000..5c4fb3f Binary files /dev/null and b/pointprocesses/lecture/lifisihdistr16.pdf differ diff --git a/pointprocesses/lecture/lifoufano16-100ms.pdf b/pointprocesses/lecture/lifoufano16-100ms.pdf new file mode 100644 index 0000000..36520b5 Binary files /dev/null and b/pointprocesses/lecture/lifoufano16-100ms.pdf differ diff --git a/pointprocesses/lecture/lifouisihdistr08-100ms.pdf b/pointprocesses/lecture/lifouisihdistr08-100ms.pdf new file mode 100644 index 0000000..0df3beb Binary files /dev/null and b/pointprocesses/lecture/lifouisihdistr08-100ms.pdf differ diff --git a/pointprocesses/lecture/lifouisihdistr16-100ms.pdf b/pointprocesses/lecture/lifouisihdistr16-100ms.pdf new file mode 100644 index 0000000..82bf23a Binary files /dev/null and b/pointprocesses/lecture/lifouisihdistr16-100ms.pdf differ diff --git a/pointprocesses/lecture/lifoureturnmap16-100ms.pdf b/pointprocesses/lecture/lifoureturnmap16-100ms.pdf new file mode 100644 index 0000000..f1ed8c6 Binary files /dev/null and b/pointprocesses/lecture/lifoureturnmap16-100ms.pdf differ diff --git a/pointprocesses/lecture/lifouserial16-100ms.pdf b/pointprocesses/lecture/lifouserial16-100ms.pdf new file mode 100644 index 0000000..ec087f6 Binary files /dev/null and b/pointprocesses/lecture/lifouserial16-100ms.pdf differ diff --git a/pointprocesses/lecture/lifraster16.pdf b/pointprocesses/lecture/lifraster16.pdf new file mode 100644 index 0000000..73eedea Binary files /dev/null and b/pointprocesses/lecture/lifraster16.pdf differ diff --git a/pointprocesses/lecture/lifreturnmap16.pdf b/pointprocesses/lecture/lifreturnmap16.pdf new file mode 100644 index 0000000..a81a348 Binary files /dev/null and b/pointprocesses/lecture/lifreturnmap16.pdf differ diff --git a/pointprocesses/lecture/lifserial16.pdf b/pointprocesses/lecture/lifserial16.pdf new file mode 100644 index 0000000..8c07e80 Binary files /dev/null and b/pointprocesses/lecture/lifserial16.pdf differ diff --git a/pointprocesses/lecture/pifisihdistr01.pdf b/pointprocesses/lecture/pifisihdistr01.pdf new file mode 100644 index 0000000..d485e57 Binary files /dev/null and b/pointprocesses/lecture/pifisihdistr01.pdf differ diff --git a/pointprocesses/lecture/pifisihdistr10.pdf b/pointprocesses/lecture/pifisihdistr10.pdf new file mode 100644 index 0000000..bb0f667 Binary files /dev/null and b/pointprocesses/lecture/pifisihdistr10.pdf differ diff --git a/pointprocesses/lecture/pointprocesses.pdf b/pointprocesses/lecture/pointprocesses.pdf new file mode 100644 index 0000000..be38025 Binary files /dev/null and b/pointprocesses/lecture/pointprocesses.pdf differ diff --git a/pointprocesses/lecture/pointprocesses.tex b/pointprocesses/lecture/pointprocesses.tex new file mode 100644 index 0000000..ff49cb2 --- /dev/null +++ b/pointprocesses/lecture/pointprocesses.tex @@ -0,0 +1,412 @@ +\documentclass{beamer} + +%%%%% title %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\title[]{Scientific Computing --- Point Processes} +\author[]{Jan Benda} +\institute[]{Neuroethology} +\date[]{WS 14/15} +\titlegraphic{\includegraphics[width=0.3\textwidth]{UT_WBMW_Rot_RGB}} + +%%%%% beamer %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\mode +{ + \usetheme{Singapore} + \setbeamercovered{opaque} + \usecolortheme{tuebingen} + \setbeamertemplate{navigation symbols}{} + \usefonttheme{default} + \useoutertheme{infolines} + % \useoutertheme{miniframes} +} + +%\AtBeginSection[] +%{ +% \begin{frame} +% \begin{center} +% \Huge \insertsectionhead +% \end{center} +% \end{frame} +%} + +\setbeamertemplate{blocks}[rounded][shadow=true] +\setcounter{tocdepth}{1} + +%%%%% packages %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage[english]{babel} +\usepackage{amsmath} +\usepackage{bm} +\usepackage{pslatex} % nice font for pdf file +%\usepackage{multimedia} + +\usepackage{dsfont} +\newcommand{\naZ}{\mathds{N}} +\newcommand{\gaZ}{\mathds{Z}} +\newcommand{\raZ}{\mathds{Q}} +\newcommand{\reZ}{\mathds{R}} +\newcommand{\reZp}{\mathds{R^+}} +\newcommand{\reZpN}{\mathds{R^+_0}} +\newcommand{\koZ}{\mathds{C}} + +%%%% graphics %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage{graphicx} +\newcommand{\texpicture}[1]{{\sffamily\small\input{#1.tex}}} + +%%%%% listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage{listings} +\lstset{ + basicstyle=\ttfamily, + numbers=left, + showstringspaces=false, + language=Matlab, + commentstyle=\itshape\color{darkgray}, + keywordstyle=\color{blue}, + stringstyle=\color{green}, + backgroundcolor=\color{blue!10}, + breaklines=true, + breakautoindent=true, + columns=flexible, + frame=single, + captionpos=b, + xleftmargin=1em, + xrightmargin=1em, + aboveskip=10pt + } + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{document} + +\begin{frame}[plain] + \frametitle{} + \vspace{-1cm} + \titlepage % erzeugt Titelseite +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{frame} + \frametitle{Content} + \tableofcontents +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Point processes} + +\begin{frame} + \frametitle{Point process} + \vspace{-3ex} + \texpicture{pointprocessscetchA} + + A point process is a stochastic (or random) process that generates a sequence of events + at times $\{t_i\}$, $t_i \in \reZ$. + + For each point process there is an underlying continuous-valued + process evolving in time. The associated point process occurs when + the underlying continuous process crosses a threshold. + Examples: + \begin{itemize} + \item Spikes/heartbeat: generated by the dynamics of the membrane potential of neurons/heart cells. + \item Earth quakes: generated by the pressure dynamics between the tectonic plates on either side of a geological fault line. + \item Onset of cricket/frogs/birds/... songs: generated by the dynamics of the state of a nervous system. + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Point process} + \texpicture{pointprocessscetchB} +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Homogeneous Poisson process} + +\begin{frame} + \frametitle{Homogeneous Poisson process} + The probability $p(t)\delta t$ of an event occuring at time $t$ + is independent of $t$ and independent of any previous event + (independent of event history). + + The probability $P$ for an event occuring within a time bin of width $\Delta t$ + is + \[ P=\lambda \cdot \Delta t \] + for a Poisson process with rate $\lambda$. + \includegraphics[width=1\textwidth]{poissonraster100hz} +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Interval statistics} + +\begin{frame} + \frametitle{Rate} + Rate of events $r$ (``spikes per time'') measured in Hertz. + \begin{itemize} + \item Number of events $N$ per observation time $W$: $r = \frac{N}{W}$ + \item Without boundary effects: $r = \frac{N-1}{t_N-t_1}$ + \item Inverse interval: $r = \frac{1}{\mu_{ISI}}$ + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{(Interspike) interval statistics} + \begin{itemize} + \item Histogram $p(T)$ of intervals $T$. Normalized to $\int_0^{\infty} p(T) \; dT = 1$ + \item Mean interval $\mu_{ISI} = \langle T \rangle = \frac{1}{n}\sum\limits_{i=1}^n T_i$ + \item Variance of intervals $\sigma_{ISI}^2 = \langle (T - \langle T \rangle)^2 \rangle$\vspace{1ex} + \item Coefficient of variation $CV_{ISI} = \frac{\sigma_{ISI}}{\mu_{ISI}}$ + \item Diffusion coefficient $D_{ISI} = \frac{\sigma_{ISI}^2}{2\mu_{ISI}^3}$ + \vfill + \end{itemize} + \includegraphics[width=0.45\textwidth]{poissonisih100hz}\hfill + \includegraphics[width=0.45\textwidth]{lifisih16} +\end{frame} + +\begin{frame} + \frametitle{Interval statistics of homogeneous Poisson process} + \begin{itemize} + \item Exponential distribution of intervals $T$: $p(T) = \lambda e^{-\lambda T}$ + \item Mean interval $\mu_{ISI} = \frac{1}{\lambda}$ + \item Variance of intervals $\sigma_{ISI}^2 = \frac{1}{\lambda^2}$ + \item Coefficient of variation $CV_{ISI} = 1$ + \end{itemize} + \vfill + \includegraphics[width=0.45\textwidth]{poissonisihexp20hz}\hfill + \includegraphics[width=0.45\textwidth]{poissonisihexp100hz} +\end{frame} + +\begin{frame} + \frametitle{Interval return maps} + Scatter plot between succeeding intervals separated by lag $k$. + \vfill + Poisson process $\lambda=100$\,Hz: + \includegraphics[width=1\textwidth]{poissonreturnmap100hz}\hfill +\end{frame} + +\begin{frame} + \frametitle{Serial interval correlations} + Correlation coefficients between succeeding intervals separated by lag $k$: + \[ \rho_k = \frac{\langle (T_{i+k} - \langle T \rangle)(T_i - \langle T \rangle) \rangle}{\langle (T_i - \langle T \rangle)^2\rangle} = \frac{{\rm cov}(T_{i+k}, T_i)}{{\rm var}(T_i)} \] + \begin{itemize} + \item $\rho_0=1$ (correlation of each interval with itself). + \item Poisson process: $\rho_k =0$ for $k>0$ (renewal process!) + \end{itemize} + \vfill + \includegraphics[width=0.7\textwidth]{poissonserial100hz} +\end{frame} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Count statistics} + +\begin{frame} + \frametitle{Count statistics} + Histogram of number of events $N$ (counts) within observation window of duration $W$. + + \vfill + \includegraphics[width=0.48\textwidth]{poissoncounthist100hz10ms}\hfill + \includegraphics[width=0.48\textwidth]{poissoncounthist100hz100ms} +\end{frame} + +\begin{frame} + \frametitle{Count statistics of Poisson process} + Poisson distribution: + \[ P(k) = \frac{(\lambda W)^ke^{\lambda W}}{k!} \] + + \vfill + \includegraphics[width=0.48\textwidth]{poissoncounthistdist100hz10ms}\hfill + \includegraphics[width=0.48\textwidth]{poissoncounthistdist100hz100ms} +\end{frame} + +\begin{frame} + \frametitle{Count statistics --- Fano factor} + Statistics of number of events $N$ within observation window of duration $W$. + \begin{itemize} + \item Mean count: $\mu_N = \langle N \rangle$ + \item Count variance: $\sigma_N^2 = \langle (N - \langle N \rangle)^2 \rangle$ + \item Fano factor (variance divided by mean): $F = \frac{\sigma_N^2}{\mu_N}$ + \item Poisson process: $F=1$ + \end{itemize} + \vfill + Poisson process $\lambda=100$\,Hz: + \includegraphics[width=1\textwidth]{poissonfano100hz} +\end{frame} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Integrate-and-fire models} + +\begin{frame} + \frametitle{Integrate-and-fire models} + Leaky integrate-and-fire model (LIF): + \[ \tau \frac{dV}{dt} = -V + RI + D\xi \] + Whenever membrane potential $V(t)$ crosses the firing threshold $\theta$, a spike is emitted and + $V(t)$ is reset to $V_{reset}$. + \begin{itemize} + \item $\tau$: membrane time constant (typically 10\,ms) + \item $R$: input resistance (here 1\,mV (!)) + \item $D\xi$: additive Gaussian white noise of strength $D$ + \item $\theta$: firing threshold (here 10\,mV) + \item $V_{reset}$: reset potential (here 0\,mV) + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Integrate-and-fire models} + Discretization with time step $\Delta t$: $V(t) \rightarrow V_i,\;t_i = i \Delta t$.\\ + Euler integration: + \begin{eqnarray*} + \frac{dV}{dt} & \approx & \frac{V_{i+1} - V_i}{\Delta t} \\ + \Rightarrow \quad V_{i+1} & = & V_i + \Delta t \frac{-V_i+RI_i+\sqrt{2D\Delta t}N_i}{\tau} + \end{eqnarray*} + $N_i$ are normally distributed random numbers (Gaussian with zero mean and unit variance) + --- the $\sqrt{\Delta t}$ is for white noise. + + \includegraphics[width=0.82\textwidth]{lifraster16} +\end{frame} + +\begin{frame} + \frametitle{Interval statistics of LIF} + Interval distribution approaches Inverse Gaussian for large $I$: + \[ p(T) = \frac{1}{\sqrt{4\pi D T^3}}\exp\left[-\frac{(T-\langle T \rangle)^2}{4DT\langle T \rangle^2}\right] \] + where $\langle T \rangle$ is the mean interspike interval and $D$ + is the diffusion coefficient. + \vfill + \includegraphics[width=0.45\textwidth]{lifisihdistr08}\hfill + \includegraphics[width=0.45\textwidth]{lifisihdistr16} +\end{frame} + +\begin{frame} + \frametitle{Interval statistics of PIF} + For the perfect integrate-and-fire (PIF) + \[ \tau \frac{dV}{dt} = RI + D\xi \] + (the canonical model or supra-threshold firing on a limit cycle)\\ + the Inverse Gaussian describes exactly the interspike interval distribution. + \vfill + \includegraphics[width=0.45\textwidth]{pifisihdistr01}\hfill + \includegraphics[width=0.45\textwidth]{pifisihdistr10} +\end{frame} + +\begin{frame} + \frametitle{Interval return map of LIF} + LIF $I=15.7$: + \includegraphics[width=1\textwidth]{lifreturnmap16} +\end{frame} + +\begin{frame} + \frametitle{Serial correlations of LIF} + LIF $I=15.7$: + \includegraphics[width=1\textwidth]{lifserial16}\\ + Integrate-and-fire driven with white noise are still renewal processes! +\end{frame} + +\begin{frame} + \frametitle{Count statistics of LIF} + LIF $I=15.7$: + \includegraphics[width=1\textwidth]{liffano16}\\ + Fano factor is not one! +\end{frame} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{frame} + \frametitle{Interval statistics of LIF with OU noise} + \begin{eqnarray*} + \tau \frac{dV}{dt} & = & -V + RI + U \\ + \tau_{OU} \frac{dU}{dt} & = & - U + D\xi + \end{eqnarray*} + Ohrnstein-Uhlenbeck noise is lowpass filtered white noise. + \includegraphics[width=0.45\textwidth]{lifouisihdistr08-100ms}\hfill + \includegraphics[width=0.45\textwidth]{lifouisihdistr16-100ms}\\ + More peaky than the inverse Gaussian! +\end{frame} + +\begin{frame} + \frametitle{Interval return map of LIF with OU noise} + LIF $I=15.7$, $\tau_{OU}=100$\,ms: + \includegraphics[width=1\textwidth]{lifoureturnmap16-100ms} +\end{frame} + +\begin{frame} + \frametitle{Serial correlations of LIF with OU noise} + LIF $I=15.7$, $\tau_{OU}=100$\,ms: + \includegraphics[width=1\textwidth]{lifouserial16-100ms}\\ + OU-noise introduces positive interval correlations! +\end{frame} + +\begin{frame} + \frametitle{Count statistics of LIF with OU noise} + LIF $I=15.7$, $\tau_{OU}=100$\,ms: + \includegraphics[width=1\textwidth]{lifoufano16-100ms}\\ + Fano factor increases with count window duration. +\end{frame} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{frame} + \frametitle{Interval statistics of LIF with adaptation} + \begin{eqnarray*} + \tau \frac{dV}{dt} & = & -V - A + RI + D\xi \\ + \tau_{adapt} \frac{dA}{dt} & = & - A + \end{eqnarray*} + Adaptation $A$ with time constant $\tau_{adapt}$ and increment $\Delta A$ at spike. + \includegraphics[width=0.45\textwidth]{lifadaptisihdistr08-100ms}\hfill + \includegraphics[width=0.45\textwidth]{lifadaptisihdistr65-100ms}\\ + Similar to LIF with white noise. +\end{frame} + +\begin{frame} + \frametitle{Interval return map of LIF with adaptation} + LIF $I=10$, $\tau_{adapt}=100$\,ms: + \includegraphics[width=1\textwidth]{lifadaptreturnmap10-100ms}\\ + Negative correlation at lag one. +\end{frame} + +\begin{frame} + \frametitle{Serial correlations of LIF with adaptation} + LIF $I=10$, $\tau_{adapt}=100$\,ms: + \includegraphics[width=1\textwidth]{lifadaptserial10-100ms}\\ + Adaptation with white noise introduces negative interval correlations! +\end{frame} + +\begin{frame} + \frametitle{Count statistics of LIF with adaptation} + LIF $I=10$, $\tau_{adapt}=100$\,ms: + \includegraphics[width=1\textwidth]{lifadaptfano10-100ms}\\ + Fano factor decreases with count window duration. +\end{frame} + + +\end{document} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Non stationary} +\subsection{Inhomogeneous Poisson process} +\subsection{Firing rate} +\subsection{Instantaneous rate} +\subsection{Autocorrelation} +\subsection{Crosscorrelation} +\subsection{Joint PSTH} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Renewal process} +\subsection{Superthreshold firing} +\subsection{Subthreshold firing} +\section{Non-renewal processes} +\subsection{Bursting} +\subsection{Resonator} + + +\subsection{Standard distributions} +\subsubsection{Gamma} +\subsubsection{How to read ISI histograms} +refractoriness, poisson tail, sub-, supra-threshold, missed spikes + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Correlation with stimulus} +\subsection{Tuning curve} +\subsection{Linear filter} +\subsection{Spatiotemporal receptive field} +\subsection{Generalized linear model} + +\begin{frame} +\end{frame} diff --git a/pointprocesses/lecture/pointprocessscetchA.eps b/pointprocesses/lecture/pointprocessscetchA.eps new file mode 100644 index 0000000..95a12ae --- /dev/null +++ b/pointprocesses/lecture/pointprocessscetchA.eps @@ -0,0 +1,500 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: pointprocessscetchA.tex +%%Creator: gnuplot 4.6 patchlevel 4 +%%CreationDate: Sun Oct 26 14:09:12 2014 +%%DocumentFonts: +%%BoundingBox: 50 50 373 135 +%%EndComments +%%BeginProlog +/gnudict 256 dict def +gnudict begin +% +% The following true/false flags may be edited by hand if desired. +% The unit line width and grayscale image gamma correction may also be changed. +% +/Color true def +/Blacktext true def +/Solid false def +/Dashlength 1 def +/Landscape false def +/Level1 false def +/Rounded true def +/ClipToBoundingBox false def +/SuppressPDFMark false def +/TransparentPatterns false def +/gnulinewidth 5.000 def +/userlinewidth gnulinewidth def +/Gamma 1.0 def +/BackgroundColor {-1.000 -1.000 -1.000} def +% +/vshift -73 def +/dl1 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if +} def +/dl2 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul add } if +} def +/hpt_ 31.5 def +/vpt_ 31.5 def +/hpt hpt_ def +/vpt vpt_ def +/doclip { + ClipToBoundingBox { + newpath 50 50 moveto 373 50 lineto 373 135 lineto 50 135 lineto closepath + clip + } if +} def +% +% Gnuplot Prolog Version 4.6 (September 2012) +% +%/SuppressPDFMark true def +% +/M {moveto} bind def +/L {lineto} bind def +/R {rmoveto} bind def +/V {rlineto} bind def +/N {newpath moveto} bind def +/Z {closepath} bind def +/C {setrgbcolor} bind def +/f {rlineto fill} bind def +/g {setgray} bind def +/Gshow {show} def % May be redefined later in the file to support UTF-8 +/vpt2 vpt 2 mul def +/hpt2 hpt 2 mul def +/Lshow {currentpoint stroke M 0 vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def +/BL {stroke userlinewidth 2 mul setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/AL {stroke userlinewidth 2 div setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/UL {dup gnulinewidth mul /userlinewidth exch def + dup 1 lt {pop 1} if 10 mul /udl exch def} def +/PL {stroke userlinewidth setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +3.8 setmiterlimit +% Default Line colors +/LCw {1 1 1} def +/LCb {0 0 0} def +/LCa {0 0 0} def +/LC0 {1 0 0} def +/LC1 {0 1 0} def +/LC2 {0 0 1} def +/LC3 {1 0 1} def +/LC4 {0 1 1} def +/LC5 {1 1 0} def +/LC6 {0 0 0} def +/LC7 {1 0.3 0} def +/LC8 {0.5 0.5 0.5} def +% Default Line Types +/LTw {PL [] 1 setgray} def +/LTb {BL [] LCb DL} def +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def +/LT0 {PL [] LC0 DL} def +/LT1 {PL [4 dl1 2 dl2] LC1 DL} def +/LT2 {PL [2 dl1 3 dl2] LC2 DL} def +/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def +/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def +/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def +/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def +/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def +/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def +/Dia {stroke [] 0 setdash 2 copy vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke + Pnt} def +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V + currentpoint stroke M + hpt neg vpt neg R hpt2 0 V stroke + } def +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke + Pnt} def +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M + hpt2 vpt2 neg V currentpoint stroke M + hpt2 neg 0 R hpt2 vpt2 V stroke} def +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke + Pnt} def +/Star {2 copy Pls Crs} def +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath fill} def +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath fill} def +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke + Pnt} def +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath fill} def +/DiaF {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath fill} def +/Pent {stroke [] 0 setdash 2 copy gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore Pnt} def +/PentF {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath fill grestore} def +/Circle {stroke [] 0 setdash 2 copy + hpt 0 360 arc stroke Pnt} def +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def +/C1 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + vpt 0 360 arc closepath} bind def +/C2 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C3 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C4 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C5 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc + 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc} bind def +/C6 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C7 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C8 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C9 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 450 arc closepath fill + vpt 0 360 arc closepath} bind def +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill + 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C11 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C12 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C13 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C14 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 360 arc closepath fill + vpt 0 360 arc} bind def +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto + neg 0 rlineto closepath} bind def +/Square {dup Rec} bind def +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill + Bsquare} bind def +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill + Bsquare} bind def +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def +/DiaE {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke} def +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke} def +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke} def +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke} def +/PentE {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore} def +/CircE {stroke [] 0 setdash + hpt 0 360 arc stroke} def +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def +/DiaW {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V Opaque stroke} def +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V Opaque stroke} def +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V Opaque stroke} def +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V Opaque stroke} def +/PentW {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + Opaque stroke grestore} def +/CircW {stroke [] 0 setdash + hpt 0 360 arc Opaque stroke} def +/BoxFill {gsave Rec 1 setgray fill grestore} def +/Density { + /Fillden exch def + currentrgbcolor + /ColB exch def /ColG exch def /ColR exch def + /ColR ColR Fillden mul Fillden sub 1 add def + /ColG ColG Fillden mul Fillden sub 1 add def + /ColB ColB Fillden mul Fillden sub 1 add def + ColR ColG ColB setrgbcolor} def +/BoxColFill {gsave Rec PolyFill} def +/PolyFill {gsave Density fill grestore grestore} def +/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def +% +% PostScript Level 1 Pattern Fill routine for rectangles +% Usage: x y w h s a XX PatternFill +% x,y = lower left corner of box to be filled +% w,h = width and height of box +% a = angle in degrees between lines and x-axis +% XX = 0/1 for no/yes cross-hatch +% +/PatternFill {gsave /PFa [ 9 2 roll ] def + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse + clip + currentlinewidth 0.5 mul setlinewidth + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def + 0 0 M PFa 5 get rotate PFs -2 div dup translate + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 M 0 PFs V} for + 0 PFa 6 get ne { + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for + } if + stroke grestore} def +% +/languagelevel where + {pop languagelevel} {1} ifelse + 2 lt + {/InterpretLevel1 true def} + {/InterpretLevel1 Level1 def} + ifelse +% +% PostScript level 2 pattern fill definitions +% +/Level2PatternFill { +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} + bind def +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} +>> matrix makepattern +/Pat1 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} +>> matrix makepattern +/Pat2 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L + 8 8 L 8 0 L 0 0 L fill} +>> matrix makepattern +/Pat3 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L + 0 12 M 12 0 L stroke} +>> matrix makepattern +/Pat4 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L + 0 -4 M 12 8 L stroke} +>> matrix makepattern +/Pat5 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} +>> matrix makepattern +/Pat6 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} +>> matrix makepattern +/Pat7 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L + 12 0 M -4 8 L 12 4 M 0 10 L stroke} +>> matrix makepattern +/Pat8 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L + -4 0 M 12 8 L -4 4 M 8 10 L stroke} +>> matrix makepattern +/Pat9 exch def +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def +} def +% +% +%End of PostScript Level 2 code +% +/PatternBgnd { + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse +} def +% +% Substitute for Level 2 pattern fill codes with +% grayscale if Level 2 support is not selected. +% +/Level1PatternFill { +/Pattern1 {0.250 Density} bind def +/Pattern2 {0.500 Density} bind def +/Pattern3 {0.750 Density} bind def +/Pattern4 {0.125 Density} bind def +/Pattern5 {0.375 Density} bind def +/Pattern6 {0.625 Density} bind def +/Pattern7 {0.875 Density} bind def +} def +% +% Now test for support of Level 2 code +% +Level1 {Level1PatternFill} {Level2PatternFill} ifelse +% +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall +currentdict end definefont pop +Level1 SuppressPDFMark or +{} { +/SDict 10 dict def +systemdict /pdfmark known not { + userdict /pdfmark systemdict /cleartomark get put +} if +SDict begin [ + /Title (pointprocessscetchA.tex) + /Subject (gnuplot plot) + /Creator (gnuplot 4.6 patchlevel 4) + /Author (jan) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Sun Oct 26 14:09:12 2014) + /DOCINFO pdfmark +end +} ifelse +end +%%EndProlog +%%Page: 1 1 +gnudict begin +gsave +doclip +50 50 translate +0.050 0.050 scale +0 setgray +newpath +2.000 UL +LTb +LCb setrgbcolor +0.00 0.00 0.00 C 1.000 UP +LTb +LCb setrgbcolor +LTb +1.000 UL +LTb +gsave 6208 824 N 0 -32 V 121 32 V -121 32 V 0 -32 V 1 PolyFill +6208 824 M +0 -32 V +121 32 V +-121 32 V +0 -32 V +528 824 M +5680 0 V +stroke +2.000 UL +LTb +0.00 0.00 0.00 C 10.000 UL +LT0 +LC0 setrgbcolor +0.00 0.00 0.00 C 910 573 M +0 503 V +1412 573 M +0 503 V +2123 573 M +0 503 V +2413 573 M +0 503 V +2717 573 M +0 503 V +3167 573 M +0 503 V +4033 573 M +0 503 V +4650 573 M +0 503 V +5685 573 M +0 503 V +1.000 UP +stroke +2.000 UL +LTb +LCb setrgbcolor +0.00 0.00 0.00 C stroke +grestore +end +showpage +%%Trailer diff --git a/pointprocesses/lecture/pointprocessscetchA.gpt b/pointprocesses/lecture/pointprocessscetchA.gpt new file mode 100644 index 0000000..bace1a7 --- /dev/null +++ b/pointprocesses/lecture/pointprocessscetchA.gpt @@ -0,0 +1,62 @@ +set term epslatex size 11.4cm, 3cm +set out 'pointprocessscetchA.tex' + +set border 0 +set lmarg 4 +set rmarg 1 +set tmarg 1 +set bmarg 1 +set xrange [0:11] +unset xtics +set yrange [-0.7:1.8] +unset ytics +set label 1 at graph -0.07, graph 1.1 + +set arrow 1 from 0, 0.5 to 11, 0.5 head filled +set label 2 'Time' at 11, -0.3 center +set label 3 "$t_{1}$" at 0.724649, -0.6 center +set label 4 "$t_{2}$" at 1.67586, -0.6 center +set label 5 "$t_{3}$" at 3.02389, -0.6 center +set label 6 "$t_{4}$" at 3.57466, -0.6 center +set label 7 "$t_{5}$" at 4.15121, -0.6 center +set label 8 "$t_{6}$" at 5.00412, -0.6 center +set label 9 "$t_{7}$" at 6.64549, -0.6 center +set label 10 "$t_{8}$" at 7.81657, -0.6 center +set label 11 "$t_{9}$" at 9.77964, -0.6 center +plot '-' w l lt 1 lc rgb 'black' lw 10 +0.724649 0 +0.724649 1 + +1.67586 0 +1.67586 1 + +3.02389 0 +3.02389 1 + +3.57466 0 +3.57466 1 + +4.15121 0 +4.15121 1 + +5.00412 0 +5.00412 1 + +6.64549 0 +6.64549 1 + +7.81657 0 +7.81657 1 + +9.77964 0 +9.77964 1 +e +unset label 3 +unset label 4 +unset label 5 +unset label 6 +unset label 7 +unset label 8 +unset label 9 +unset label 10 +unset label 11 diff --git a/pointprocesses/lecture/pointprocessscetchA.pdf b/pointprocesses/lecture/pointprocessscetchA.pdf new file mode 100644 index 0000000..dcc5228 Binary files /dev/null and b/pointprocesses/lecture/pointprocessscetchA.pdf differ diff --git a/pointprocesses/lecture/pointprocessscetchA.tex b/pointprocesses/lecture/pointprocessscetchA.tex new file mode 100644 index 0000000..302b6a9 --- /dev/null +++ b/pointprocesses/lecture/pointprocessscetchA.tex @@ -0,0 +1,95 @@ +% GNUPLOT: LaTeX picture with Postscript +\begingroup + \makeatletter + \providecommand\color[2][]{% + \GenericError{(gnuplot) \space\space\space\@spaces}{% + Package color not loaded in conjunction with + terminal option `colourtext'% + }{See the gnuplot documentation for explanation.% + }{Either use 'blacktext' in gnuplot or load the package + color.sty in LaTeX.}% + \renewcommand\color[2][]{}% + }% + \providecommand\includegraphics[2][]{% + \GenericError{(gnuplot) \space\space\space\@spaces}{% + Package graphicx or graphics not loaded% + }{See the gnuplot documentation for explanation.% + }{The gnuplot epslatex terminal needs graphicx.sty or graphics.sty.}% + \renewcommand\includegraphics[2][]{}% + }% + \providecommand\rotatebox[2]{#2}% + \@ifundefined{ifGPcolor}{% + \newif\ifGPcolor + \GPcolortrue + }{}% + \@ifundefined{ifGPblacktext}{% + \newif\ifGPblacktext + \GPblacktexttrue + }{}% + % define a \g@addto@macro without @ in the name: + \let\gplgaddtomacro\g@addto@macro + % define empty templates for all commands taking text: + \gdef\gplbacktext{}% + \gdef\gplfronttext{}% + \makeatother + \ifGPblacktext + % no textcolor at all + \def\colorrgb#1{}% + \def\colorgray#1{}% + \else + % gray or color? + \ifGPcolor + \def\colorrgb#1{\color[rgb]{#1}}% + \def\colorgray#1{\color[gray]{#1}}% + \expandafter\def\csname LTw\endcsname{\color{white}}% + \expandafter\def\csname LTb\endcsname{\color{black}}% + \expandafter\def\csname LTa\endcsname{\color{black}}% + \expandafter\def\csname LT0\endcsname{\color[rgb]{1,0,0}}% + \expandafter\def\csname LT1\endcsname{\color[rgb]{0,1,0}}% + \expandafter\def\csname LT2\endcsname{\color[rgb]{0,0,1}}% + \expandafter\def\csname LT3\endcsname{\color[rgb]{1,0,1}}% + \expandafter\def\csname LT4\endcsname{\color[rgb]{0,1,1}}% + \expandafter\def\csname LT5\endcsname{\color[rgb]{1,1,0}}% + \expandafter\def\csname LT6\endcsname{\color[rgb]{0,0,0}}% + \expandafter\def\csname LT7\endcsname{\color[rgb]{1,0.3,0}}% + \expandafter\def\csname LT8\endcsname{\color[rgb]{0.5,0.5,0.5}}% + \else + % gray + \def\colorrgb#1{\color{black}}% + \def\colorgray#1{\color[gray]{#1}}% + \expandafter\def\csname LTw\endcsname{\color{white}}% + \expandafter\def\csname LTb\endcsname{\color{black}}% + \expandafter\def\csname LTa\endcsname{\color{black}}% + \expandafter\def\csname LT0\endcsname{\color{black}}% + \expandafter\def\csname LT1\endcsname{\color{black}}% + \expandafter\def\csname LT2\endcsname{\color{black}}% + \expandafter\def\csname LT3\endcsname{\color{black}}% + \expandafter\def\csname LT4\endcsname{\color{black}}% + \expandafter\def\csname LT5\endcsname{\color{black}}% + \expandafter\def\csname LT6\endcsname{\color{black}}% + \expandafter\def\csname LT7\endcsname{\color{black}}% + \expandafter\def\csname LT8\endcsname{\color{black}}% + \fi + \fi + \setlength{\unitlength}{0.0500bp}% + \begin{picture}(6462.00,1700.00)% + \gplgaddtomacro\gplbacktext{% + \csname LTb\endcsname% + \put(6329,421){\makebox(0,0){\strut{}Time}}% + \put(910,270){\makebox(0,0){\strut{}$t_{1}$}}% + \put(1412,270){\makebox(0,0){\strut{}$t_{2}$}}% + \put(2123,270){\makebox(0,0){\strut{}$t_{3}$}}% + \put(2413,270){\makebox(0,0){\strut{}$t_{4}$}}% + \put(2717,270){\makebox(0,0){\strut{}$t_{5}$}}% + \put(3167,270){\makebox(0,0){\strut{}$t_{6}$}}% + \put(4033,270){\makebox(0,0){\strut{}$t_{7}$}}% + \put(4650,270){\makebox(0,0){\strut{}$t_{8}$}}% + \put(5685,270){\makebox(0,0){\strut{}$t_{9}$}}% + }% + \gplgaddtomacro\gplfronttext{% + }% + \gplbacktext + \put(0,0){\includegraphics{pointprocessscetchA}}% + \gplfronttext + \end{picture}% +\endgroup diff --git a/pointprocesses/lecture/pointprocessscetchB.eps b/pointprocesses/lecture/pointprocessscetchB.eps new file mode 100644 index 0000000..d204109 --- /dev/null +++ b/pointprocesses/lecture/pointprocessscetchB.eps @@ -0,0 +1,736 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: pointprocessscetchB.tex +%%Creator: gnuplot 4.6 patchlevel 4 +%%CreationDate: Sun Oct 26 17:34:18 2014 +%%DocumentFonts: +%%BoundingBox: 50 50 373 237 +%%EndComments +%%BeginProlog +/gnudict 256 dict def +gnudict begin +% +% The following true/false flags may be edited by hand if desired. +% The unit line width and grayscale image gamma correction may also be changed. +% +/Color true def +/Blacktext true def +/Solid false def +/Dashlength 1 def +/Landscape false def +/Level1 false def +/Rounded true def +/ClipToBoundingBox false def +/SuppressPDFMark false def +/TransparentPatterns false def +/gnulinewidth 5.000 def +/userlinewidth gnulinewidth def +/Gamma 1.0 def +/BackgroundColor {-1.000 -1.000 -1.000} def +% +/vshift -73 def +/dl1 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if +} def +/dl2 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul add } if +} def +/hpt_ 31.5 def +/vpt_ 31.5 def +/hpt hpt_ def +/vpt vpt_ def +/doclip { + ClipToBoundingBox { + newpath 50 50 moveto 373 50 lineto 373 237 lineto 50 237 lineto closepath + clip + } if +} def +% +% Gnuplot Prolog Version 4.6 (September 2012) +% +%/SuppressPDFMark true def +% +/M {moveto} bind def +/L {lineto} bind def +/R {rmoveto} bind def +/V {rlineto} bind def +/N {newpath moveto} bind def +/Z {closepath} bind def +/C {setrgbcolor} bind def +/f {rlineto fill} bind def +/g {setgray} bind def +/Gshow {show} def % May be redefined later in the file to support UTF-8 +/vpt2 vpt 2 mul def +/hpt2 hpt 2 mul def +/Lshow {currentpoint stroke M 0 vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def +/BL {stroke userlinewidth 2 mul setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/AL {stroke userlinewidth 2 div setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/UL {dup gnulinewidth mul /userlinewidth exch def + dup 1 lt {pop 1} if 10 mul /udl exch def} def +/PL {stroke userlinewidth setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +3.8 setmiterlimit +% Default Line colors +/LCw {1 1 1} def +/LCb {0 0 0} def +/LCa {0 0 0} def +/LC0 {1 0 0} def +/LC1 {0 1 0} def +/LC2 {0 0 1} def +/LC3 {1 0 1} def +/LC4 {0 1 1} def +/LC5 {1 1 0} def +/LC6 {0 0 0} def +/LC7 {1 0.3 0} def +/LC8 {0.5 0.5 0.5} def +% Default Line Types +/LTw {PL [] 1 setgray} def +/LTb {BL [] LCb DL} def +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def +/LT0 {PL [] LC0 DL} def +/LT1 {PL [4 dl1 2 dl2] LC1 DL} def +/LT2 {PL [2 dl1 3 dl2] LC2 DL} def +/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def +/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def +/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def +/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def +/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def +/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def +/Dia {stroke [] 0 setdash 2 copy vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke + Pnt} def +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V + currentpoint stroke M + hpt neg vpt neg R hpt2 0 V stroke + } def +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke + Pnt} def +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M + hpt2 vpt2 neg V currentpoint stroke M + hpt2 neg 0 R hpt2 vpt2 V stroke} def +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke + Pnt} def +/Star {2 copy Pls Crs} def +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath fill} def +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath fill} def +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke + Pnt} def +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath fill} def +/DiaF {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath fill} def +/Pent {stroke [] 0 setdash 2 copy gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore Pnt} def +/PentF {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath fill grestore} def +/Circle {stroke [] 0 setdash 2 copy + hpt 0 360 arc stroke Pnt} def +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def +/C1 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + vpt 0 360 arc closepath} bind def +/C2 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C3 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C4 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C5 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc + 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc} bind def +/C6 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C7 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C8 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C9 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 450 arc closepath fill + vpt 0 360 arc closepath} bind def +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill + 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C11 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C12 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C13 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C14 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 360 arc closepath fill + vpt 0 360 arc} bind def +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto + neg 0 rlineto closepath} bind def +/Square {dup Rec} bind def +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill + Bsquare} bind def +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill + Bsquare} bind def +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def +/DiaE {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke} def +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke} def +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke} def +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke} def +/PentE {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore} def +/CircE {stroke [] 0 setdash + hpt 0 360 arc stroke} def +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def +/DiaW {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V Opaque stroke} def +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V Opaque stroke} def +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V Opaque stroke} def +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V Opaque stroke} def +/PentW {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + Opaque stroke grestore} def +/CircW {stroke [] 0 setdash + hpt 0 360 arc Opaque stroke} def +/BoxFill {gsave Rec 1 setgray fill grestore} def +/Density { + /Fillden exch def + currentrgbcolor + /ColB exch def /ColG exch def /ColR exch def + /ColR ColR Fillden mul Fillden sub 1 add def + /ColG ColG Fillden mul Fillden sub 1 add def + /ColB ColB Fillden mul Fillden sub 1 add def + ColR ColG ColB setrgbcolor} def +/BoxColFill {gsave Rec PolyFill} def +/PolyFill {gsave Density fill grestore grestore} def +/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def +% +% PostScript Level 1 Pattern Fill routine for rectangles +% Usage: x y w h s a XX PatternFill +% x,y = lower left corner of box to be filled +% w,h = width and height of box +% a = angle in degrees between lines and x-axis +% XX = 0/1 for no/yes cross-hatch +% +/PatternFill {gsave /PFa [ 9 2 roll ] def + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse + clip + currentlinewidth 0.5 mul setlinewidth + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def + 0 0 M PFa 5 get rotate PFs -2 div dup translate + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 M 0 PFs V} for + 0 PFa 6 get ne { + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for + } if + stroke grestore} def +% +/languagelevel where + {pop languagelevel} {1} ifelse + 2 lt + {/InterpretLevel1 true def} + {/InterpretLevel1 Level1 def} + ifelse +% +% PostScript level 2 pattern fill definitions +% +/Level2PatternFill { +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} + bind def +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} +>> matrix makepattern +/Pat1 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} +>> matrix makepattern +/Pat2 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L + 8 8 L 8 0 L 0 0 L fill} +>> matrix makepattern +/Pat3 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L + 0 12 M 12 0 L stroke} +>> matrix makepattern +/Pat4 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L + 0 -4 M 12 8 L stroke} +>> matrix makepattern +/Pat5 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} +>> matrix makepattern +/Pat6 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} +>> matrix makepattern +/Pat7 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L + 12 0 M -4 8 L 12 4 M 0 10 L stroke} +>> matrix makepattern +/Pat8 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L + -4 0 M 12 8 L -4 4 M 8 10 L stroke} +>> matrix makepattern +/Pat9 exch def +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def +} def +% +% +%End of PostScript Level 2 code +% +/PatternBgnd { + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse +} def +% +% Substitute for Level 2 pattern fill codes with +% grayscale if Level 2 support is not selected. +% +/Level1PatternFill { +/Pattern1 {0.250 Density} bind def +/Pattern2 {0.500 Density} bind def +/Pattern3 {0.750 Density} bind def +/Pattern4 {0.125 Density} bind def +/Pattern5 {0.375 Density} bind def +/Pattern6 {0.625 Density} bind def +/Pattern7 {0.875 Density} bind def +} def +% +% Now test for support of Level 2 code +% +Level1 {Level1PatternFill} {Level2PatternFill} ifelse +% +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall +currentdict end definefont pop +Level1 SuppressPDFMark or +{} { +/SDict 10 dict def +systemdict /pdfmark known not { + userdict /pdfmark systemdict /cleartomark get put +} if +SDict begin [ + /Title (pointprocessscetchB.tex) + /Subject (gnuplot plot) + /Creator (gnuplot 4.6 patchlevel 4) + /Author (jan) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Sun Oct 26 17:34:18 2014) + /DOCINFO pdfmark +end +} ifelse +end +%%EndProlog +%%Page: 1 1 +gnudict begin +gsave +doclip +50 50 translate +0.050 0.050 scale +0 setgray +newpath +2.000 UL +LTb +LCb setrgbcolor +0.00 0.00 0.00 C 1.000 UP +LTb +LCb setrgbcolor +LTb +1.000 UL +LTb +gsave 6208 3165 N 0 -32 V 121 32 V -121 32 V 0 -32 V 1 PolyFill +6208 3165 M +0 -32 V +121 32 V +-121 32 V +0 -32 V +-5680 0 R +5680 0 V +stroke +2.000 UL +LTb +0.00 0.00 0.00 C 10.000 UL +LT0 +LC0 setrgbcolor +0.00 0.00 0.00 C 910 3029 M +0 272 V +502 -272 R +0 272 V +711 -272 R +0 272 V +290 -272 R +0 272 V +304 -272 R +0 272 V +450 -272 R +0 272 V +866 -272 R +0 272 V +617 -272 R +0 272 V +5685 3029 M +0 272 V +1.000 UP +stroke +2.000 UL +LTb +LCb setrgbcolor +0.00 0.00 0.00 C 2.000 UL +LTb +LCb setrgbcolor +0.00 0.00 0.00 C 1.000 UP +LTb +LCb setrgbcolor +LTb +1.000 UL +LTb +gsave 6208 2043 N 0 -32 V 121 32 V -121 32 V 0 -32 V 1 PolyFill +6208 2043 M +0 -32 V +121 32 V +-121 32 V +0 -32 V +-5680 0 R +5680 0 V +1291 1929 M +121 32 V +-121 32 V +-260 -64 R +-121 32 V +121 32 V +910 1961 M +502 0 V +590 -32 R +121 32 V +-121 32 V +-469 -64 R +-121 32 V +121 32 V +-121 -32 R +711 0 V +206 -22 R +84 22 V +-84 22 V +-122 -44 R +-84 22 V +84 22 V +-84 -22 R +290 0 V +216 -23 R +88 23 V +-88 23 V +-128 -46 R +-88 23 V +88 23 V +-88 -23 R +304 0 V +329 -32 R +121 32 V +-121 32 V +-208 -64 R +-121 32 V +121 32 V +-121 -32 R +450 0 V +745 -32 R +121 32 V +-121 32 V +-624 -64 R +-121 32 V +121 32 V +-121 -32 R +866 0 V +496 -32 R +121 32 V +-121 32 V +-375 -64 R +-121 32 V +121 32 V +-121 -32 R +617 0 V +914 -32 R +121 32 V +-121 32 V +-793 -64 R +-121 32 V +121 32 V +-121 -32 R +1035 0 V +stroke +2.000 UL +LTb +0.00 0.00 0.00 C 10.000 UL +LT0 +LC0 setrgbcolor +0.00 0.00 0.00 C 910 1907 M +0 272 V +502 -272 R +0 272 V +711 -272 R +0 272 V +290 -272 R +0 272 V +304 -272 R +0 272 V +450 -272 R +0 272 V +866 -272 R +0 272 V +617 -272 R +0 272 V +5685 1907 M +0 272 V +1.000 UP +stroke +2.000 UL +LTb +LCb setrgbcolor +0.00 0.00 0.00 C 2.000 UL +LTb +LCb setrgbcolor +0.00 0.00 0.00 C 528 268 M +-63 0 V +stroke +LTb +LCb setrgbcolor +0.00 0.00 0.00 C 528 460 M +-63 0 V +stroke +LTb +LCb setrgbcolor +0.00 0.00 0.00 C 528 652 M +-63 0 V +stroke +LTb +LCb setrgbcolor +0.00 0.00 0.00 C 528 844 M +-63 0 V +stroke +LTb +LCb setrgbcolor +0.00 0.00 0.00 C 528 1036 M +-63 0 V +stroke +LTb +LCb setrgbcolor +0.00 0.00 0.00 C 528 1228 M +-63 0 V +stroke +LTb +LCb setrgbcolor +0.00 0.00 0.00 C 2.000 UL +LTb +LCb setrgbcolor +0.00 0.00 0.00 C 528 1276 M +528 220 L +5801 0 R +0 1056 R +-5801 0 R +1.000 UP +stroke +LTb +LCb setrgbcolor +LTb +1.000 UL +LTb +gsave 6208 268 N 0 -32 V 121 32 V -121 32 V 0 -32 V 1 PolyFill +6208 268 M +0 -32 V +121 32 V +-121 32 V +0 -32 V +528 268 M +5680 0 V +stroke +2.000 UL +LTb +0.00 0.00 0.00 C 3.000 UL +LT0 +LC0 setrgbcolor +0.00 0.00 0.00 C 528 268 M +382 0 V +0 96 R +502 0 V +0 96 R +711 0 V +0 96 R +290 0 V +0 96 R +304 0 V +0 96 R +450 0 V +0 96 R +866 0 V +0 96 R +617 0 V +0 96 R +1035 0 V +0 96 R +533 0 V +1.500 UP +stroke +2.000 UL +LT0 +LC0 setrgbcolor +0.00 0.00 0.00 C 910 268 CircleF +1412 364 CircleF +2123 460 CircleF +2413 556 CircleF +2717 652 CircleF +3167 748 CircleF +4033 844 CircleF +4650 940 CircleF +5685 1036 CircleF +1.000 UP +2.000 UL +LT0 +LC0 setrgbcolor +1.00 1.00 1.00 C 910 268 CircleF +1412 364 CircleF +2123 460 CircleF +2413 556 CircleF +2717 652 CircleF +3167 748 CircleF +4033 844 CircleF +4650 940 CircleF +5685 1036 CircleF +1.500 UP +2.000 UL +LT0 +LC0 setrgbcolor +0.00 0.00 0.00 C 910 364 CircleF +1412 460 CircleF +2123 556 CircleF +2413 652 CircleF +2717 748 CircleF +3167 844 CircleF +4033 940 CircleF +4650 1036 CircleF +5685 1132 CircleF +1.000 UP +2.000 UL +LTb +LCb setrgbcolor +0.00 0.00 0.00 C stroke +grestore +end +showpage +%%Trailer diff --git a/pointprocesses/lecture/pointprocessscetchB.gpt b/pointprocesses/lecture/pointprocessscetchB.gpt new file mode 100644 index 0000000..e1cda52 --- /dev/null +++ b/pointprocesses/lecture/pointprocessscetchB.gpt @@ -0,0 +1,204 @@ +set out 'pointprocessscetchB.tex' + +set border 0 +set lmarg 4 +set rmarg 1 +set tmarg 1 +set bmarg 1 +set xrange [0:11] +unset xtics +set yrange [-0.7:1.8] +unset ytics +set label 1 at graph -0.07, graph 1.1 + +set multiplot + +set origin 0, 0.7 +set size 1, 0.3 +set label 1 '\normalsize Event times $\{t_i\}$' +set arrow 1 from 0, 0.5 to 11, 0.5 head filled +set label 2 'Time' at 11, -0.3 center +set label 3 "$t_{1}$" at 0.724649, -0.6 center +set label 4 "$t_{2}$" at 1.67586, -0.6 center +set label 5 "$t_{3}$" at 3.02389, -0.6 center +set label 6 "$t_{4}$" at 3.57466, -0.6 center +set label 7 "$t_{5}$" at 4.15121, -0.6 center +set label 8 "$t_{6}$" at 5.00412, -0.6 center +set label 9 "$t_{7}$" at 6.64549, -0.6 center +set label 10 "$t_{8}$" at 7.81657, -0.6 center +set label 11 "$t_{9}$" at 9.77964, -0.6 center +plot '-' w l lt 1 lc rgb 'black' lw 10 +0.724649 0 +0.724649 1 + +1.67586 0 +1.67586 1 + +3.02389 0 +3.02389 1 + +3.57466 0 +3.57466 1 + +4.15121 0 +4.15121 1 + +5.00412 0 +5.00412 1 + +6.64549 0 +6.64549 1 + +7.81657 0 +7.81657 1 + +9.77964 0 +9.77964 1 +e +unset label 3 +unset label 4 +unset label 5 +unset label 6 +unset label 7 +unset label 8 +unset label 9 +unset label 10 +unset label 11 + +set origin 0, 0.4 +set label 1 '\normalsize Intervals $\{T_i\}, \; T_i = t_{i+1} - t_i$' +set label 3 "$T_{1}$" at 1.20025, -0.5 center +set arrow 3 from 0.724649, 0.2 to 1.67586, 0.2 heads +set label 4 "$T_{2}$" at 2.34987, -0.5 center +set arrow 4 from 1.67586, 0.2 to 3.02389, 0.2 heads +set label 5 "$T_{3}$" at 3.29927, -0.5 center +set arrow 5 from 3.02389, 0.2 to 3.57466, 0.2 heads +set label 6 "$T_{4}$" at 3.86293, -0.5 center +set arrow 6 from 3.57466, 0.2 to 4.15121, 0.2 heads +set label 7 "$T_{5}$" at 4.57767, -0.5 center +set arrow 7 from 4.15121, 0.2 to 5.00412, 0.2 heads +set label 8 "$T_{6}$" at 5.82481, -0.5 center +set arrow 8 from 5.00412, 0.2 to 6.64549, 0.2 heads +set label 9 "$T_{7}$" at 7.23103, -0.5 center +set arrow 9 from 6.64549, 0.2 to 7.81657, 0.2 heads +set label 10 "$T_{8}$" at 8.79811, -0.5 center +set arrow 10 from 7.81657, 0.2 to 9.77964, 0.2 heads +plot '-' w l lt 1 lc rgb 'black' lw 10 +0.724649 0 +0.724649 1 + +1.67586 0 +1.67586 1 + +3.02389 0 +3.02389 1 + +3.57466 0 +3.57466 1 + +4.15121 0 +4.15121 1 + +5.00412 0 +5.00412 1 + +6.64549 0 +6.64549 1 + +7.81657 0 +7.81657 1 + +9.77964 0 +9.77964 1 +e +unset label 3 +unset label 4 +unset label 5 +unset label 6 +unset label 7 +unset label 8 +unset label 9 +unset label 10 +unset arrow 3 +unset arrow 4 +unset arrow 5 +unset arrow 6 +unset arrow 7 +unset arrow 8 +unset arrow 9 +unset arrow 10 + +set origin 0, 0 +set size 1, 0.4 +set border 2 +set yrange [-0.5:10.5] +set ytics 2 nomirror out +set arrow 1 from 0, 0.0 to 11, 0.0 head filled +set label 2 'Time' at 11, -2.2 center +set label 1 '\normalsize Event counts $\{ n_i \}$' at graph -0.07, graph 1.2 +plot '-' w l lt 1 lc rgb 'black' lw 3, \ + '-' w p lt 1 lc rgb 'black' pt 7 ps 1.5 lw 2, \ + '-' w p lt 1 lc rgb 'white' pt 7 ps 1.0 lw 2, \ + '-' w p lt 1 lc rgb 'black' pt 7 ps 1.5 lw 2 +0 0 +0.724649 0 + +0.724649 1 +1.67586 1 + +1.67586 2 +3.02389 2 + +3.02389 3 +3.57466 3 + +3.57466 4 +4.15121 4 + +4.15121 5 +5.00412 5 + +5.00412 6 +6.64549 6 + +6.64549 7 +7.81657 7 + +7.81657 8 +9.77964 8 + +9.77964 9 +10.7899 9 +e +0.724649 0 +1.67586 1 +3.02389 2 +3.57466 3 +4.15121 4 +5.00412 5 +6.64549 6 +7.81657 7 +9.77964 8 +e +0.724649 0 +1.67586 1 +3.02389 2 +3.57466 3 +4.15121 4 +5.00412 5 +6.64549 6 +7.81657 7 +9.77964 8 +e +0.724649 1 +1.67586 2 +3.02389 3 +3.57466 4 +4.15121 5 +5.00412 6 +6.64549 7 +7.81657 8 +9.77964 9 +e + +unset multiplot diff --git a/pointprocesses/lecture/pointprocessscetchB.pdf b/pointprocesses/lecture/pointprocessscetchB.pdf new file mode 100644 index 0000000..a4c7e8c Binary files /dev/null and b/pointprocesses/lecture/pointprocessscetchB.pdf differ diff --git a/pointprocesses/lecture/pointprocessscetchB.tex b/pointprocesses/lecture/pointprocessscetchB.tex new file mode 100644 index 0000000..14803c3 --- /dev/null +++ b/pointprocesses/lecture/pointprocessscetchB.tex @@ -0,0 +1,130 @@ +% GNUPLOT: LaTeX picture with Postscript +\begingroup + \makeatletter + \providecommand\color[2][]{% + \GenericError{(gnuplot) \space\space\space\@spaces}{% + Package color not loaded in conjunction with + terminal option `colourtext'% + }{See the gnuplot documentation for explanation.% + }{Either use 'blacktext' in gnuplot or load the package + color.sty in LaTeX.}% + \renewcommand\color[2][]{}% + }% + \providecommand\includegraphics[2][]{% + \GenericError{(gnuplot) \space\space\space\@spaces}{% + Package graphicx or graphics not loaded% + }{See the gnuplot documentation for explanation.% + }{The gnuplot epslatex terminal needs graphicx.sty or graphics.sty.}% + \renewcommand\includegraphics[2][]{}% + }% + \providecommand\rotatebox[2]{#2}% + \@ifundefined{ifGPcolor}{% + \newif\ifGPcolor + \GPcolortrue + }{}% + \@ifundefined{ifGPblacktext}{% + \newif\ifGPblacktext + \GPblacktexttrue + }{}% + % define a \g@addto@macro without @ in the name: + \let\gplgaddtomacro\g@addto@macro + % define empty templates for all commands taking text: + \gdef\gplbacktext{}% + \gdef\gplfronttext{}% + \makeatother + \ifGPblacktext + % no textcolor at all + \def\colorrgb#1{}% + \def\colorgray#1{}% + \else + % gray or color? + \ifGPcolor + \def\colorrgb#1{\color[rgb]{#1}}% + \def\colorgray#1{\color[gray]{#1}}% + \expandafter\def\csname LTw\endcsname{\color{white}}% + \expandafter\def\csname LTb\endcsname{\color{black}}% + \expandafter\def\csname LTa\endcsname{\color{black}}% + \expandafter\def\csname LT0\endcsname{\color[rgb]{1,0,0}}% + \expandafter\def\csname LT1\endcsname{\color[rgb]{0,1,0}}% + \expandafter\def\csname LT2\endcsname{\color[rgb]{0,0,1}}% + \expandafter\def\csname LT3\endcsname{\color[rgb]{1,0,1}}% + \expandafter\def\csname LT4\endcsname{\color[rgb]{0,1,1}}% + \expandafter\def\csname LT5\endcsname{\color[rgb]{1,1,0}}% + \expandafter\def\csname LT6\endcsname{\color[rgb]{0,0,0}}% + \expandafter\def\csname LT7\endcsname{\color[rgb]{1,0.3,0}}% + \expandafter\def\csname LT8\endcsname{\color[rgb]{0.5,0.5,0.5}}% + \else + % gray + \def\colorrgb#1{\color{black}}% + \def\colorgray#1{\color[gray]{#1}}% + \expandafter\def\csname LTw\endcsname{\color{white}}% + \expandafter\def\csname LTb\endcsname{\color{black}}% + \expandafter\def\csname LTa\endcsname{\color{black}}% + \expandafter\def\csname LT0\endcsname{\color{black}}% + \expandafter\def\csname LT1\endcsname{\color{black}}% + \expandafter\def\csname LT2\endcsname{\color{black}}% + \expandafter\def\csname LT3\endcsname{\color{black}}% + \expandafter\def\csname LT4\endcsname{\color{black}}% + \expandafter\def\csname LT5\endcsname{\color{black}}% + \expandafter\def\csname LT6\endcsname{\color{black}}% + \expandafter\def\csname LT7\endcsname{\color{black}}% + \expandafter\def\csname LT8\endcsname{\color{black}}% + \fi + \fi + \setlength{\unitlength}{0.0500bp}% + \begin{picture}(6462.00,3740.00)% + \gplgaddtomacro\gplbacktext{% + \csname LTb\endcsname% + \put(122,3587){\makebox(0,0)[l]{\strut{}\normalsize Event times $\{t_i\}$}}% + \put(6329,2947){\makebox(0,0){\strut{}Time}}% + \put(910,2865){\makebox(0,0){\strut{}$t_{1}$}}% + \put(1412,2865){\makebox(0,0){\strut{}$t_{2}$}}% + \put(2123,2865){\makebox(0,0){\strut{}$t_{3}$}}% + \put(2413,2865){\makebox(0,0){\strut{}$t_{4}$}}% + \put(2717,2865){\makebox(0,0){\strut{}$t_{5}$}}% + \put(3167,2865){\makebox(0,0){\strut{}$t_{6}$}}% + \put(4033,2865){\makebox(0,0){\strut{}$t_{7}$}}% + \put(4650,2865){\makebox(0,0){\strut{}$t_{8}$}}% + \put(5685,2865){\makebox(0,0){\strut{}$t_{9}$}}% + }% + \gplgaddtomacro\gplfronttext{% + }% + \gplgaddtomacro\gplbacktext{% + \csname LTb\endcsname% + \put(122,2465){\makebox(0,0)[l]{\strut{}\normalsize Intervals $\{T_i\}, \; T_i = t_{i+1} - t_i$}}% + \put(6329,1825){\makebox(0,0){\strut{}Time}}% + \put(1161,1770){\makebox(0,0){\strut{}$T_{1}$}}% + \put(1767,1770){\makebox(0,0){\strut{}$T_{2}$}}% + \put(2268,1770){\makebox(0,0){\strut{}$T_{3}$}}% + \put(2565,1770){\makebox(0,0){\strut{}$T_{4}$}}% + \put(2942,1770){\makebox(0,0){\strut{}$T_{5}$}}% + \put(3600,1770){\makebox(0,0){\strut{}$T_{6}$}}% + \put(4341,1770){\makebox(0,0){\strut{}$T_{7}$}}% + \put(5168,1770){\makebox(0,0){\strut{}$T_{8}$}}% + }% + \gplgaddtomacro\gplfronttext{% + }% + \gplgaddtomacro\gplbacktext{% + \colorrgb{0.00,0.00,0.00}% + \put(333,268){\makebox(0,0)[r]{\strut{}$0$}}% + \colorrgb{0.00,0.00,0.00}% + \put(333,460){\makebox(0,0)[r]{\strut{}$2$}}% + \colorrgb{0.00,0.00,0.00}% + \put(333,652){\makebox(0,0)[r]{\strut{}$4$}}% + \colorrgb{0.00,0.00,0.00}% + \put(333,844){\makebox(0,0)[r]{\strut{}$6$}}% + \colorrgb{0.00,0.00,0.00}% + \put(333,1036){\makebox(0,0)[r]{\strut{}$8$}}% + \colorrgb{0.00,0.00,0.00}% + \put(333,1228){\makebox(0,0)[r]{\strut{}$10$}}% + \csname LTb\endcsname% + \put(122,1487){\makebox(0,0)[l]{\strut{}\normalsize Event counts $\{ n_i \}$}}% + \put(6329,57){\makebox(0,0){\strut{}Time}}% + }% + \gplgaddtomacro\gplfronttext{% + }% + \gplbacktext + \put(0,0){\includegraphics{pointprocessscetchB}}% + \gplfronttext + \end{picture}% +\endgroup diff --git a/pointprocesses/lecture/poissoncounthist100hz100ms.pdf b/pointprocesses/lecture/poissoncounthist100hz100ms.pdf new file mode 100644 index 0000000..a120ecf Binary files /dev/null and b/pointprocesses/lecture/poissoncounthist100hz100ms.pdf differ diff --git a/pointprocesses/lecture/poissoncounthist100hz10ms.pdf b/pointprocesses/lecture/poissoncounthist100hz10ms.pdf new file mode 100644 index 0000000..4a9615c Binary files /dev/null and b/pointprocesses/lecture/poissoncounthist100hz10ms.pdf differ diff --git a/pointprocesses/lecture/poissoncounthistdist100hz100ms.pdf b/pointprocesses/lecture/poissoncounthistdist100hz100ms.pdf new file mode 100644 index 0000000..aa25500 Binary files /dev/null and b/pointprocesses/lecture/poissoncounthistdist100hz100ms.pdf differ diff --git a/pointprocesses/lecture/poissoncounthistdist100hz10ms.pdf b/pointprocesses/lecture/poissoncounthistdist100hz10ms.pdf new file mode 100644 index 0000000..746f30b Binary files /dev/null and b/pointprocesses/lecture/poissoncounthistdist100hz10ms.pdf differ diff --git a/pointprocesses/lecture/poissonfano100hz.pdf b/pointprocesses/lecture/poissonfano100hz.pdf new file mode 100644 index 0000000..c25dd3c Binary files /dev/null and b/pointprocesses/lecture/poissonfano100hz.pdf differ diff --git a/pointprocesses/lecture/poissonisih100hz.pdf b/pointprocesses/lecture/poissonisih100hz.pdf new file mode 100644 index 0000000..0dd161d Binary files /dev/null and b/pointprocesses/lecture/poissonisih100hz.pdf differ diff --git a/pointprocesses/lecture/poissonisihexp100hz.pdf b/pointprocesses/lecture/poissonisihexp100hz.pdf new file mode 100644 index 0000000..68df4cf Binary files /dev/null and b/pointprocesses/lecture/poissonisihexp100hz.pdf differ diff --git a/pointprocesses/lecture/poissonisihexp20hz.pdf b/pointprocesses/lecture/poissonisihexp20hz.pdf new file mode 100644 index 0000000..20b79c1 Binary files /dev/null and b/pointprocesses/lecture/poissonisihexp20hz.pdf differ diff --git a/pointprocesses/lecture/poissonraster100hz.pdf b/pointprocesses/lecture/poissonraster100hz.pdf new file mode 100644 index 0000000..24a9b7e Binary files /dev/null and b/pointprocesses/lecture/poissonraster100hz.pdf differ diff --git a/pointprocesses/lecture/poissonreturnmap100hz.pdf b/pointprocesses/lecture/poissonreturnmap100hz.pdf new file mode 100644 index 0000000..30991e9 Binary files /dev/null and b/pointprocesses/lecture/poissonreturnmap100hz.pdf differ diff --git a/pointprocesses/lecture/poissonserial100hz.pdf b/pointprocesses/lecture/poissonserial100hz.pdf new file mode 100644 index 0000000..ff667d9 Binary files /dev/null and b/pointprocesses/lecture/poissonserial100hz.pdf differ diff --git a/pointprocesses/lecture/raster.pdf b/pointprocesses/lecture/raster.pdf new file mode 100644 index 0000000..a20fa0e Binary files /dev/null and b/pointprocesses/lecture/raster.pdf differ diff --git a/pointprocesses/lecture/thumbs.pdf b/pointprocesses/lecture/thumbs.pdf new file mode 100644 index 0000000..61cb4e6 Binary files /dev/null and b/pointprocesses/lecture/thumbs.pdf differ diff --git a/pointprocesses/lecture/whitestyles.gp b/pointprocesses/lecture/whitestyles.gp new file mode 100644 index 0000000..1eeb255 --- /dev/null +++ b/pointprocesses/lecture/whitestyles.gp @@ -0,0 +1,67 @@ +set tics scale 0.8 +set tics out +set format '$%g$' +unset grid +unset key + +# on white background: +set style line 1 lt -1 lc rgb "black" lw 2 # border +set border back ls 1 +set style line 2 lt 1 lc rgb "black" lw 4 pt 7 ps 2 # thick line +set style line 3 lt 1 lc rgb "black" lw 2 # thin line +set style line 4 lt 3 lc rgb "black" lw 1 # grid line + +set style line 10 lt 1 lc rgb "#00DD00" lw 6 # stimulus thick, AM +set style line 11 lt 1 lc rgb "#00DD00" lw 3 # stimulus thin, AM +set style line 15 lt 1 lc rgb "black" lw 15 # stimulus bar + +set style line 20 lt 1 lc rgb "yellow" lw 4 # thin spikes cell 1 +set style line 21 lt 1 lc rgb "orange" lw 4 # thin spikes cell 2 +set style line 22 lt 1 lc rgb "yellow" lw 6 # thick spikes cell 1 +set style line 23 lt 1 lc rgb "orange" lw 6 # thick spikes cell 2 +set style line 24 lt 1 lc rgb "blue" lw 22 # big sync spikes +set style line 25 lt 1 lc rgb "blue" lw 6 # thick sync spikes +set style line 26 lt 1 lc rgb "orange" lw 4 # all spikes + +set style line 30 lt 1 lc rgb "dark-red" lw 6 pt 7 ps 2 # firing rate 1 thick +set style line 31 lt 1 lc rgb "red" lw 6 pt 7 ps 2 # firing rate 2 thick +set style line 32 lt 1 lc rgb "orange" lw 6 pt 7 ps 2 # firing rate 3 thick +set style line 33 lt 1 lc rgb "blue" lw 6 pt 7 ps 2 # firing rate 4 thick +set style line 34 lt 1 lc rgb "gray" lw 6 # firing rate gray thick +set style line 35 lt 1 lc rgb "dark-red" lw 3 pt 7 ps 0.7 # firing rate 1 thin +set style line 36 lt 1 lc rgb "red" lw 3 # firing rate 2 thin +set style line 37 lt 1 lc rgb "orange" lw 3 # firing rate 3 thin +set style line 38 lt 1 lc rgb "blue" lw 3 # firing rate 4 thin +set style line 39 lt 1 lc rgb "gray" lw 3 # firing rate gray thin + +set style line 40 lt 1 lc rgb "green" lw 6 pt 5 ps 2 # onset f-I curve thick +set style line 41 lt 1 lc rgb "green" lw 3 pt 5 ps 2 # onset f-I curve thin +set style line 42 lt 1 lc rgb "red" lw 6 pt 7 ps 2 # steady-state f-I curve thick +set style line 43 lt 1 lc rgb "red" lw 3 pt 7 ps 2 # steady-state f-I curve thin +set style line 44 lt 1 lc rgb "blue" lw 6 pt 9 ps 2 # adapted f-I curve thick +set style line 45 lt 1 lc rgb "blue" lw 3 pt 9 ps 2 # adapted f-I curve thin +set style line 47 lt 1 lc rgb "cyan" lw 6 # adaptation level thick +set style line 48 lt 1 lc rgb "cyan" lw 3 # adaptation level thin +set style line 49 lt 1 lc rgb "yellow" lw 3 pt 7 ps 4 # current adaptation point + +set style line 50 lt 1 lc rgb "dark-red" lw 4 # membrane voltage 1 +set style line 51 lt 1 lc rgb "red" lw 4 # membrane voltage 2 +set style line 52 lt 1 lc rgb "orange" lw 4 # membrane voltage 3 +set style line 55 lt 1 lc rgb "orange" lw 4 # nerve potential + +set style line 60 lt 1 lc rgb "blue" lw 4 # gating variable +set style line 61 lt 1 lc rgb "cyan" lw 4 # gating variable average + +set style line 70 lt 1 lc rgb "red" lw 4 # ionic current +set style line 71 lt 1 lc rgb "orange" lw 4 # ionic current average + +set style line 80 lt 1 lc rgb "#77FFFF" lw 4 pt 13 ps 2.4# baseline +set style line 81 lt 1 lc rgb "#FF5533" lw 4 pt 9 ps 2.8 # beat +set style line 82 lt 1 lc rgb "yellow" lw 4 pt 7 ps 2.4 # chirp +set style line 83 lt 1 lc rgb "#FF7700" lw 4 pt 11 ps 2.8# beat shuffled +set style line 84 lt 1 lc rgb "#FFAA00" lw 4 pt 5 ps 2.2 # chirp shuffled + +set style line 90 lt 1 lc rgb "#77FFFF" lw 2 # EOD thin +set style line 91 lt 1 lc rgb "#77FFFF" lw 4 # EOD thick + +set term epslatex input color dashed rounded size 11.4cm, 6.6cm diff --git a/pointprocesses/resources/Daley2003-IntroductionToTheTheoryOfPointProcesses.pdf b/pointprocesses/resources/Daley2003-IntroductionToTheTheoryOfPointProcesses.pdf new file mode 100644 index 0000000..c93ace1 Binary files /dev/null and b/pointprocesses/resources/Daley2003-IntroductionToTheTheoryOfPointProcesses.pdf differ diff --git a/pointprocesses/resources/Eden2003-IntroductionToPointProcesses.pdf b/pointprocesses/resources/Eden2003-IntroductionToPointProcesses.pdf new file mode 100644 index 0000000..5a193da Binary files /dev/null and b/pointprocesses/resources/Eden2003-IntroductionToPointProcesses.pdf differ diff --git a/resources/Mallot2014-DatAnal.pdf b/resources/Mallot2014-DatAnal.pdf new file mode 100644 index 0000000..92c2ef8 Binary files /dev/null and b/resources/Mallot2014-DatAnal.pdf differ diff --git a/resources/Nieder2013-Matlab_I_Tutorial.pdf b/resources/Nieder2013-Matlab_I_Tutorial.pdf new file mode 100644 index 0000000..1f18e1d Binary files /dev/null and b/resources/Nieder2013-Matlab_I_Tutorial.pdf differ diff --git a/resources/beautifulplots.txt b/resources/beautifulplots.txt new file mode 100644 index 0000000..e39588c --- /dev/null +++ b/resources/beautifulplots.txt @@ -0,0 +1 @@ +http://www.randalolson.com/2014/06/28/how-to-make-beautiful-data-visualizations-in-python-with-matplotlib/ \ No newline at end of file