OpenCores
URL https://opencores.org/ocsvn/rs232_syscon/rs232_syscon/trunk

Subversion Repositories rs232_syscon

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 7 to Rev 8
    Reverse comparison

Rev 7 → Rev 8

/rs232_syscon/trunk/source_rs232_syscon_showcase_VHDL.zip Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream
rs232_syscon/trunk/source_rs232_syscon_showcase_VHDL.zip Property changes : Deleted: svn:mime-type ## -1 +0,0 ## -application/octet-stream \ No newline at end of property Index: rs232_syscon/trunk/VHDL/async_syscon_pack.vhd =================================================================== --- rs232_syscon/trunk/VHDL/async_syscon_pack.vhd (nonexistent) +++ rs232_syscon/trunk/VHDL/async_syscon_pack.vhd (revision 8) @@ -0,0 +1,1240 @@ +-------------------------------------------------------------------------- +-- Package of async_syscon components +-- + +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.NUMERIC_STD.ALL; + +package async_syscon_pack is + + -- A system controller with an 8-bit parallel ASCII interface + component ascii_syscon + generic ( + ADR_DIGITS : natural; -- # of hex digits for address + DAT_DIGITS : natural; -- # of hex digits for data + QTY_DIGITS : natural; -- # of hex digits for quantity + CMD_BUFFER_SIZE : natural; -- # of chars in the command buffer + WATCHDOG_VALUE : natural; -- # of sys_clks before ack is expected + DISPLAY_FIELDS : natural -- # of fields/line + ); + port ( + + sys_rst_n : in std_logic; + sys_clk : in std_logic; + sys_clk_en : in std_logic; + + -- Parallel ASCII I/O + cmd_char_i : in unsigned(7 downto 0); + cmd_we_i : in std_logic; + cmd_ack_o : out std_logic; + cmd_echo_o : out std_logic; + resp_char_o : out unsigned(7 downto 0); + resp_cyc_o : out std_logic; + resp_ack_i : in std_logic; + cmd_done_o : out std_logic; + + -- Master Bus IO + master_bg_i : in std_logic; + master_adr_i : in unsigned(4*ADR_DIGITS-1 downto 0); + master_dat_i : in unsigned(4*DAT_DIGITS-1 downto 0); + master_dat_o : out unsigned(4*DAT_DIGITS-1 downto 0); + master_stb_i : in std_logic; + master_we_i : in std_logic; + master_br_o : out std_logic; + + -- System Bus IO + ack_i : in std_logic; + err_i : in std_logic; + dat_i : in unsigned(4*DAT_DIGITS-1 downto 0); + dat_o : out unsigned(4*DAT_DIGITS-1 downto 0); + rst_o : out std_logic; + stb_o : out std_logic; + cyc_o : out std_logic; + adr_o : out unsigned(4*ADR_DIGITS-1 downto 0); + we_o : out std_logic + ); + end component; + + -- ascii_syscon mounted with a UART interface + component async_syscon + generic ( + ECHO_COMMANDS : natural; -- set nonzero to echo back command characters + ADR_DIGITS : natural; -- # of hex digits for address + DAT_DIGITS : natural; -- # of hex digits for data + QTY_DIGITS : natural; -- # of hex digits for quantity + CMD_BUFFER_SIZE : natural; -- # of chars in the command buffer + WATCHDOG_VALUE : natural; -- # of sys_clks before ack is expected + DISPLAY_FIELDS : natural -- # of fields/line + ); + port ( + + sys_rst_n : in std_logic; + sys_clk : in std_logic; + sys_clk_en : in std_logic; + + -- rate and parity + parity_i : in unsigned(1 downto 0); -- 0=none, 1=even, 2=odd + baud_clk_i : in std_logic; -- At 1x the desired baud rate, can be squarewave or pulses. + baud_lock_i : in std_logic; -- '1' Indicates baud clock is stable and ready. + + -- Serial IO + cmd_i : in std_logic; + resp_o : out std_logic; + cmd_done_o : out std_logic; + + -- Master Bus IO + master_bg_i : in std_logic; + master_adr_i : in unsigned(4*ADR_DIGITS-1 downto 0); + master_dat_i : in unsigned(4*DAT_DIGITS-1 downto 0); + master_dat_o : out unsigned(4*DAT_DIGITS-1 downto 0); + master_stb_i : in std_logic; + master_we_i : in std_logic; + master_br_o : out std_logic; + + -- System Bus IO + ack_i : in std_logic; + err_i : in std_logic; + dat_i : in unsigned(4*DAT_DIGITS-1 downto 0); + dat_o : out unsigned(4*DAT_DIGITS-1 downto 0); + rst_o : out std_logic; + stb_o : out std_logic; + cyc_o : out std_logic; + adr_o : out unsigned(4*ADR_DIGITS-1 downto 0); + we_o : out std_logic + ); + end component; + +end async_syscon_pack; + +package body async_syscon_pack is +end async_syscon_pack; + +--------------------------------------------------------------------------------------- +-- +-- Author: John Clayton +-- Date : Dec. 27, 2013 +-- Update: 12/27/13 copied async_syscon module, removed the serial interface. +-- 02/05/14 Added line feed as a whitespace character, to +-- char_is_whitespace. +-- 02/06/14 Made resp_cyc a direct function of the state machine state. +-- This allows it to be asserted even when resp_ack_i is tied +-- to '1' all the time... +-- 02/13/14 Made a slight enhancement to the processing of comments. +-- Previously, all comments were treated as "full line" +-- comments, causing any valid commands preceding the +-- comment to be ignored, since the entire line was being +-- ignored. I realized that a very small value +-- check on cmd_ptr could differentiate between full line +-- comments, and ones for which there might actually be +-- a valid command. The enhanced design can process the +-- valid commands. +-- 02/14/14 Happy Valentine's Day! Fixed a "wacky" bug which caused +-- an extra digit to be displayed for address and data fields. +-- Added "0" command suffix, which prevents the bus address +-- from incrementing during read, write and fill operations. +-- It's useful for working with FIFOs that have read/write +-- ports mapped to a single address, instead of a whole +-- range of addresses. +-- 02/27/14 Refined the CHECK_SUFFICES state by adding a jump to +-- START_EXECUTION when ENTER_CHAR is found in the suffix +-- position, thus preserving the "repeat last read with +-- previous address and quantity" function. +-- +-- Description +--------------------------------------------------------------------------------------- +-- This is an 8-bit parallel ASCII character driven interface to a system +-- controller driving a "Wishbone" type of parallel system bus. +-- +-- Specifically, the unit allows the user to send text commands to the +-- "ascii_syscon" unit, in order to generate read and write cycles on the +-- Wishbone compatible bus. The command structure is quite terse and spartan +-- in nature, this is for the sake of the logic itself. +-- +-- The command line buffer is small enough to be implemented without the use +-- of dedicated BRAM memory blocks, and the menus and command responses were +-- kept as small as possible. In most cases, the responses from the unit to +-- the user consist of a "newline" and one or two visible characters. The +-- command structure consists of the following commands and responses: +-- +-- Command Syntax Purpose +-- --------------- --------------------------------------- +-- w aaaa dddd dddd dddd... Write data items "dddd" starting at address "aaaa" +-- using sequential addresses. +-- (If the data field is missing, nothing is done). +-- w0 aaaa dddd dddd dddd... Write data items "dddd" at address "aaaa" +-- without incrementing the address. +-- (If the data field is missing, nothing is done). +-- f aaaa dddd xx "Fill": Write data "dddd" starting at address "aaaa" +-- perform this "xx" times at sequential addresses. +-- (The quantity field is optional, default is 1). +-- f0 aaaa dddd xx "Fill": Write data "dddd" starting at address "aaaa" +-- perform this "xx" times at the same address. +-- (The quantity field is optional, default is 1). +-- r aaaa xx Read data starting from address "aaaa." +-- Perform this "xx" times at sequential addresses. +-- (The quantity field is optional, default is 1). +-- r0 aaaa xx Read data from address "aaaa." +-- Perform this "xx" times, using the same address. +-- (The quantity field is optional, default is 1). +-- i Send a reset pulse to the system. (initialize). +-- +-- "Single Line" type Comment token. Characters +-- after the token are ignored until . +-- This enables applications which send +-- files to the unit to include comments for +-- display and as an aid to understanding. +-- The comment token is a constant, change it +-- to be whatever makes sense! +-- +-- Response from async_syscon Meaning +-- -------------------------- --------------------------------------- +-- OK Command received and performed. No errors. +-- ? Command buffer full, without receiving "enter." +-- C? Command not recognized. +-- A? Address field syntax error. +-- D? Data field syntax error. +-- Q? Quantity field syntax error. +-- ! No "ack_i", or else "err_i" received from bus. +-- B! No "bg_i" received from master. +-- +-- NOTES on the operation of this unit: +-- +-- - The unit generates a command prompt which is "-> ". +-- - Capitalization is not important. +-- - Each command is terminated by the "enter" key (0x0d character). +-- Commands are executed as soon as "enter" is received. +-- - Trailing parameters need not be re-entered. Their values will +-- remain the same as their previous settings. +-- - Use of the backspace key is supported, so mistakes can be corrected. +-- - The length of the command line is limited to a fixed number of +-- characters, as configured by parameter. +-- - Fields are separated by white space, including "tab" and/or "space" +-- - All numerical fields are interpreted as hexadecimal numbers. +-- Decimal is not supported. +-- - Numerical field values are retained between commands. If a "r" is issued +-- without any fields following it, the previous values will be used. A +-- set of "quantity" reads will take place at sequential addresses. +-- If a "f" is issued without any fields following it, the previous data +-- value will be written "quantity" times at sequential addresses, starting +-- from the next location beyond where the last command ended. +-- - If the user does not wish to use "ack" functionality, simply tie the +-- "ack_i" input to logic 1, and then the ! response will never be generated. +-- - The data which is read in by the "r" command is displayed using lines +-- which begin with the address, followed by the data fields. The number +-- of data fields displayed per line (following the address) is adjustable +-- by setting a parameter. No other display format adjustments can be made. +-- - There is currently only a single watchdog timer. It begins to count at +-- the time the "enter" is received to execute a command. If the bus is granted +-- and the ack is received before the expiration of the timer, then the +-- cycle will complete normally. Therefore, the watchdog timeout value +-- needs to include time for the request and granting of the bus, in +-- addition to the time needed for the actual bus cycle to complete. +-- +-- +-- Currently, there is only a single indicator (stb_o) generated during bus +-- output cycles which are generated from this unit. +-- The user can easily implement decoding logic based upon adr_o and stb_o +-- which would serve as multiple "stb_o" type signals for different cores +-- which would be sharing the same bus. +-- +-- The data bus supported by this module is separate input/output type of bus. +-- However, if a single tri-state dat_io bus is desired, it can be added +-- to the module without too much trouble. Supposedly the only difference +-- between the two forms of data bus is that one of them avoids using tri-state +-- at the cost of doubling the number of interconnects used to carry data back +-- and forth... Some people say that tri-state should be avoided for use +-- in internal busses in ASICs. Maybe they are right. +-- But in FPGAs tri-state seems to work pretty well, even for internal busses. +-- +-- Parameters are provided to configure the width of the different command +-- fields. To simplify the logic for binary to hexadecimal conversion, these +-- parameters allow adjustment in units of 1 hex digit, not anything smaller. +-- If your bus has 10 bits, for instance, simply set the address width to 3 +-- which produces 12 bits, and then just don't use the 2 msbs of address +-- output. +-- +-- No support for the optional Wishbone "retry" (rty_i) input is provided at +-- this time. +-- No support for "tagn_o" bits is provided at this time, although a register +-- might be added external to this module in order to implement to tag bits. +-- No BLOCK or RMW cycles are supported currently, so cyc_o is equivalent to +-- stb_o... +-- The output busses are not tri-stated. The user may add tri-state buffers +-- external to the module, using "stb_o" to enable the buffer outputs. +-- +--------------------------------------------------------------------------------------- + +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.NUMERIC_STD.ALL; + +library work; +use work.function_pack.all; +use work.async_syscon_pack.all; + +entity ascii_syscon is + generic ( + ADR_DIGITS : natural := 4; -- # of hex digits for address + DAT_DIGITS : natural := 4; -- # of hex digits for data + QTY_DIGITS : natural := 2; -- # of hex digits for quantity + CMD_BUFFER_SIZE : natural := 32; -- # of chars in the command buffer + WATCHDOG_VALUE : natural := 200; -- # of sys_clks before ack is expected + DISPLAY_FIELDS : natural := 8 -- # of fields/line + ); + port ( + + sys_rst_n : in std_logic; + sys_clk : in std_logic; + sys_clk_en : in std_logic; + + -- Parallel ASCII I/O + cmd_char_i : in unsigned(7 downto 0); + cmd_we_i : in std_logic; + cmd_ack_o : out std_logic; + cmd_echo_o : out std_logic; + resp_char_o : out unsigned(7 downto 0); + resp_cyc_o : out std_logic; + resp_ack_i : in std_logic; + cmd_done_o : out std_logic; + + -- Master Bus IO + master_bg_i : in std_logic; + master_adr_i : in unsigned(4*ADR_DIGITS-1 downto 0); + master_dat_i : in unsigned(4*DAT_DIGITS-1 downto 0); + master_dat_o : out unsigned(4*DAT_DIGITS-1 downto 0); + master_stb_i : in std_logic; + master_we_i : in std_logic; + master_br_o : out std_logic; + + -- System Bus IO + ack_i : in std_logic; + err_i : in std_logic; + dat_i : in unsigned(4*DAT_DIGITS-1 downto 0); + dat_o : out unsigned(4*DAT_DIGITS-1 downto 0); + rst_o : out std_logic; + stb_o : out std_logic; + cyc_o : out std_logic; + adr_o : out unsigned(4*ADR_DIGITS-1 downto 0); + we_o : out std_logic + ); +end ascii_syscon; + +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.NUMERIC_STD.ALL; + +architecture beh of ascii_syscon is + +-- Constants +constant CMD_PTR_BITS : natural := bit_width(CMD_BUFFER_SIZE); +constant DISPLAY_FIELD_COUNT_BITS : natural := bit_width(DISPLAY_FIELDS); +constant DISPLAY_ADR_DIGIT_COUNT_BITS : natural := bit_width(ADR_DIGITS); +constant DISPLAY_DAT_DIGIT_COUNT_BITS : natural := bit_width(DAT_DIGITS); +constant WATCHDOG_TIMER_BITS : natural := timer_width(WATCHDOG_VALUE); + +constant BACKSPACE_CHAR : unsigned := "00001000"; +constant ENTER_CHAR : unsigned := "00001101"; +constant COMMENT_CHAR : unsigned := "00100011"; -- '#' character +--constant COMMENT_CHAR : unsigned := "00101101"; -- '-' character + +-- Internal signal declarations + -- For the state machine +type FSM_STATE_TYPE is (IDLE, SEND_WELCOME_STRING, SEND_OK, SEND_PROMPT, + CHECK_NEW_CHAR, SEND_CRLF, PARSE_ERR_INDICATOR_CRLF, + ERR_INDICATOR, BG_ERR_INDICATOR, SEND_QUESTION, + SCAN_CMD, CHECK_SUFFICES, SCAN_ADR_WHITESPACE, + GET_ADR_FIELD, SCAN_DAT_WHITESPACE, GET_DAT_FIELD, + SCAN_QTY_WHITESPACE, GET_QTY_FIELD, START_EXECUTION, + REQUEST_BUS, EXECUTE, DISPLAY_PREP, DISPLAY_ADR, + DISPLAY_SEPARATOR, DISPLAY_DAT, DISPLAY_SPACE, + DISPLAY_CRLF, POST_FILL_CYCLE); + +signal fsm_state : FSM_STATE_TYPE; + +signal watchdog_timer_done : std_logic; -- High when watchdog timer is expired +signal char_is_whitespace : std_logic; -- High when cmd_buffer[char_count] is whitespace. +signal char_is_num : std_logic; -- High when cmd_buffer[char_count] is 0..9 +signal char_is_a_f : std_logic; -- High when cmd_buffer[char_count] is a..f +signal char_is_hex : std_logic; -- High when cmd_buffer[char_count] is a hex char. +signal msg_pointer : unsigned(4 downto 0); -- Determines message position or address. +signal msg_select : unsigned(4 downto 0); -- selection of msg_pointer or display value +signal hex_digit : unsigned(3 downto 0); -- This is the digit to be stored. + +signal msg_char : unsigned(7 downto 0); -- Selected response message character. +signal comment_area : std_logic; + + -- For the buses +signal adr_ptr : unsigned(4*ADR_DIGITS-1 downto 0); -- = adr_sr + adr_offset + +signal stb_l : std_logic; -- "local" stb signal (to distinguish from stb_o) +signal we_l : std_logic; -- "local" we signal (to distinguish from we_o) + +signal display_adr_sr : unsigned(4*ADR_DIGITS-1 downto 0); -- sr for printing addresses +signal adr_sr : unsigned(4*ADR_DIGITS-1 downto 0); -- "nibble" shift register +signal dat_sr : unsigned(4*DAT_DIGITS-1 downto 0); -- "nibble" shift register +signal qty_sr : unsigned(4*QTY_DIGITS-1 downto 0); -- "nibble" shift register + +-- The command register has these values +type CMD_REG_TYPE is (INIT, READ, FILL, WRITE); +signal command : CMD_REG_TYPE; + + -- For the command buffer +signal cmd_ptr : unsigned(CMD_PTR_BITS-1 downto 0); -- Offset from start of command. +--signal rd_cmd_ptr : unsigned(CMD_PTR_BITS-1 downto 0); -- Latched cmd_ptr, use to infer BRAM. +type cmd_array_type is + array (integer range 0 to CMD_BUFFER_SIZE-1) of unsigned(7 downto 0); + +signal cmd_buffer : cmd_array_type; +signal cmd_char : unsigned(7 downto 0); +signal lc_cmd_char : unsigned(7 downto 0); -- Lowercase version of cmd_char +signal adr_offset : unsigned(4*QTY_DIGITS-1 downto 0); -- counts from 0 to qty_sr +signal adr_freeze : std_logic; -- When set, prevents adr_offset from incrementing + +signal resp_cyc : std_logic; -- high for response type states +signal resp_cyc_l : std_logic; +signal resp_cyc_mask : std_logic; -- Used to lower resp_cyc_o for one clock cycle, upon acknowledgement. + + -- For various counters +signal display_field_count : unsigned(DISPLAY_FIELD_COUNT_BITS-1 downto 0); -- "fields displayed" +signal display_adr_digit_count : unsigned(DISPLAY_ADR_DIGIT_COUNT_BITS-1 downto 0); -- "digits displayed" +signal display_dat_digit_count : unsigned(DISPLAY_DAT_DIGIT_COUNT_BITS-1 downto 0); -- "digits displayed" +signal watchdog_timer_count : unsigned(WATCHDOG_TIMER_BITS-1 downto 0); + +---------------------------------------------------------------------------- +-- Component Declarations +---------------------------------------------------------------------------- + +---------------------------------------------------------------------------- +begin + +-- In this module, command characters are accepted immediately but only when in the CHECK_NEW_CHAR state. +cmd_ack_o <= '1' when cmd_we_i='1' and fsm_state=CHECK_NEW_CHAR else '0'; + +-- Provide response character cycle active signal +resp_cyc <= '1' when fsm_state=DISPLAY_CRLF or + fsm_state=DISPLAY_SPACE or + fsm_state=DISPLAY_DAT or + fsm_state=DISPLAY_SEPARATOR or + fsm_state=DISPLAY_ADR or + fsm_state=SEND_QUESTION or + fsm_state=ERR_INDICATOR or + fsm_state=PARSE_ERR_INDICATOR_CRLF or + fsm_state=BG_ERR_INDICATOR or + fsm_state=SEND_CRLF or + fsm_state=SEND_PROMPT or + fsm_state=SEND_OK or + fsm_state=SEND_WELCOME_STRING else + '0'; +-- Implement the "courtesy" of lowering resp_cyc_o for one cycle after resp_ack_i is recognized. +-- This increases the amount of time needed for data transfer, and some would say it is needless, +-- since a "burst" type transfer also can work. Since burst transfers were not intended here, +-- this is being done anyway. You see, burst transfers can "tie up" bus arbiters for the entire +-- burst, which is not desirable in this design. +resp_cyc_l <= '1' when resp_cyc='1' and resp_cyc_mask='0' else '0'; +resp_cyc_o <= resp_cyc_l; + +resp_cyc_mask_proc : process(sys_clk,sys_rst_n) +variable i : natural; +begin + if (sys_rst_n='0') then + resp_cyc_mask <= '0'; + elsif (sys_clk'event and sys_clk='1') then + if (sys_clk_en='1') then + resp_cyc_mask <= '0'; -- Default value + if (resp_cyc_l='1' and resp_ack_i='1') then + resp_cyc_mask <= '1'; + end if; + end if; + end if; +end process; + + +-- Provide command echo indication, to allow ASCII response data to be +-- echoed or not, as desired. +cmd_echo_o <= '1' when fsm_state=CHECK_NEW_CHAR else '0'; + +-- Provide parallel ASCII response data +resp_char_o <= msg_char; + +-- Select which bus signals get used on the system bus +adr_o <= adr_ptr when (master_bg_i='1') else master_adr_i; +we_o <= we_l when (master_bg_i='1') else master_we_i; +stb_o <= stb_l when (master_bg_i='1') else master_stb_i; +cyc_o <= stb_l when (master_bg_i='1') else master_stb_i; -- Separate cyc_o is not yet supported! + +dat_o <= dat_sr when (master_bg_i='1' and we_l='1' and stb_l='1') else master_dat_i; +master_dat_o <= dat_i; + +-- This forms the adress pointer which is used on the bus. +adr_ptr <= adr_sr + adr_offset when adr_freeze='0' else adr_sr; + +-- This is the ROM for the ASCII characters to be transmitted. +-- Choose which value to use +msg_select <= '0' & display_adr_sr(4*ADR_DIGITS-1 downto 4*(ADR_DIGITS-1)) when fsm_state=DISPLAY_ADR else + '0' & dat_sr(4*DAT_DIGITS-1 downto 4*(DAT_DIGITS-1)) when fsm_state=DISPLAY_DAT else + msg_pointer; +with (msg_select) select + msg_char <= + "00110000" when "00000", -- "0"; -- Hexadecimal characters + "00110001" when "00001", -- "1"; + "00110010" when "00010", -- "2"; + "00110011" when "00011", -- "3"; + "00110100" when "00100", -- "4"; + "00110101" when "00101", -- "5"; + "00110110" when "00110", -- "6"; + "00110111" when "00111", -- "7"; + "00111000" when "01000", -- "8"; + "00111001" when "01001", -- "9"; + "01000001" when "01010", -- "A"; -- Address error indication + "01000010" when "01011", -- "B"; + "01000011" when "01100", -- "C"; -- Command error indication + "01000100" when "01101", -- "D"; -- Data error indication + "01000101" when "01110", -- "E"; + "01000110" when "01111", -- "F"; + "00100000" when "10000", -- " "; -- Space + "00111010" when "10001", -- ":"; -- Colon + "00100000" when "10010", -- " "; -- Space + "00111111" when "10011", -- "?"; -- Parse error indication + "00100001" when "10100", -- "!"; -- ack_i/err_i error indication + "01001111" when "10101", -- "O"; -- "All is well" message + "01001011" when "10110", -- "K"; + "00001101" when "10111", -- Carriage Return + "00001010" when "11000", -- Line Feed + "00101101" when "11001", -- "-"; -- Command Prompt + "00111110" when "11010", -- ">"; + "00100000" when "11011", -- " "; + "01010001" when "11100", -- "Q"; -- Quantity error indication + "01011000" when others; -- "X"; + +-- This is state machine m1. It handles receiving the command line, including +-- backspaces, and prints error/response messages. It also parses and +-- executes the commands. + +-- State register +fsm_proc : process(sys_clk, sys_rst_n) + + procedure exec_prep is + begin + if (adr_offset=qty_sr) then + msg_pointer <= "10101"; -- Address of message + fsm_state <= SEND_OK; + else + watchdog_timer_count <= (others=>'0'); -- Reset the timer. + fsm_state <= EXECUTE; + end if; + end exec_prep; + +begin + if (sys_rst_n='0') then -- asynchronous reset + rst_o <= '0'; + fsm_state <= IDLE; + command <= INIT; + msg_pointer <= (others=>'0'); + cmd_ptr <= (others=>'0'); + adr_offset <= (others=>'0'); + adr_freeze <= '0'; + adr_sr <= (others=>'0'); + dat_sr <= (others=>'0'); + qty_sr <= to_unsigned(1,qty_sr'length); -- Set qty = 1 default. + display_field_count <= (others=>'0'); + display_adr_digit_count <= (others=>'0'); + display_dat_digit_count <= (others=>'0'); + watchdog_timer_count <= (others=>'0'); + display_adr_sr <= (others=>'0'); + cmd_done_o <= '0'; + comment_area <= '0'; + elsif (sys_clk'event and sys_clk='1') then + if (sys_clk_en='1') then + + -- Handle the Watchdog timer + if (watchdog_timer_done='0') then + watchdog_timer_count <= watchdog_timer_count+1; + end if; + + -- Default values for outputs. The individual states can override these. + rst_o <= '0'; + cmd_done_o <= '0'; + + case (fsm_state) is + + when IDLE => + msg_pointer <= (others=>'0'); + fsm_state <= SEND_WELCOME_STRING; + + when SEND_WELCOME_STRING => + if (resp_cyc_l='1' and resp_ack_i='1') then + if (msg_pointer=15) then -- Send initial string ("0123456789ABCDEF") + msg_pointer <= "10111"; -- Address of the message + fsm_state <= SEND_PROMPT; + else + msg_pointer <= msg_pointer+1; + end if; + end if; + + when SEND_OK => + if (resp_cyc_l='1' and resp_ack_i='1') then + if (msg_pointer=22) then -- Send 2 characters... + msg_pointer <= "10111"; -- Address of the message + fsm_state <= SEND_PROMPT; + else + msg_pointer <= msg_pointer+1; + end if; + end if; + + when SEND_PROMPT => + if (resp_cyc_l='1' and resp_ack_i='1') then + if (msg_pointer=27) then -- Send 5 characters... + cmd_ptr <= (others=>'0'); + cmd_done_o <= '1'; + fsm_state <= CHECK_NEW_CHAR; + else + msg_pointer <= msg_pointer+1; + end if; + end if; + + -- This state always leads to activating the parser... + when SEND_CRLF => + if (resp_cyc_l='1' and resp_ack_i='1') then + if (msg_pointer=24) then -- Send 2 characters... + cmd_ptr <= (others=>'0'); + fsm_state <= SCAN_CMD; + else + msg_pointer <= msg_pointer+1; + end if; + end if; + + when CHECK_NEW_CHAR => + if (cmd_we_i='1') then + if (cmd_char_i=BACKSPACE_CHAR) then + cmd_ptr <= cmd_ptr-1; -- This effectively eliminates the last char + elsif (comment_area='0' and cmd_char_i=ENTER_CHAR) or (cmd_ptr=CMD_BUFFER_SIZE-1) then + if (cmd_char_i=ENTER_CHAR) then + msg_pointer <= "10111"; -- Address of the message + fsm_state <= SEND_CRLF; + end if; + if (cmd_ptr=CMD_BUFFER_SIZE-1) then + msg_pointer <= "10111"; -- Address of the message. + cmd_ptr <= (others=>'0'); + fsm_state <= PARSE_ERR_INDICATOR_CRLF; + end if; + elsif (cmd_char_i=COMMENT_CHAR) then + comment_area <= '1'; -- Activate comment area, which stores characters, but does not advance cmd_ptr. + elsif (comment_area='0') then + cmd_ptr <= cmd_ptr+1; + end if; + -- Deactivate comment area at end of line + if (comment_area='1' and cmd_char_i=ENTER_CHAR) then + comment_area <= '0'; + -- Check if a valid command might have preceded the comment + if (cmd_ptr>1) then + msg_pointer <= "10111"; -- Address of the message + fsm_state <= SEND_CRLF; + else + msg_pointer <= "10111"; -- Address of the message + fsm_state <= SEND_PROMPT; + end if; + end if; + end if; + + when BG_ERR_INDICATOR => + if (resp_cyc_l='1' and resp_ack_i='1') then + msg_pointer <= "10100"; -- Address of the error message + fsm_state <= ERR_INDICATOR; + end if; + + -- This state is used when the line is too long... + when PARSE_ERR_INDICATOR_CRLF => + if (resp_cyc_l='1' and resp_ack_i='1') then + if (msg_pointer=24) then -- Send 2 characters... + msg_pointer <= "10011"; -- Address of the message. + fsm_state <= ERR_INDICATOR; + else + msg_pointer <= msg_pointer+1; + end if; + end if; + + when ERR_INDICATOR => + if (resp_cyc_l='1' and resp_ack_i='1') then + msg_pointer <= "10111"; -- Address of the message + fsm_state <= SEND_PROMPT; + end if; + + when SEND_QUESTION => + if (resp_cyc_l='1' and resp_ack_i='1') then + msg_pointer <= "10011"; -- Address of the message. + fsm_state <= ERR_INDICATOR; + end if; + + -- The following states are for parsing and executing the command. + + -- This state takes care of leading whitespace before the command + when SCAN_CMD => + cmd_ptr <= cmd_ptr+1; + adr_offset <= (others=>'0'); + case (lc_cmd_char) is + when "01110010" => -- "r" + command <= READ; + fsm_state <= CHECK_SUFFICES; + when "01110111" => -- "w" + command <= WRITE; + qty_sr <= (others=>'1'); -- Limit writes to the max. qty... + fsm_state <= CHECK_SUFFICES; + when "01101001" => -- "i" + command <= INIT; + qty_sr <= (others=>'0'); + rst_o <= '1'; -- Actually do this one right now!! + fsm_state <= START_EXECUTION; + when "01100110" => -- "f" + command <= FILL; + fsm_state <= CHECK_SUFFICES; + when others => + if (char_is_whitespace='0') then + msg_pointer <= "01100"; -- Address of message + fsm_state <= SEND_QUESTION; + end if; + end case; + + -- This state cleverly detects command "suffix" modifiers, such + -- as the '0' modifier, which causes the address to remain frozen. + -- Invalid or unimplemented suffix modifiers elicit the "C?" response. + when CHECK_SUFFICES => -- Should that read "check suffixes" Hmmm... + if (cmd_char="00110000") then -- '0' suffix + cmd_ptr <= cmd_ptr+1; + adr_freeze <= '1'; + fsm_state <= SCAN_ADR_WHITESPACE; + elsif (cmd_char=ENTER_CHAR) then + fsm_state <= START_EXECUTION; -- Using last values + elsif (char_is_whitespace='1') then + adr_freeze <= '0'; + fsm_state <= SCAN_ADR_WHITESPACE; + else + msg_pointer <= "01100"; -- Address of message + fsm_state <= SEND_QUESTION; + end if; + + + -- The only way to determine the end of a valid field is to find + -- whitespace. Therefore, char_is_whitespace must be used as an exit + -- condition from the "get_xxx_field" states. So, this state is used to + -- scan through any leading whitespace prior to the first field. + when SCAN_ADR_WHITESPACE => + if (char_is_whitespace='1') then + cmd_ptr <= cmd_ptr+1; + elsif (cmd_char=ENTER_CHAR) then + fsm_state <= START_EXECUTION; -- Using last values + else + fsm_state <= GET_ADR_FIELD; + adr_sr <= (others=>'0'); + end if; + + when GET_ADR_FIELD => + if (char_is_hex='1') then + adr_sr <= adr_sr(4*(ADR_DIGITS-1)-1 downto 0) & hex_digit; + cmd_ptr <= cmd_ptr+1; + elsif (char_is_whitespace='1') then -- Normal exit + fsm_state <= SCAN_DAT_WHITESPACE; + elsif (cmd_char=ENTER_CHAR and command=READ) then + fsm_state <= START_EXECUTION; -- Using last values + else + msg_pointer <= "01010"; -- Address of message + fsm_state <= SEND_QUESTION; + end if; + + when SCAN_DAT_WHITESPACE => + -- There is no DAT field for reads, so skip it. + if (command=READ) then + fsm_state <= SCAN_QTY_WHITESPACE; + elsif (char_is_whitespace='1') then + cmd_ptr <= cmd_ptr+1; + elsif (cmd_char=ENTER_CHAR) then + if (command=WRITE) then -- Writing data values done, finish. + msg_pointer <= "10101"; -- Address of message + fsm_state <= SEND_OK; + else + fsm_state <= START_EXECUTION; -- Using last DATA & QTY values + end if; + else + fsm_state <= GET_DAT_FIELD; + dat_sr <= (others=>'0'); + end if; + + when GET_DAT_FIELD => + if (char_is_hex='1') then + dat_sr <= dat_sr(4*(DAT_DIGITS-1)-1 downto 0) & hex_digit; + cmd_ptr <= cmd_ptr+1; + elsif (char_is_whitespace='1') then -- Normal exit + if (command=WRITE) then + fsm_state <= START_EXECUTION; + else + fsm_state <= SCAN_QTY_WHITESPACE; + end if; + elsif (cmd_char=ENTER_CHAR) then + fsm_state <= START_EXECUTION; + else + msg_pointer <= "01101"; -- Address of message + fsm_state <= SEND_QUESTION; + end if; + + when SCAN_QTY_WHITESPACE => + if (char_is_whitespace='1') then + cmd_ptr <= cmd_ptr+1; + elsif (cmd_char=ENTER_CHAR) then + fsm_state <= START_EXECUTION; -- Using last values + else + fsm_state <= GET_QTY_FIELD; + qty_sr <= to_unsigned(0,qty_sr'length); + end if; + + when GET_QTY_FIELD => + if (char_is_hex='1') then + qty_sr <= qty_sr(4*(QTY_DIGITS-1)-1 downto 0) & hex_digit; + cmd_ptr <= cmd_ptr+1; + elsif (char_is_whitespace='1' or cmd_char=ENTER_CHAR) then -- Normal exit + fsm_state <= START_EXECUTION; + else + msg_pointer <= "11100"; -- Address of message + fsm_state <= SEND_QUESTION; + end if; + + -- This state seeks to obtain master_bg_i, which grants the bus for use. + when START_EXECUTION => + watchdog_timer_count <= (others=>'0'); -- Reset the timer. + display_adr_sr <= adr_ptr; + display_field_count <= (others=>'0'); + if (master_bg_i='1') then -- skip REQUEST_BUS if it is already granted! + exec_prep; + else + fsm_state <= REQUEST_BUS; + end if; + + when REQUEST_BUS => + if (master_bg_i='1') then + exec_prep; -- resets watchdog, sends "OK" if done. + elsif (watchdog_timer_done='1') then + msg_pointer <= "01011"; -- Address of messsage + fsm_state <= BG_ERR_INDICATOR; + end if; + + -- This single state does fill/write/read depending upon the value + -- contained in "command"! + when EXECUTE => + if (watchdog_timer_done='1' or err_i='1') then + fsm_state <= BG_ERR_INDICATOR; + elsif (ack_i='1') then + case command is + when READ => + dat_sr <= dat_i; -- Capture the read data + display_adr_sr <= adr_ptr; + fsm_state <= DISPLAY_PREP; + when WRITE => + adr_offset <= adr_offset+1; + fsm_state <= SCAN_DAT_WHITESPACE; -- Continue to next data value + when FILL => + adr_offset <= adr_offset+1; + fsm_state <= POST_FILL_CYCLE; + when others => + fsm_state <= POST_FILL_CYCLE; + end case; + end if; + + when POST_FILL_CYCLE => + exec_prep; -- resets watchdog, sends "OK" if done. + + when DISPLAY_PREP => + adr_offset <= adr_offset+1; + if (display_field_count = 0) then -- Check to see if address display is needed yet. + msg_pointer <= '0' & display_adr_sr(4*ADR_DIGITS-1 downto 4*(ADR_DIGITS-1)); + display_adr_digit_count <= (others=>'0'); + display_adr_sr <= adr_ptr; + fsm_state <= DISPLAY_ADR; -- Leads to a new address line. + else + display_dat_digit_count <= (others=>'0'); + msg_pointer <= '0' & dat_sr(4*DAT_DIGITS-1 downto 4*(DAT_DIGITS-1)); + fsm_state <= DISPLAY_DAT; + end if; + + when DISPLAY_ADR => + if (resp_cyc_l='1' and resp_ack_i='1') then + if (display_adr_digit_count = ADR_DIGITS-1) then + msg_pointer <= "10000"; -- Address of the message + fsm_state <= DISPLAY_SEPARATOR; + else + display_adr_sr <= display_adr_sr(4*(ADR_DIGITS-1)-1 downto 0) & to_unsigned(0,4); + display_adr_digit_count <= display_adr_digit_count+1; + end if; + end if; + + when DISPLAY_SEPARATOR => + if (resp_cyc_l='1' and resp_ack_i='1') then + msg_pointer <= msg_pointer+1; + if (msg_pointer = 18) then -- Three characters + display_dat_digit_count <= (others=>'0'); + msg_pointer <= '0' & dat_sr(4*DAT_DIGITS-1 downto 4*(DAT_DIGITS-1)); + fsm_state <= DISPLAY_DAT; + end if; + end if; + + when DISPLAY_DAT => + if (resp_cyc_l='1' and resp_ack_i='1') then + if ( + (display_dat_digit_count = DAT_DIGITS-1) + and (display_field_count = DISPLAY_FIELDS-1) + ) + then + msg_pointer <= "10111"; -- Address of the message + fsm_state <= DISPLAY_CRLF; + display_field_count <= (others=>'0'); + elsif (display_dat_digit_count = DAT_DIGITS-1) then + msg_pointer <= "10000"; -- Address of the message + fsm_state <= DISPLAY_SPACE; + display_field_count <= display_field_count+1; + else + dat_sr <= dat_sr(4*(DAT_DIGITS-1)-1 downto 0) & hex_digit; + display_dat_digit_count <= display_dat_digit_count+1; + end if; + end if; + + when DISPLAY_SPACE => + if (resp_cyc_l='1' and resp_ack_i='1') then + exec_prep; -- resets watchdog, sends "OK" if done. + end if; + + when DISPLAY_CRLF => + if (resp_cyc_l='1' and resp_ack_i='1') then + msg_pointer <= msg_pointer+1; + if (msg_pointer=24) then -- Two characters + exec_prep; -- resets watchdog, sends "OK" if done. + end if; + end if; + + --when others => + -- fsm_state <= IDLE; + end case; + + end if; -- sys_clk_en + end if; -- sys_clk +end process; + +-- Assert needed outputs during execution of bus cycles +master_br_o <= '1' when (fsm_state=REQUEST_BUS or fsm_state=EXECUTE) else '0'; +we_l <= '1' when (fsm_state=EXECUTE and (command=WRITE or command=FILL)) else '0'; +stb_l <= '1' when (fsm_state=EXECUTE) else '0'; + + +-- This is the command buffer writing section +ram_proc : process(sys_clk,sys_rst_n) +variable i : natural; +begin + if (sys_rst_n='0') then + -- synthesis translate_off + -- The initialization of the command buffer is for convenience in simulation only. + -- It can be removed for synthesis. + for i in 0 to CMD_BUFFER_SIZE-1 loop + cmd_buffer(i) <= (others=>'0'); + end loop; + -- synthesis translate_on + elsif (sys_clk'event and sys_clk='1') then + if (sys_clk_en='1') then + if (cmd_we_i='1' and fsm_state=CHECK_NEW_CHAR) then + cmd_buffer(to_integer(cmd_ptr)) <= cmd_char_i; + end if; + -- Latch the command pointer, for synchronous reads. + --rd_cmd_ptr <= cmd_ptr; -- Use this to infer BRAM. + end if; + end if; +end process; + +-- This is the command buffer reading section +cmd_char <= cmd_buffer(to_integer(cmd_ptr)); -- Asynchronous read. Amazingly, this was the better option in XC2S200E... +--cmd_char <= cmd_buffer(to_integer(rd_cmd_ptr)); -- Synchronous read, use this to infer BRAM. +lc_cmd_char <= (cmd_char or "00100000"); -- lowercase + +-- These assigments are for detecting whether the cmd_char is +-- anything of special interest. +char_is_whitespace <= '1' when ((cmd_char=16#20#) -- space + or (cmd_char=16#09#) -- tab + or (cmd_char=16#0A#) -- line feed + ) else '0'; +char_is_num <= '1' when ((cmd_char>=16#30#) and (cmd_char<=16#39#)) else '0'; +char_is_a_f <= '1' when ((lc_cmd_char>=16#61#) and (lc_cmd_char<=16#66#)) else '0'; +char_is_hex <= char_is_num or char_is_a_f; + +hex_digit <= cmd_char(3 downto 0) when char_is_num='1' else (cmd_char(3 downto 0)+"1001"); + +watchdog_timer_done <= '1' when (watchdog_timer_count=WATCHDOG_VALUE) else '0'; + +end beh; + + +--------------------------------------------------------------------------------------- +-- +-- Author: John Clayton +-- Date : Nov. 20, 2009 +-- Update: 11/20/09 copied this file from rs232_syscon.v Began translating. +-- 10/04/11 Removed msg_offset+msg_base adder, in a bid to +-- increase max operating speed of this module. +-- Combined CMD_ERR_INDICATOR, ADR_ERR_INDICATOR, +-- DAT_ERR_INDICATOR, and QTY_ERR_INDICATOR +-- into a single state : SEND_QUESTION +-- Combined ACK_ERR_INDICATOR and PARSE_ERR_INDICATOR +-- into a single state : ERR_INDICATOR +-- 08/03/13 Removed rs232_tx_active_o, since it appears to be a +-- vestigial relic of a time long ago when the echoing of +-- command characters was done through the UART, and not +-- directly as it is now. It was staying high all the +-- time except for brief pulses low during generated +-- responses... which is not useful. +-- 08/03/13 Added "cmd_done_o" output pulse, which helps outside +-- serial command generators know when to begin generating +-- the next command. Removed the "rs232_" prefix from +-- signal names, since the signals really aren't at RS232 +-- levels. +-- 08/03/13 Changed module and packet name to replace "rs232_" +-- with "async_" +-- 08/07/13 Added logic to include a "single line" type of comment +-- which allows initialization strings and messages to +-- include comments, which are echoed back over the +-- interface for the user to perhaps see. +-- +-- Description +--------------------------------------------------------------------------------------- +-- This module takes an "ascii_syscon" unit and adds an asynchronous serial +-- interface to it. +-- +-- For details of command and response syntax, please refer to the ascii_syscon +-- description. +-- +--------------------------------------------------------------------------------------- + +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.NUMERIC_STD.ALL; +use IEEE.MATH_REAL.ALL; + +library work; +use work.function_pack.all; +use work.uart_sqclk_pack.all; +use work.async_syscon_pack.all; + +entity async_syscon is + generic ( + ECHO_COMMANDS : natural := 1; -- set nonzero to echo back command characters + ADR_DIGITS : natural := 4; -- # of hex digits for address + DAT_DIGITS : natural := 4; -- # of hex digits for data + QTY_DIGITS : natural := 2; -- # of hex digits for quantity + CMD_BUFFER_SIZE : natural := 32; -- # of chars in the command buffer + WATCHDOG_VALUE : natural := 200; -- # of sys_clks before ack is expected + DISPLAY_FIELDS : natural := 8 -- # of fields/line + ); + port ( + + sys_rst_n : in std_logic; + sys_clk : in std_logic; + sys_clk_en : in std_logic; + + -- rate and parity + parity_i : in unsigned(1 downto 0); -- 0=none, 1=even, 2=odd + baud_clk_i : in std_logic; -- At 1x the desired baud rate, can be squarewave or pulses. + baud_lock_i : in std_logic; -- '1' Indicates baud clock is stable and ready. + + -- Serial IO + cmd_i : in std_logic; + resp_o : out std_logic; + cmd_done_o : out std_logic; + + -- Master Bus IO + master_bg_i : in std_logic; + master_adr_i : in unsigned(4*ADR_DIGITS-1 downto 0); + master_dat_i : in unsigned(4*DAT_DIGITS-1 downto 0); + master_dat_o : out unsigned(4*DAT_DIGITS-1 downto 0); + master_stb_i : in std_logic; + master_we_i : in std_logic; + master_br_o : out std_logic; + + -- System Bus IO + ack_i : in std_logic; + err_i : in std_logic; + dat_i : in unsigned(4*DAT_DIGITS-1 downto 0); + dat_o : out unsigned(4*DAT_DIGITS-1 downto 0); + rst_o : out std_logic; + stb_o : out std_logic; + cyc_o : out std_logic; + adr_o : out unsigned(4*ADR_DIGITS-1 downto 0); + we_o : out std_logic + ); +end async_syscon; + +architecture beh of async_syscon is + +-- Constants +constant ENTER_CHAR : unsigned := "00001101"; + +-- Signals + -- For ascii_syscon +signal cmd_char : unsigned(7 downto 0); +signal cmd_we_uart : std_logic; +signal cmd_we_wait : std_logic; +signal cmd_rx_done : std_logic; +signal cmd_we : std_logic; +signal cmd_ack : std_logic; +signal cmd_echo : std_logic; +signal resp_char : unsigned(7 downto 0); +signal resp_cyc : std_logic; +signal resp_cyc_r1 : std_logic; +signal resp_cyc_uart : std_logic; +signal resp_ack_uart : std_logic; +signal resp_ack_uart_r1 : std_logic; +signal resp_ack : std_logic; + + -- For the serial interface +signal async_rx_error : unsigned(1 downto 0); +signal async_rx_restart : std_logic; +signal resp_l : std_logic; + +---------------------------------------------------------------------------- +-- Component Declarations +---------------------------------------------------------------------------- + +---------------------------------------------------------------------------- +begin + +---------------------------------------------------------------------------- +-- Instantiations +---------------------------------------------------------------------------- + +uart1 : uart_sqclk + port map ( + + sys_rst_n => sys_rst_n, + sys_clk => sys_clk, + sys_clk_en => sys_clk_en, + + -- rate and parity + parity_i => parity_i, + rate_clk_i => baud_clk_i, + + -- serial I/O + tx_stream => resp_l, + rx_stream => cmd_i, + + --control and status + tx_wr_i => resp_cyc_uart, + tx_dat_i => resp_char, + tx_done_o => resp_ack_uart, + rx_restart_i => async_rx_restart, -- High clears error flags, clears rx_done_o + rx_dat_o => cmd_char, + rx_wr_o => cmd_we_uart, -- High pulse means store rx_dat_o. + rx_done_o => cmd_rx_done, -- Remains high after receive, until clk edge with rx_restart_i=1 + frame_err_o => async_rx_error(0), -- High = error. Reset when rx_restart_i asserted. + parity_err_o => async_rx_error(1) -- High = error. Reset when rx_restart_i asserted. + ); + +syscon1 : ascii_syscon + generic map( + ADR_DIGITS => ADR_DIGITS, -- # of hex digits for address + DAT_DIGITS => DAT_DIGITS, -- # of hex digits for data + QTY_DIGITS => QTY_DIGITS, -- # of hex digits for quantity + CMD_BUFFER_SIZE => CMD_BUFFER_SIZE, -- # of chars in the command buffer + WATCHDOG_VALUE => WATCHDOG_VALUE, -- # of sys_clks before ack is expected + DISPLAY_FIELDS => DISPLAY_FIELDS -- # of fields/line + ) + port map( + + sys_rst_n => sys_rst_n, + sys_clk => sys_clk, + sys_clk_en => sys_clk_en, + + -- Parallel ASCII I/O + cmd_char_i => cmd_char, + cmd_we_i => cmd_we, + cmd_ack_o => cmd_ack, + cmd_echo_o => cmd_echo, + resp_char_o => resp_char, + resp_cyc_o => resp_cyc, + resp_ack_i => resp_ack, + cmd_done_o => cmd_done_o, + + -- Master Bus IO + master_bg_i => master_bg_i, + master_adr_i => master_adr_i, + master_dat_i => master_dat_i, + master_dat_o => master_dat_o, + master_stb_i => master_stb_i, + master_we_i => master_we_i, + master_br_o => master_br_o, + + -- System Bus IO + ack_i => ack_i, + err_i => err_i, + dat_i => dat_i, + dat_o => dat_o, + rst_o => rst_o, + stb_o => stb_o, + cyc_o => cyc_o, + adr_o => adr_o, + we_o => we_o + ); + +---------------------------------------------------------------------------- +-- Module code +---------------------------------------------------------------------------- + +async_rx_restart <= async_rx_error(0) or async_rx_error(1) or cmd_ack; +resp_o <= resp_l when cmd_echo='0' else + cmd_i when ECHO_COMMANDS/=0 else + '1'; + + -- Detect rising edge of resp_ack_uart + resp_ack_proc: Process(sys_rst_n,sys_clk) + begin + if (sys_rst_n = '0') then + resp_ack_uart_r1 <= '1'; + elsif (sys_clk'event AND sys_clk='1') then + if (sys_clk_en='1') then + resp_ack_uart_r1 <= resp_ack_uart; + end if; + end if; -- sys_clk + end process; + resp_ack <= '1' when resp_ack_uart='1' and resp_ack_uart_r1='0' else '0'; + + -- Detect rising edge of resp_cyc + resp_cyc_proc: Process(sys_rst_n,sys_clk) + begin + if (sys_rst_n = '0') then + resp_cyc_r1 <= '1'; + elsif (sys_clk'event AND sys_clk='1') then + if (sys_clk_en='1') then + resp_cyc_r1 <= resp_cyc; + end if; + end if; -- sys_clk + end process; + resp_cyc_uart <= '1' when resp_cyc='1' and resp_cyc_r1='0' else '0'; + + -- Create a valid command write enable, that waits until the final echoed + -- character (CHAR_ENTER) is done being transmitted + cmd_we_proc: Process(sys_rst_n,sys_clk) + begin + if (sys_rst_n = '0') then + cmd_we_wait <= '0'; + elsif (sys_clk'event AND sys_clk='1') then + if (sys_clk_en='1') then + if (cmd_we_uart='1' and cmd_we_wait='0') then + cmd_we_wait <= '1'; + end if; + if (cmd_we_wait='1') then + if (cmd_rx_done='1') then + cmd_we_wait <= '0'; + end if; + end if; + end if; + end if; -- sys_clk + end process; + +cmd_we <= cmd_we_uart when baud_lock_i='1' and cmd_char/=ENTER_CHAR else + '1' when baud_lock_i='1' and cmd_char=ENTER_CHAR and cmd_we_wait='1' and cmd_rx_done='1' else + '0'; + +end beh; + + Index: rs232_syscon/trunk/VHDL/syscon_vhdl_2008_lattice_diamond_project.zip =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: rs232_syscon/trunk/VHDL/syscon_vhdl_2008_lattice_diamond_project.zip =================================================================== --- rs232_syscon/trunk/VHDL/syscon_vhdl_2008_lattice_diamond_project.zip (nonexistent) +++ rs232_syscon/trunk/VHDL/syscon_vhdl_2008_lattice_diamond_project.zip (revision 8)
rs232_syscon/trunk/VHDL/syscon_vhdl_2008_lattice_diamond_project.zip Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: rs232_syscon/trunk/VHDL/syscon_vhdl_LED_strobe_2_with_ADC_altera_project.qar =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: rs232_syscon/trunk/VHDL/syscon_vhdl_LED_strobe_2_with_ADC_altera_project.qar =================================================================== --- rs232_syscon/trunk/VHDL/syscon_vhdl_LED_strobe_2_with_ADC_altera_project.qar (nonexistent) +++ rs232_syscon/trunk/VHDL/syscon_vhdl_LED_strobe_2_with_ADC_altera_project.qar (revision 8)
rs232_syscon/trunk/VHDL/syscon_vhdl_LED_strobe_2_with_ADC_altera_project.qar Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: rs232_syscon/trunk/VHDL/uart_sqclk_pack.vhd =================================================================== --- rs232_syscon/trunk/VHDL/uart_sqclk_pack.vhd (nonexistent) +++ rs232_syscon/trunk/VHDL/uart_sqclk_pack.vhd (revision 8) @@ -0,0 +1,716 @@ +-------------------------------------------------------------------------- +-- Package of UART components +-- +-- This UART uses a squarewave input for the BAUDRATE clock. In other +-- words, the BAUD rate is exactly the same as the frequency of the +-- incoming clock. This is in contrast to other UARTs which need a +-- Baud rate clock which is some multiple of the actual Baud rate +-- desired. Because of the 1x nature of the Baud clock, the receiver +-- needs at least one Baud Clock interval in which to measure the +-- Baud clock versus the system clock, before it can start working. +-- Also, the system clock must be somewhat higher than the Baud clock +-- in order for the receiver to work. +-- +-- This package contains the UART, plus individual async_tx and async_rx +-- modules, which are the transmit and receive sections of the UART. +-- +-- + +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.NUMERIC_STD.ALL; + +package uart_sqclk_pack is + + component uart_sqclk + port ( + + sys_rst_n : in std_logic; + sys_clk : in std_logic; + sys_clk_en : in std_logic; + + -- rate and parity + parity_i : in unsigned(1 downto 0); -- 0=none, 1=even, 2 or 3=odd + rate_clk_i : in std_logic; + + -- serial I/O + tx_stream : out std_logic; + rx_stream : in std_logic; + + --control and status + tx_wr_i : in std_logic; -- Starts Transmit + tx_dat_i : in unsigned(7 downto 0); + tx_done_o : out std_logic; + rx_restart_i : in std_logic; -- High clears error flags, clears rx_done_o + rx_dat_o : out unsigned(7 downto 0); + rx_wr_o : out std_logic; -- High pulse means store rx_dat_o. + rx_done_o : out std_logic; -- Remains high after receive, until clk edge with rx_restart_i=1 + frame_err_o : out std_logic; -- High = error. Reset when rx_restart_i asserted. + parity_err_o : out std_logic -- High = error. Reset when rx_restart_i asserted. + ); + end component; + + component async_tx_sqclk + port ( + + sys_rst_n : in std_logic; + sys_clk : in std_logic; + sys_clk_en : in std_logic; + + -- rate and parity + tx_parity_i : in unsigned(1 downto 0); -- 0=none, 1=even, 2 or 3=odd + tx_clk_i : in std_logic; + + -- serial output + tx_stream : out std_logic; + + -- control and status + tx_wr_i : in std_logic; -- Starts Transmit + tx_dat_i : in unsigned(7 downto 0); + tx_done_o : out std_logic + ); + end component; + + + component async_rx_sqclk + port ( + + sys_rst_n : in std_logic; + sys_clk : in std_logic; + sys_clk_en : in std_logic; + + -- rate and parity + rx_parity_i : in unsigned(1 downto 0); -- 0=none, 1=even, 2 or 3=odd + rx_clk_i : in std_logic; + + -- serial input + rx_stream : in std_logic; + + -- control and status + rx_restart_i : in std_logic; -- High clears error flags, clears rx_done_o + rx_dat_o : out unsigned(7 downto 0); + rx_wr_o : out std_logic; -- High pulse means store rx_dat_o. + rx_done_o : out std_logic; -- Remains high after receive, until rx_restart_i + frame_err_o : out std_logic; -- High = error. Reset when rx_restart_i asserted. + parity_err_o : out std_logic -- High = error. Reset when rx_restart_i asserted. + ); + end component; + +end uart_sqclk_pack; + +package body uart_sqclk_pack is +end uart_sqclk_pack; + + +-------------------------------------------------------------------- +-- UART. Variable Speed, RX Buffer, but no TX buffer +-- High Speed Asynchronous Receiver & Transmitter +-- +-- Description: +-- This block receives and transmits asynchronous serial bytes. The Baudrate +-- and parity are selectable through inputs, but the number of bits per character +-- is fixed at eight. +-- +-- NOTES: +-- Transmit starts when tx_wr_i is detected high at a rising clock edge. +-- Once the transmit operation is completed, tx_done_o latches high. +-- +-- The receive input is passed through two layers of synchronizing flip-flops +-- to help mitigate metastability issues, since this signal can come from +-- outside of the sys_clk clock domain. All other logic connecting to inputs +-- of this function are assumed to be within the same clock domain. +-- +-- The receiver looks for a new start bit immediately following the rx_wr_o +-- pulse, but rx_done_o is delayed until the expected end of the received +-- character. If a new start bit is detected just prior to the expected end +-- of the received character, then rx_done_o is not asserted. +-- +-- Receive begins when the falling edge of the start bit is detected. +-- Then after 10 or 11 bit times have passed (depending on the parity setting) +-- the rx_wr_o signal will pulse high for one clock period, indicating rx_dat_o +-- contains valid receive data. The rx_wr_o pulse is only issued if there is +-- no parity error, and the stop bit is actually detected high at the sampling +-- time. +-- The rx_dat_o outputs will hold the received data until the next rx_wr_o pulse. +-- The rx_dat_o output provides the received data, even in the presence of a +-- parity or stop-bit error. +-- Error flags are valid during rx_wr_o, but they remain latched, until +-- rx_restart_i. +-- +-- The Baud rate is equal to the frequency of the rate_clk_i input. +-- It should be, as nearly as possible, a square wave of the desired +-- communications rate. +-- +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.NUMERIC_STD.ALL; + +entity uart_sqclk is + port ( + + sys_rst_n : in std_logic; + sys_clk : in std_logic; + sys_clk_en : in std_logic; + + -- rate and parity + parity_i : in unsigned(1 downto 0); -- 0=none, 1=even, 2 or 3=odd + rate_clk_i : in std_logic; + + -- serial I/O + tx_stream : out std_logic; + rx_stream : in std_logic; + + --control and status + tx_wr_i : in std_logic; -- Starts Transmit + tx_dat_i : in unsigned(7 downto 0); + tx_done_o : out std_logic; + rx_restart_i : in std_logic; -- High clears error flags, clears rx_done_o + rx_dat_o : out unsigned(7 downto 0); + rx_wr_o : out std_logic; -- High pulse means store rx_dat_o. + rx_done_o : out std_logic; -- Remains high after receive, until clk edge with rx_restart_i=1 + frame_err_o : out std_logic; -- High = error. Reset when rx_restart_i asserted. + parity_err_o : out std_logic -- High = error. Reset when rx_restart_i asserted. + ); +end uart_sqclk; + +library work; +use work.uart_sqclk_pack.all; + +architecture beh of uart_sqclk is + +-- Components + +begin + + tx1: async_tx_sqclk + port map ( + sys_rst_n => sys_rst_n, + sys_clk => sys_clk, + sys_clk_en => sys_clk_en, + + -- rate and parity + tx_parity_i => parity_i, -- 0=none, 1=even, 2 or 3=odd + tx_clk_i => rate_clk_i, + + -- serial output + tx_stream => tx_stream, + + -- control and status + tx_wr_i => tx_wr_i, -- Starts Transmit + tx_dat_i => tx_dat_i, + tx_done_o => tx_done_o + ); + + rx1: async_rx_sqclk + port map ( + sys_rst_n => sys_rst_n, + sys_clk => sys_clk, + sys_clk_en => sys_clk_en, + + -- rate and parity + rx_parity_i => parity_i, -- 0=none, 1=even, 2 or 3=odd + rx_clk_i => rate_clk_i, + + -- serial input + rx_stream => rx_stream, + + -- control and status + rx_restart_i => rx_restart_i, -- High clears error flags, clears rx_done_o + rx_dat_o => rx_dat_o, + rx_wr_o => rx_wr_o, -- High pulse means store rx_dat_o. + rx_done_o => rx_done_o, -- Remains high after receive, until rx_restart_i + frame_err_o => frame_err_o, -- High = error. Reset when rx_restart_i asserted. + parity_err_o => parity_err_o -- High = error. Reset when rx_restart_i asserted. + ); + +end beh; + + +------------------------------------------------------------------------------- +-- Asynchronous Receiver With Output Buffer +------------------------------------------------------------------------------- +-- +-- Author: John Clayton +-- Date : Aug 05, 2013 Added this change log header, which was missing. +-- Added first_edge signal to avoid erroneous initial +-- baud interval measurement (John Clayton & Philip +-- Kasavan) +-- Jan. 2, 2014 Added output buffer, changed idle_prep to include +-- the actual transition to IDLE state. Added +-- POST_RECV state, so that the rx_done_o signal will +-- reflect the true end of the received character. +-- This helps in applications where a received +-- asynchronous input is "echoed back" directly, +-- as the rx_wr_o signal can be used to switch the +-- signal at the correct time. +-- Feb. 6, 2014 Added requirement for half_baud to be non-zero +-- before leaving IDLE state. This prevents leaving +-- IDLE due to falling edges prior to the first Baud +-- interval measurement. +-- +-- Description +------------------------------------------------------------------------------- +-- Squarewave tx_clk_i input determines rate. +-- (tx_clk_i does not really need to be a squarewave. Only the rising edges +-- are measured and used.) +-- +-- Description: +-- This block receives asynchronous serial bytes. The Baudrate and parity +-- are determined by inputs, but the number of bits per character is +-- fixed at eight. +-- +-- NOTES: +-- The receive input and baudrate clock are passed through two layers of +-- synchronizing flip-flops to mitigate metastability, since those signals can +-- originate outside of the sys_clk clock domain. All other logic connecting to +-- input of this function are assumed to be within the same clock domain. +-- +-- The receiver looks for a new start bit immediately following the rx_wr_o +-- pulse, but rx_done_o is delayed until the expected end of the received +-- character. If a new start bit is detected just prior to the expected end +-- of the received character, then rx_done_o is not asserted. +-- +-- Receive begins when the falling edge of the start bit is detected. +-- Then after 10 or 11 bit times have passed (depending on the parity setting) +-- the rx_wr_o signal will pulse high for one clock period, indicating rx_dat_o +-- contains valid receive data. The rx_wr_o pulse is only issued if there is +-- no parity error, and the stop bit is actually detected high at the sampling +-- time. +-- The rx_dat_o outputs will hold the received data until the next rx_wr_o pulse. +-- The rx_dat_o output provides the received data, even in the presence of a +-- parity or stop-bit error. +-- Error flags are valid during rx_wr_o, but they remain latched, until +-- rx_restart_i. +-- +-- Although the receiver immediately restarts itself to receive the next +-- character, the rx_restart_i input can clear the error indicators. The rx_restart_i +-- input is like a synchronous reset in this respect since it will cause a receive +-- operation to abort. +-- + +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.NUMERIC_STD.ALL; + +entity async_rx_sqclk is + port ( + + sys_rst_n : in std_logic; + sys_clk : in std_logic; + sys_clk_en : in std_logic; + + -- rate and parity + rx_parity_i : in unsigned(1 downto 0); -- 0=none, 1=even, 2 or 3=odd + rx_clk_i : in std_logic; + + -- serial input + rx_stream : in std_logic; + + -- control and status + rx_restart_i : in std_logic; -- High clears error flags, synchronously resets receiver + rx_dat_o : out unsigned(7 downto 0); + rx_wr_o : out std_logic; -- High pulse means store rx_dat_o. + rx_done_o : out std_logic; -- Indicates receiver is idle + frame_err_o : out std_logic; -- High = error. Reset when rx_restart_i asserted. + parity_err_o : out std_logic -- High = error. Reset when rx_restart_i asserted. + ); +end async_rx_sqclk; + +architecture beh of async_rx_sqclk is + + +-- RX signals + -- rx_clk_i synchronizing flip-flops and rising edge detector +signal rx_clk_r1 : std_logic; +signal rx_clk_r2 : std_logic; + -- RX input synchronizing flip flops +signal rx_stream_r1 : std_logic; +signal rx_stream_r2 : std_logic; + -- RX signals + -- RX State Machine +type RX_STATE_TYPE is (IDLE, CHECK_START_1, CHECK_START_2, RECV_DATA, POST_RECV); +signal rx_state : RX_STATE_TYPE; +signal start_bit_start : std_logic; -- Signals falling edge of rx_stream_i +signal rx_sr : unsigned(8 downto 0); -- Shift register +signal rx_bcnt : unsigned(3 downto 0); -- Number of bits left, counts down +signal rx_bcnt_start : unsigned(3 downto 0); -- Total number of bits +signal rx_parity_good : std_logic; + -- Timers have been sized to hold baud interval for speeds as slow as 9600 bps at 100MHz sys_clk +signal rx_timer : unsigned(13 downto 0); -- Elapsed sys_clks from last bit time start +signal half_baud : unsigned(13 downto 0); -- One half of full_baud +signal full_baud : unsigned(13 downto 0); -- Baud interval, as measured from rx_clk_i +signal baud_timer : unsigned(13 downto 0); -- Used to measure baud interval +signal bit_sampled : std_logic; -- High indicates bit is already sampled, don't allow resampling. + +signal first_edge : std_logic; + +begin + + -- Synchronizing flip flops to avoid metastability issues... + rx_stream_syncproc: Process(sys_rst_n,sys_clk) + BEGIN + if (sys_rst_n = '0') then + rx_stream_r1 <= '1'; + rx_stream_r2 <= '1'; + elsif (sys_clk'event AND sys_clk='1') then + if (sys_clk_en='1') then + rx_stream_r2 <= rx_stream_r1; + rx_stream_r1 <= rx_stream; + end if; + end if; + END PROCESS rx_stream_syncproc; +-- start_bit_start <= rx_stream_r2 and not rx_stream_r1; + -- This signal has been rewritten carefully to avoid "artifacts" which occur + -- during simulation, when rx_stream_r1 is 'X', in a manner reminiscent of + -- metastability. + start_bit_start <= '1' when rx_stream_r2='1' and rx_stream_r1/='1' else '0'; + + -- Synchronizing flip flops to avoid metastability issues... + rx_clk_syncproc: Process(sys_rst_n,sys_clk) + BEGIN + if (sys_rst_n = '0') then + rx_clk_r1 <= '0'; + rx_clk_r2 <= '0'; + elsif (sys_clk'event AND sys_clk='1') then + if (sys_clk_en='1') then + rx_clk_r2 <= rx_clk_r1; + rx_clk_r1 <= rx_clk_i; + end if; + end if; + END PROCESS rx_clk_syncproc; + + -- This is the baud interval measuring process. + -- Measurements are only made between rising edges + baud_measure_proc: Process(sys_rst_n,sys_clk) + BEGIN + if (sys_rst_n = '0') then + full_baud <= (others=>'0'); + baud_timer <= (others=>'0'); + first_edge <= '0'; + elsif (sys_clk'event AND sys_clk='1') then + if (sys_clk_en='1') then + if(first_edge = '1')then + if (rx_clk_r1='1' and rx_clk_r2='0') then + full_baud <= baud_timer; + baud_timer <= (others=>'0'); + else + baud_timer <= baud_timer+1; + end if; + elsif(rx_clk_r1='1' and rx_clk_r2='0') then + first_edge <= '1'; + end if; + end if; + end if; + END PROCESS baud_measure_proc; + + + -- This process handles the incoming bits + uart_rx_bits: Process(sys_rst_n,sys_clk) + + procedure idle_prep is + begin + rx_done_o <= '1'; + bit_sampled <= '0'; + rx_bcnt <= (others=>'0'); + rx_timer <= (others=>'0'); + rx_state <= IDLE; + end idle_prep; + + begin + if (sys_rst_n = '0') then + idle_prep; + rx_sr <= (others=>'0'); + frame_err_o <= '0'; + parity_err_o <= '0'; + rx_wr_o <= '0'; + rx_dat_o <= (others=>'0'); + elsif (sys_clk'event AND sys_clk='1') then + if (sys_clk_en='1') then + -- Default values + rx_wr_o <= '0'; -- Default to no data write + -- Handle incrementing the sample timer + rx_timer<=rx_timer+1; + -- State transitions + case rx_state is + + when IDLE => + rx_done_o <= '1'; -- Indicate receive is done. + bit_sampled <= '0'; -- Indicate bit is not yet sampled. + if (rx_restart_i='1') then + idle_prep; + frame_err_o <= '0'; -- At rx_restart, also clear error flags + parity_err_o <= '0'; + elsif (half_baud/=0 and start_bit_start='1') then + rx_timer <= (others=>'0'); -- Reset timer back to zero + rx_bcnt <= rx_bcnt_start; -- Initialize bit counter + rx_done_o <= '0'; + rx_state <= CHECK_START_1; + end if; + + when CHECK_START_1 => + if (rx_restart_i='1') then -- Restart has very high priority + idle_prep; + elsif (rx_stream_r2='1') then -- High during this time is an error + frame_err_o <= '1'; + idle_prep; + elsif (rx_timer>=half_baud) then -- Must use >= since threshold may change downward + rx_state <= CHECK_START_2; + end if; + + when CHECK_START_2 => -- During second half of start bit, don't verify low level + if (rx_restart_i='1') then -- Restart has very high priority + idle_prep; + elsif (rx_timer>=full_baud or rx_stream_r2='1') then -- Wait for end of start bit + rx_timer <= (others=>'0'); -- Reset timer back to zero + rx_state <= RECV_DATA; + end if; + + when RECV_DATA => + if (rx_restart_i='1') then -- Restart has very high priority + idle_prep; + elsif (rx_timer>=full_baud) then -- Must use >= since threshold may change downward + rx_timer <= (others=>'0'); -- Reset timer back to zero + bit_sampled <= '0'; + elsif (rx_timer>=half_baud and bit_sampled='0') then -- Must use >= since threshold may change downward + bit_sampled <= '1'; + if (rx_bcnt="0000") then + rx_state <= POST_RECV; + rx_dat_o <= rx_sr(7 downto 0); + if (rx_parity_good='1' and rx_stream_r2='1') then + rx_wr_o <= '1'; -- If all is correct, create a one clock long pulse to store rx_dat_o. + else + if (rx_stream_r2='0') then + frame_err_o <= '1'; -- Record error if there is a bad stop bit + end if; + if (rx_parity_good='0') then + parity_err_o <= '1'; -- Record error if there is bad parity + end if; + end if; + else -- Process a new bit + rx_sr(7 downto 0) <= rx_sr(8 downto 1); + if (rx_parity_i = "00") then + rx_sr(7) <= rx_stream_r2; -- Store the new incoming bit + else + rx_sr(8) <= rx_stream_r2; + end if; + rx_bcnt <= rx_bcnt-1; + end if; + end if; + + when POST_RECV => -- Wait out latter half of stop bit, checking for start bits... + if (rx_restart_i='1') then + bit_sampled <= '0'; + frame_err_o <= '0'; -- At rx_restart, also clear error flags + parity_err_o <= '0'; + idle_prep; + elsif (start_bit_start='1') then + bit_sampled <= '0'; + rx_timer <= (others=>'0'); -- Reset timer back to zero + rx_bcnt <= rx_bcnt_start; -- Initialize bit counter + rx_done_o <= '0'; + rx_state <= CHECK_START_1; + elsif (rx_timer>=full_baud) then -- Wait for end of start bit + bit_sampled <= '0'; -- Indicate bit is not yet sampled. + idle_prep; -- Asserts rx_done_o to indicate completion + end if; + + when others => null; + + end case; + end if; + end if; + end process uart_rx_bits; + + ------------------------- + -- Assign number of bits to shift in. + rx_bcnt_start <= "1000" when (rx_parity_i="00") else "1001"; + + ------------------------- + -- Assign half baud period + half_baud <= ('0' & full_baud(13 downto 1)); + + ------------------------- + -- Parity check process + rx_parity_check: process(rx_sr, rx_parity_i) + begin + if (rx_parity_i="00") then -- No parity... + rx_parity_good <= '1'; -- (always good.) + elsif (rx_parity_i="01") then -- Even parity... + rx_parity_good <= not (rx_sr(0) XOR rx_sr(1) XOR rx_sr(2) XOR rx_sr(3) XOR rx_sr(4) + XOR rx_sr(5) XOR rx_sr(6) XOR rx_sr(7) XOR rx_sr(8)); + else -- Odd parity... + rx_parity_good <= (rx_sr(0) XOR rx_sr(1) XOR rx_sr(2) XOR rx_sr(3) XOR rx_sr(4) + XOR rx_sr(5) XOR rx_sr(6) XOR rx_sr(7) XOR rx_sr(8)); + end if; + end process; + +end beh; + + +------------------------------------------------------------------------------- +-- Asynchronous Transmitter With No Buffering +------------------------------------------------------------------------------- +-- +-- Author: John Clayton +-- Date : Aug 08, 2013 Added this change log header, which was missing. +-- Changed tx_done_o signal so that it pulses after +-- the stop bit is finished. How could this have +-- remained so woefully incorrect for so long?! +-- Jan 02, 2014 Fixed a latent bug in the logic for asserting +-- tx_done_o. Prior to this fix, it was possible +-- for a write that was coincident with do_txbit to +-- be ignored! Once again, how could this have +-- remained so woefully incorrect all this time?! +-- Jan 07, 2014 Rewrote the startup logic to allow for cases +-- when tx_wr_i='1' and tx_bcnt="0000" and do_txbit='1' +-- Also rewrote the tx_done_o signal so that it is +-- asserted earlier - when "tx_almost_done" is high. +-- This is all calculated to allow the transmitter +-- to send characters back-to-back using its own +-- tx_done_o signal as a tx_wr_i signal. This is +-- actually getting pretty neat. The unit sends out +-- asynchronous characters, but insists on doing it +-- in synchronism with the tx_clk_i input... so it +-- isn't really very asynchronous in that sense! +-- +-- Description +------------------------------------------------------------------------------- +-- Squarewave tx_clk_i input determines rate. +-- (tx_clk_i need not be a squarewave for this module, since only the rising +-- edge is used. In the accompanying receiver, however, both edges are used.) +-- +-- Description: +-- This block transmits asynchronous serial bytes. The Baudrate and parity +-- are determined by inputs, but the number of bits per character is +-- fixed at eight. +-- +-- NOTES: +-- Transmit starts when the transmitter is idle and tx_wr_i is detected high +-- at a rising sys_clk edge. +-- +-- Once the transmit operation is completed, done_o latches high. +-- +-- Since the baud clock might be asynchronous to the sys_clk, there are +-- syncronizing flip-flops on it inside this module. + +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.NUMERIC_STD.ALL; + +entity async_tx_sqclk is + port ( + + sys_rst_n : in std_logic; + sys_clk : in std_logic; + sys_clk_en : in std_logic; + + -- rate and parity + tx_parity_i : in unsigned(1 downto 0); -- 0=none, 1=even, 2 or 3=odd + tx_clk_i : in std_logic; + + -- serial output + tx_stream : out std_logic; + + -- control and status + tx_wr_i : in std_logic; -- Starts Transmit + tx_dat_i : in unsigned(7 downto 0); + tx_done_o : out std_logic + ); +end async_tx_sqclk; + +architecture beh of async_tx_sqclk is + +-- TX signals + -- TX clock synchronizing flip-flops and rising edge detection +signal tx_clk_r1 : std_logic; +signal tx_clk_r2 : std_logic; + -- TX clock enable, shift register and bit count +signal do_txbit : std_logic; +signal tx_sr : unsigned(9 downto 0); +signal tx_bcnt : unsigned(3 downto 0); -- Number of bits +signal tx_almost_done : std_logic; +signal tx_done : std_logic; + +begin + + -- This process detects the rising edge of tx_clk_i + tx_clk_edge_proc: Process(sys_rst_n,sys_clk) + BEGIN + if (sys_rst_n = '0') then + tx_clk_r1 <= '0'; + tx_clk_r2 <= '0'; + elsif (sys_clk'event AND sys_clk='1') then + if (sys_clk_en='1') then + tx_clk_r1 <= tx_clk_i; + tx_clk_r2 <= tx_clk_r1; + end if; + end if; + END PROCESS tx_clk_edge_proc; + do_txbit <= (tx_clk_r1 and not tx_clk_r2); -- rising edge detect + + -- This process loads the shift register, then counts as the bits transmit out. + byte_tx: Process(sys_rst_n,sys_clk) + BEGIN + if (sys_rst_n = '0') then + tx_sr <= (others=>'0'); + tx_bcnt <= (others=>'0'); + tx_stream <= '1'; + tx_done <= '1'; + elsif (sys_clk'event and sys_clk='1') then + if (sys_clk_en='1') then + -- Start a new transmission when ready + -- Case 1 is starting while do_txbit is high + if tx_bcnt="0000" and do_txbit='1' and tx_wr_i='1' then + tx_stream <= '0'; -- Provide start bit + tx_sr(7 downto 0) <= tx_dat_i; -- Load the TX data + tx_sr(8) <= '1'; -- Default the parity bit to one + if(tx_parity_i = "00") then --If no parity... + tx_bcnt <= "1001"; -- send start, 8 data bits, and stop + elsif (tx_parity_i = "01") then --If even parity... + tx_bcnt <= "1010"; -- send start, 8 data bits, parity, and stop + tx_sr(8) <= tx_dat_i(0) XOR tx_dat_i(1) XOR tx_dat_i(2) XOR tx_dat_i(3) XOR + tx_dat_i(4) XOR tx_dat_i(5) XOR tx_dat_i(6) XOR tx_dat_i(7); + else --If odd parity... + tx_bcnt <= "1011"; --send start, 8 data bits, parity, and stop + tx_sr(8) <= NOT (tx_dat_i(0) XOR tx_dat_i(1) XOR tx_dat_i(2) XOR tx_dat_i(3) XOR + tx_dat_i(4) XOR tx_dat_i(5) XOR tx_dat_i(6) XOR tx_dat_i(7)); + end if; + tx_done <= '0'; + -- Case 2 is starting while do_txbit is low + elsif tx_done='1' and tx_wr_i='1' then -- Only allow loads when transmitter is idle + tx_sr(0) <= '0'; -- Load start bit + tx_sr(8 downto 1) <= tx_dat_i; -- Load the TX data + tx_sr(9) <= '1'; -- Default the parity bit to one + if(tx_parity_i = "00") then --If no parity... + tx_bcnt <= "1010"; -- send start, 8 data bits, and stop + elsif (tx_parity_i = "01") then --If even parity... + tx_bcnt <= "1011"; -- send start, 8 data bits, parity, and stop + tx_sr(9) <= tx_dat_i(0) XOR tx_dat_i(1) XOR tx_dat_i(2) XOR tx_dat_i(3) XOR + tx_dat_i(4) XOR tx_dat_i(5) XOR tx_dat_i(6) XOR tx_dat_i(7); + else --If odd parity... + tx_bcnt <= "1011"; --send start, 8 data bits, parity, and stop + tx_sr(9) <= NOT (tx_dat_i(0) XOR tx_dat_i(1) XOR tx_dat_i(2) XOR tx_dat_i(3) XOR + tx_dat_i(4) XOR tx_dat_i(5) XOR tx_dat_i(6) XOR tx_dat_i(7)); + end if; + tx_done <= '0'; + -- Process through the remaining data + elsif(tx_bcnt>"0000" and do_txbit='1') then -- Still have bits to send? + tx_bcnt <= tx_bcnt-1; + tx_sr(8 downto 0) <= tx_sr(9 downto 1); -- Right shift the data (send LSB first) + tx_sr(9) <= '1'; + tx_stream <= tx_sr(0); + end if; + -- Assert tx_done when truly finished. + if tx_almost_done='1' and tx_wr_i='0' then + tx_done <= '1'; + end if; + end if; -- sys_clk_en + end if; -- sys_clk'event... + END PROCESS byte_tx; + + tx_almost_done <= '1' when (tx_done='0' and tx_bcnt="0000" and do_txbit='1') else '0'; + tx_done_o <= '1' when tx_done='1' or tx_almost_done='1' else '0'; + +end beh; + + Index: rs232_syscon/trunk/VHDL_doc/async_syscon_guide_OC102517.odt =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: rs232_syscon/trunk/VHDL_doc/async_syscon_guide_OC102517.odt =================================================================== --- rs232_syscon/trunk/VHDL_doc/async_syscon_guide_OC102517.odt (nonexistent) +++ rs232_syscon/trunk/VHDL_doc/async_syscon_guide_OC102517.odt (revision 8)
rs232_syscon/trunk/VHDL_doc/async_syscon_guide_OC102517.odt Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: rs232_syscon/trunk/VHDL_doc/async_syscon_guide_OC102517.pdf =================================================================== --- rs232_syscon/trunk/VHDL_doc/async_syscon_guide_OC102517.pdf (nonexistent) +++ rs232_syscon/trunk/VHDL_doc/async_syscon_guide_OC102517.pdf (revision 8) @@ -0,0 +1,1918 @@ +%PDF-1.4 +%äüöß +2 0 obj +<> +stream +xœ­TMk1½ï¯Ð9ÍŒ¾‹ NìBNMcÈ¡ôÔ6 +Å.$=äï÷ÍH›uš¶ŒµšÍ<ͼlž†C†FgB £7ÙóÍã×áöÄü®XCñc»ÉùÙô`XêÚ>ïU!q¸yš[8ž½÷æç½¹îÁæTî(–\±b/‘¾Ñ;væÃ;Eø„ÿ’}lIcДÅìê»ì1[ÀØ)ÒÃýìqxr7Ü7Ã1¨ãû« +¿ÇoÃj;X.°%öðÛ~1g6ÍöîãDL¶žÆ‰\e;‘¯§XEÑŠ¢©-TIMÍ!W,E·çº®Dq¡ÛËúi{5¬·€(•–_‘#°¢4¸ƒb°Æ採úI"y +›8+ª›m¡Ú2Q‚GEÀ«oâ\Ä%Š[Ñàð|~M›Ê„SLP2×WÑ&T yÆtŒ6T‡Ø‰mežãGv5å®R`Àº–-KVMÙ×">yâ pÄÁR?èû=UˆåÃä9i„´‡ +œñÎ6¬Î°+«è²Ô1H÷l_BC¬+:¤§§‚¦TNÒÕ×ÙÒiäIïmÕŽY½)tGöŒ£òEOh½ÄÿËpÁb…Œo°ÁÁöÃh1FÁáL03" TcÁ£y¿K³ãAÆéîä߇ø­sß¼`^VWÜL=~®òº÷ Þ´VÊèÊ4‚Òh@£÷Á‰ •Ô?ŠãhÞ“¥2OåÂLpæ²ÍŽ®MB¹%i#/~M!0:BÖw… ß@õ;Ó@éØ R;°îtŒ3’öÀy¹ÞƒÒ#ë‚ô,3§(7ŠïdtïÜ~ˆhjvæY"È«ÿBP·%Àÿ2ã­s·GþºÛq~ +endstream +endobj + +3 0 obj +655 +endobj + +6 0 obj +<> +stream +xœå[I‹ä6¾×¯ð9Ðí–Áܵæ–¤!‡!·,0d3—ùûy‹$Ë–ìJoã΄wÙ.IOïûÞ"é•8ÊæËáS#qÔíìÑ4ÞÈ£k>ÿ~øå»æo~Ÿÿ<Ü?¬;ú¦m +4{ø­ùþj©š‡?Þ÷B²j¸3½ÐÂ+œhñ‘­ðƒîáÝ`l/F~<´½¸~}xw¸<~¬ +ç:RÑp®‘.×BoJèáNA¯ƒÂÜp[zäñ‘ÃKG÷í`hL…ÃÑ·³›Ó¶­„+ `Ò|Ï‹+´•/’úa`b^©`|ë{Éâ)TD Íp']/í Û^¢pÒ@Ó•±¥µÇ¶:¸l¿­¿áÔ±ßu +{­Ž]EÿȨ‡ël±W:ᥗø¡˜Ñ,\OˆBÄŽ5&( Wv¼7nß(žÏû8ÆsTKhï3'ò¼Gp0ìHØåœÙÝ$òD¿#/àdÛØjQŽ|KmàÝÑãÌÚF¾Ð( ¹‚} &­E mò²Åè"¯JpL•½’J‘ã!`t« šöhë}î®øÿ¸ÿèBËÛ@K9Uh +ìluä„/ <Èá1Wð}Ý´)Ë¡¸â&ýŒ/øY)œ +|e*J[$LM¶ÝÁ|q*lÃYè`N¡Ê¤ àD¯MšÏü5{k¼(‹%ª,}GŠàÔ·¢¿é¥Ú»ëùÕQ{›ñ½À¢Wn-Öw®(—qxV† +ø‰T±Ä«Œ·;´ß 1žMž%:ëÔñ˜õÛÖ9Zîî[ø ˆH—%8†ÏZ|â.ŠåEñŠ˜\킆oÆpuaåªîñ +y¨í!J­E«pï "çÞ´Ù‰RÛðzÂm‰-8YäsO%À´'Ák uR˜_ðôêþ_0Z­.uUª½!}Cx,) +mÞ"¤úËœí©¤èëAJÓ3ôöÑŒ°œ¬ µ7ƯțmD ]ô꺉¨ÖE~÷TDµ ãFÌtðòO´òŠP{kÿ‰h½+/´y‹J¼”_8ªŸBÌ¿j…Ÿ4-=ùJÉ„°õwÕáéjØ×÷Fûy±íB·îŲ:\6hXÛ2wÄÇUzð]Š +:˜:Ù>¿g±tÉ~MÚ½ÿêxÚ”zíÅe}cÁ´¾¾«8>ckÄ +Iˆ[Rà9õ§Ád:˜`N'Ò(µ~ì ”>ںػóåÕX·x¡‹mÄ©n<ªë+#î5¹ˆudiK¬*Þî˜<¯·ÝfTÁ6£¬¬y ð‰wƒFœTà°ˆ8ÂÊq:Š¸ÁéÊW¸; þ7üÙfΙ^¯[#ot[9´–­Ž'ZÉ Í¨Ã9Œz> +stream +xœÅZËŽì¶Ý÷Whm`:|Š èžž à“²0²‹Àˆ +ønüû®É’D©'÷.ŒzZ¢HÖãTÕa©ÍÕ\~Ì`®~ˆS¼†!{‡/?]þõÝðÛÅ\ó`áïË/q¼¦ÁMîêëFüœ`Ò—Ÿ†Ÿ¿»Ø쮓 úỤõáÖ¸à2yH)ÀÖÿþöaµáãçgc;·¼„ÙxL4£IxËËÍhòâgÍ´„8›ß^ÒlîË¿?¾¿¼}\~ènçP$Únl¾â†³–_zSR3ô¦€Œãòâf{[î ²½Â‡EÁ­3ï4vY@Jº0IdºÈË‹•‹‰îÀ,YæÅËÀxªÉ8%ÖˆF±@Üúu­Gós¿öç‹ZÜßô ^¿Ñç;iG’£;lFI-›ÎeMˆ*Ú+'»7ØÃ?pÃq6œ™¬[ÎÑ?œÁŸP”lX|6 ›Eÿ'¾¦A“a8™üògàÇ<®p79Ђ z.3&ðÑä"^Y3[p@*C¼ +ËKšá1ûW±ÚŽüKA¦mn'|s×)Y=“XT̳ËAB w ¢ +'5Ò,©`&ó +  ¸3ž»!zø\»ÁÞDÃÙÄk†­Êi&AýƒµX™ÝAbøÇÊL°\`³`&˜ˆ•”ïA­æÕzðìMPppl>ÙŸ +SŒICbA´— l&³‹YJ'p!Áº,s ­qž83W0в$„~ñO5IÐí"Mª‡Ø9uO˜\VîiÚÒ ˆ› +ÊÄ[†c—žWñ³©ú»Z SFÒkO¬GÞ*¾n€SÔHBAP@æqôf¬þ‡í&5(èXþí͹ðÅà ÅÅŽ˜KU^aMæÖTâR0ØWNÈ +0,§†w +ÚÆð÷NxÉ +.¶¡e -RYx×áÑ,Í8%4U|¬W9 +ŽÁ5$„´£9ƒ§ÐîÙ‚Ûæ¿]<ŠÇb÷u%?a:-„'¾x(`$ñXvTwLs±ÃÙU\Ê_‚3ŒjQ¿LCŽZe8÷›©Ü¡ù +UcS€pY®ov\ûCT—8Ñ W!#š€¢xc›ªÔä±Ê½RÁñWfr®Ke­N8:,f´gzñY +;†=Ñn`åñ8»BP„÷E¥9HQÂJR:JŒBŸ.Fæý‰ƒbNÀ46u¿˜®—Î÷dÔ‚&è8­áM²ù¥z,;™ƒf‚EwñqÅ|Ø®Ôðcç’œuù€Li§­gKkâoVÐRÀB5º¬¸w§hÕFî¨Ú£µ>wRÚÅÐ*¡`vlØ,ZŠL©ð–¡{6cRrQ§:áWuDJW©©0üÐ$ÉBñ†Â2)âõL®ñœ]SÚ)X +Yݾ„dê z¢ÏÞ¸ÁîZǺ U2aÙIƒ£¥«^Õ)É©MãB˜…¹ ä+‰Ñ¯bÍûeä¢Sá*Edr÷ +»àí’J*í;w“¯ŽÆ>ktUʾ¢ôû¬X‹ÓmFnú€ÕZAñMäÉZ GF¤Ø¬xE[ˆIhùMRˆiY§¤%1Fî¼Mæ4½À íòÐÈ×”’P,² ì›Å pÄu­+Ð*¥ŒÄÕ í“²Ž»=­K£fiŠ£m˜¹n0 »ZbÙæ +Wëv!2ÿç©lGEË!C–v¶âïa[ªÝÅCÙ¯‘-Š[)ü‚ÊRRQ†Éb“£ZzªJ ?ñt®ÅC¡þ̇aJû#^;à•3¶>Z–Õ»öSG²§©½dÆrbÚÓ¯–•jåÆ)ºøT¢§ñr$ŠÔôÞéfuòS,žœZ« Ëq‘K œ[$óùº·›[…YU=wY¶»æˆVENË#•»Ãùª‘ÿmdã÷¼ßrM±E +}܈ +â` +aäAów«¬¿:·‘*E™ˆ ç–µ5ÿOqvæ\Å‘¨»O0¢0†Ýypö*¥FM Šsà¦YPŽæö]fÐáÐÔNzåŒfx6pÛ¼öþ©Í4µöÕ#¾1xm‹[~추NÞ¨Ö¼/ÛaÞªÃæHþÙY餷®nTöÇA½ñv)WON=Öq¥ÑùúÛ(Ç'N“›3 ¬@ KÖÚH»d[WŽÌ"Á¦oç1—åVeýøUM˜,@®·Ú×½ðq[Ø:”êó|×£\§¾˜tbÐÙÈ®‰¨>ß 4n¥­Ø‡j™à>sÄ?fÛ~«:èø{kÛÒ˦9úv Ð×Y÷Ü—ÁìÎk¥£ˆHXÞ +þ›ao5.Ë€³Içô²G\;°»á¾¬7êY^^©¬_XMÝY–þ_‘û»^žqH™d•óèy'“wçÁ¢yy‘­êdÓ!øÜ}Îïú!JoÅ“KãœtãÚ»¾Hiž†r6åuÀ¢ã3ª™áÂd³²¤X©¼Äê¼oª~÷ ÿp+¢^ª}¦¡k:Ûíç_xkó¿ÊÏ øêÃ?W׿^¢Ïhà:Z°`ëT¾jSË(Om£<59ø¬SéJM•Q™ZGyjôJ`¾RSeT¦ÖÑ•ÀJñDêÁÝ–êÁ½ž}nÝÚh­KSTÙ¬c|e–Ž}•æ{nÂf‚Êê¦N·÷ÞˆØùO',ºÜ]ÃÖ×V«–TyöØT/LÑGÑMb¦ýáã«âm:[uÚ‡ý¨¥æq\‚×­>ü¸zukÖݼ GZ¾mð™cFN–‰y×¢úZº÷Ä0È0G aÓhSokŽû'ßfUÕ`Ú¶RNÅ;më¬Gãú±`!©ŸSå ÄßRá:‘ëÜÑ:Á¡évëàÖý_I¹»3~$òûNí s§ßI™‡¾Ç_éþ<ð0ï0çUÈVkÍÊQŠ<çbsm]Zg{¯Òÿ0èß¹ùíïÜJ½ù}€ ‡?àêûÁ¿\MÓÆHy +‘Œß1Ká’Š Hj +endstream +endobj + +10 0 obj +2440 +endobj + +12 0 obj +<> +stream +xœµ\K$· +¾Ï¯è³íH$õ +ÌììðÍñ9¹%N`̈/þû©«º»8›l`x¦TCJ?’"%Õº³?ýþôï“;¹3žB g:eòçxúíïOþáô¯ö·úßoÿxzùòâ9ŸR¢Êöåo§?|'§/¿üåâüÕ_\?ÐÅ¡#\t‰_a\¾â¥þ%ºr¥pqÏíõ5]ÜËõ¯_~|úôå駻ÃA:—6\<ùÈC×}¹~€‹ÿx%~|ÀŸCÉ}~™¿ÿí£tèùñ³¼ý\ûÇõ­ÇõèåQ&ø|,¼KU±28 +]Á§+\ð•ÇŽ—ÁÕnzÀ®þY~@à×>_|¸Bï‘#O.÷G—F_7òWL×gèÛ›öD¯0»ÊÒYjG?µ‡Êé#êw*²Õ®kwµ§Êç_¯Ò¥Ð{4­2n®"±ÉÄ?ÚtÉ—Î’ç î³2¤&hô•'zÍÕÿà«S‘áä]é¿Zu`VJ>„&wN;h¤|™ZÈ’¡†úƒDpQ:cƒáŠAÓU©ëçU¦é’üjÐ,ýu¨² þ¹“e§àª§š•ÿ<úª’>_ãEÛNäÚ$³Ï˜ùÝÐí«(PȲš•ü%9ÂOíåNí¾ãhZUWPëeYÚw±ún5ÝfBW3Ɉ£­ÙÈt¦C’€59E¸#$Äé,Ã:+e3 +­ éOÄ1dˆ# -s #å0šŽr£Ì÷X ¶­ÚÊìÛÝd6…nŸ„#0òŸ_–su…4WÌB¿th6¦ƒÙ"‹B_¼|Ñ‹ + +L›ãÎ&Õˆuf4#GSSÙè룻-$QÍ€BtÍëÙŒò¼&½Â*MÛiš®è¾ í=+˜n}e03œ°9†«øó³L¼þèRôÕœþ$“cŸN:nwÙ®¢™+Þ²ÎÕ`¨B(¯!w[óY–m +»%«Ïì'çêÏ-N¢Š÷øæÎÕ*JÝpoî[¯_­NÞ«X‘ÕÒPÇ›.4!U!«›¶0*Ó 5óPñ0Ajp•… àÏ*ÞÕ—/wtή4V÷¼‘ Iý‰{ÖzÛEš#€0Óö™¯cÞ.\¼'>6SÌfB÷h‹ž·«Ãuec(U½¼í ZŒp¦ƒ÷&NÍŒ%õ,éVçß?zt?Ä)¦›Ìg¿´0¶4Ò5ZØŒ»Ïöƒ§v´3dªE‰ÆÏq«Œõ¹Î¼gEò†UªºzÞ¥}Pß̬³«|ïš:AÄ«ÊÖº–‹Î-‡»yûB71ÚXèµ^9›ªª›WaÁ±6ŽEkémcdyª,˜+­²‚C,ƒÅØò¹ËÞ,—,\÷ ññnAÝ*á&Šönnòõî“ÍL›«0¾:ºì–Š¸´ˆ×]ÊÑÓD‚Î’Ù·‹î–¢B“¸Í3Ç´´[ˆ[ vtÏæZÖKKIú†ô‘j­¹ó)×la$ÁmVŸš ­7Ú&Åy}ªãÕõu'³Û&>ï½F­1Ômˆl-¢C#¼+«ŽÇ¢’úÖaËÉI­ð*Í°³Úû°ª:æq –ó‡ÒäMÁø¢KÍC(ýM–Ñ—•UGOã¸Å&×Õ"Gê…QŸAõ0qªä×T×Y*?Þ[ïSS_>‚ëQ­jš—ï±®¾Üâs°ÀOÓš1-¨š},²»¬eÍuX®^(‘sþö5V¦l+Ï¿6»û5c9V_æZþ±é¦–ÕmV?°yígÑWû»¼¢³Î-a,qBýhYØ-e;Ñ«_·YÆL!a¬tÏÍçV¸ÜŒnÒô̵þÆó‡dâ‡h@M÷o_g\æ¨í.„ýbÝ{˜xU¡ùNøQ•Úƒ­§›ìùΦÓvÝÞ9µñP/»¬§ÇÙ®µ™3¤1þ8²ŒMÖ1¯ôŠ«"|³w¼K”Æ.ÑýÓj G;§÷ù휶$hÅ6ØüMm°¾së Þ”{³Ô¾ :“¬‰÷Ñ¥™ÃsÏ‚tžßü1ÏJR“mÓ–M]¡+Âÿy[kV/úk¬"y“7Öà_¶ËH[ìáFôùÈxÕ˜Ï7…ˆN­z|ù¶R¯ùÍžIŸKÏZà²[¹o7|-¿Ûd›=¡;CI$µU±ó6µI¹Rㆌ¸£Av®†¸Þ*›±%tåµTßK3;«iLRûb»øônë…ÇîPCk(»øzxýòkcøé¤upw¬Ó:ûÓk¿þLáô{mýxò§_ŸB®¦N_ë(…ÏOêóÛéçÚ¥;ÕL¥vÔßU›)Þí +çáF¯µ5z´Ö[]Jh´~–ÙíÙ3‡žÉžWg Ö´“!±jŽRVäá 9N™™ÁÕDã˜!f­€ÎÙbÀ)33x¥±û X Õ/Éb )53ø©±G TÎJKd’‡)3“ƒ‰292&e eñƒÁk‘ ›8CÔ"š8ƒ×"ùlâì59™({І犉²KÚð™(;ІçÜ1¹/Y™—àb0 2»ö-”}ÎÊì|ÍE ”}&…²ÏÞBÙ§¢P®1ÌBÙ'R(ûä-”k>»Èc²Pö1(”½ü6œBÙ‡d¡ìCP(û`¼F™²‰2E2éˆ=ZxÄÞHX +‹=W½3T5Oòƒœa\ é,†¢çS0ÄC¬J7ØØ'CáUú˜¡ ©Äª1ƒ!+‘‚3T(‚ãˆk0°'ƒwÊÁ³C°PžÕ¸Š…sVãd²p•á(ΕJåh× Êðf å Kãd ´P²ø.KC²´Oò&Ê’<,†d¢,éÉdˆ`¢, Ðbˆ&Ê’bM†äM”%‰[ ÑD9)eg¢,Ièb&Ê’æN†âL”%‘^ Ö„KÔ(—b¡eíël‘…rtQ¡kzb ½S(GÊÑ…r¬ –1éN¡\K åjÊL (”cMB-ʱ¦¹–@XʱVn†áEB…s¬K±ax‘²Æ¹.ö†áÅ€ç`õ’F9:Óðj|P(Ç`^LåZY†—”ü5$IL¸,­Ìi2pÞÄ…ß1Cà„}1pii0$EÎ…ë1yä‚c2D=Ÿ \Ò,†2Å{˜»rÑ4YäK‰Lž§xÓõ¥DN×ñl—¿Jyà-†¥F.9ÀD¹F¹$åRÊ\B(×BL‘G epY¡ Þ[(ƒG…2øh +ä³BÀ™"(œ‚)$…3 ³ zP €Q¡ X,Ãò +e ² (j”©X†A©4 ev‚F9dËì :rDå4Ê1™(Ç¢QN`¢œH£œ’‰r*ålÍ £F¹VTÊ9k”kEe¡\P£\¢‰rYB¹•vHŽÊX+*etI¡Œ5c2t„ÊèÉB}Ô"ùb¡ŒàµHµ¢2PFˆZ$°B§Ì-”ƒ2;¬•2’Sf‡5c2PF"exHÉÄ™Š2< `âH†dâ”@Ñ›(GÔ(Çh¢³F9yå„ådõŸ’F9;å åL”sÒ(g¢\¼F¹æÊ%j”k` LÎ+”É‘…2¹¨È³…2y§P¦š( +eòÙB™À)” LrR($ e‚¢P& eBR(& e¬P&Ôñn´¶:I,šýhƒbE~°w8HZáÚ[á`wr´Òx´ö?I+¾{‹öWI+ïGë`w´ +„ÞÂ|„I#i[£eõm¤· <.\IÛb-z\Ð(ûò¸ø$J~L”=j”½3QvY£ì‚‰²C²óʼ1´PæM#…PH¡Š·P¹(”C6ɃB™·Õ ”ysn¡R²P)(”C å”@1[(óö%*´PRÖO†-”CÐädb,Û“Š‰±l|,21&PfÈ䘵Ña01FÔF‡ÎIJ6:&Æ@ÚìÀ›(û¢ÍÎGeOeïM”½[ä.™(» QvvƒÄ)”©$ e*A¡LÅ´Ê|Øe1ä¨P¦ŒÊ”½B™R¶Pæc?¯ÈB™Ê‹…2É‹,”)¢"o qVcœ¹’Ô@ãÌ•ó&ãd¤Êš òeô1ƒTq‹­“u’:q2Èný1ƒT¢‹­“uòë\šä¼á˜Ü-5¶ìÛÈ-5¶üÞKR'ëX‚%–¥ÆV£‡ý˜³Â™« ã°3*œ1[¥¢P®Uœex˜H¡Ìu¢ax(©ódˆÑ2<ŒjÂ’:äN¡Œ’:3Hê¼ÀDYRçÉ ©ó1ƒ¤Î‹M”%už ’:3H꼬þ4Ê`^ÂCЗðÌKxúzój±ÈÍKxèõ%<ôæ%ä]»(¹!‡ˆ­f|äE ¯B÷¯ý>´/Ž>³F9t +.Þ@Ø9£¨]zŸ·µS}Э—4Eî-ípüÈ6áùŸ‚gJ]ú~ÉObŸ´ÞN­CKØùîlܵ:妗wÁùÿöR_ŠÔ•{@ÛgUEr½ä;ZJü‡ïo;Îx%p¡ús¼ëYµ›ö¯øv_]×_¢VCvXø +8–è_ §Yƒ^âxìu…OrîF±öˆ±ÊÄÚŒŠÑ÷Ýfl-¾É»ÞãìT@ô'ßÌDöCn×—g­ñv’FôífA•ró<ˆ{¬[­Å"I}ýÐï“|@Íããø_ HìämeÛ…k¼`¡æx¡ ÀR´‚Êùºäìɉ?òLíÙ÷ݶÝäßâò]‡»ì¸*çK47ÁNt^M6ñ÷L¬q‡²¼°ªš5E&9-¸ +xüA=\¡b +ô¹ô.è^öåùH4ögÃZÈPlçuÿ²·|o)ÊÅŠÃľy‡£Ô[ïg2Šš›ôö–¢ìâtðç¨r0È[«w¥)÷ÎÚÑ ´©|;8öÖÛ©·äà¯:7¦ís§Ò=Üuh’ô"B¼µ®Ïí£"¿íŽsœ±8­Å•ƒefç•ÇººM“i´(?¦ÓZc:!“lð6ÏJ÷ð`:¼}Âû™aÙe! Sî±B´XµOÌÒš œ¯Û™Åä oc–¾`ÆÞ²â¿÷dD6îÛêÞJ½¥(ïÄÿÒ·O¿>E¥ï¥¶F¿”ٻض¡î¢÷¾[XŠôÿ:¹—$}ðÝHŽ‚"›Àå¿\Ý?¤vG›ëÖÔ[ï‹F±ÇŸÊýCåþ£Óæþ\b¬1'©<÷NÂx#)vü«ç;ú°†ÃYô*f0ú"­f8½•{KQv¸”KjÔ$&ÓÉ[kt¥(íÙ ßyA×Ï´ë³7“#!s¾³ðÛBšÔó¤ù6¨]m½AKr»‘6Fnµ©Þ‚ÞR”]œŸNÿ%ë×M +endstream +endobj + +13 0 obj +4280 +endobj + +15 0 obj +<> +stream +xœµœK$¹€ïõ+òl rŇ( ($Ð=5³€o³n`ÆÞÖ=Öÿý%õˆ`dek6S•Ê"?Š"®pùçËÿ]Ò%]é’[¾ò¥2\åò?½ü÷ï.Óÿþñ——¯ß^²\ë¥Vµoÿ{ùŸòðòíÏ|Kpƒ·„·W~K”8å$©ØW4¿Ì©ÞèMÿ"©Ý8¿¥/ãë[yK_oÿóí÷/?~{ùùÑ帠þì—ãu9üñ†oôžäö*o©bÒKÜ^!½A¾Ay¶ëÊæã×Ú@§ŽŒo¯zõ +rSm7øbßPÑÎW×´1Õ*ýpËzÙ~¹D·×lU¿7.‰°õïhó­ýj]EÅTet_9™à­¾Á—í/úSGZ­ßy™‚Cp rtNc€ö×ÛkW¦Ÿ¬m_BK_æðÚ°RŸô˜#ÎqÞÏÉþ|ht{Â;|Ñ+È´¸MåŸþÄ;|SQÆ%×¥¶A­~&4`€ÃÊ_ÆÔGk›íÞ§}Ö¼&Ÿº~B¯ÃZøÀôO_;üW“ýtk¼®&¨5ûE?.âf/Û2!yÝþõ‡YÌQ›i<ý{¹e¾sÝsFÔ®å#¿œ:¢i)w)u;Ę\ý +dj®ÅÙx0þbþ>Æ´A1æÊÝÌà&››˜3Tf7_©Í¡cžï9»ÑOÉÝÕx›Fëþ`ëx-Ëуºˆþõ‹zÙðµ{Rãs_’÷3duÝ[õX½æà››ëwï<‡†´Âðísža+þ/_†§Wá¾òëA{¤<®½±8{X“ßý}Ty8šá3¤2Ð{ÞhÜw]¹_¥­¥yï:ð0zâÁ‘Fp8š®p¿÷þpÍztõ)@It#="±+bÓ}z_xsYÑיɮx0BÁ–ó÷Ma2àû¶¹:qüÑ?µ¨ÛžŽÜ%ðû¢óà‘k8ì *Ÿ}Fý[¢êIB¬.oå.7;ó +[’å©íµ*Êí®4²CÞo +?_ü)3Ý2Îþë?µ_¸r¾üS[¿¿Àåo/¹j§Eòå½JSûüýòí2]µžIY; +~¨¿ÕEvƒU7cÑù‹¶PÖwMš +k¶þÐgw¯^­ÊØÔëÞÙS¼–]¡˜iÎJuâY£@œ¶1›‚æ}‚&[Î’¯5R m̦Îb”?î +ºž8RàmÔ¦›Åž)p»:+q(ž·1›8†”9yÊZYF”uÏu”Ç*8W?$¬!g?$¤3‚’î;gðâRôŽ—ZH9ïx‰CÊ ½ã¥t.­:·ƒ\rn§Á/¢ µ:·ƒš#ÊPÙQ† +e(ÍQÖQ†ÂŽ2ˆ(k²°‹K‰(ƒdG#Ê ÉQ†\"ʳ£ 9‚–ÁSæRfñ”ÙGìÕªgêCÄâö¦Nv#ò\ìç®P®9R°½gSÐ…³^ ^•Ä¦ÐKºs…LWwâ)Tob‰L*fÄ]Üh `FÜŠ…ès…bFÜ"E<ãÒÂUðŒu­Gªâk¶Ù¨9ƒj´Šœ®eϸÕÈé$%ÇXEN');Æ¢=p;IÍQÝ3·`GY Dn'ÐeÁhHŽ²è®P¬Ž²è¾P"GYH"ÊBÎBœ"ÊÂè(‹æ6e.žrN!匞²fgå^3í +-¤¬Y¤£,Rñ”%FGYsäˆrÉ~@¥†”kòªR®ì‡¤uDĹ6ïxZ©Dœ{Çk%äÜö•å’È9^é75…ê¯D” s¼QÿPœÛLå‚è(Ìå‚ÅQ.”"Ê…ÀQ.š” ‰£\¨v[Y¶ZOÔ˦`y“~ç +Ùö]ÁJË@¡8qK€ÎÅÅ +ŽMAü|ž(XI³+´mxOsW+š6…‘ønD¯Ûðž¦ë»-]§kt…ºñ—^@¤°›ÑJ )7ö”[ )·æ([ PÖB̉KDSu” ¢Œ@Ž2‚„‚ê(#¦pHˆŽ3ꪎ†„ÅqFJ‘ãYAN!`€$Ž2ögªÎedŽYµÝŒ¦£!QÛÍ8j”àf?Õê8[Üì§JŽ3Õh@¥9ÊZÅEŽg/±S€ÈñHš£l•hàx$n‚‘Û‘$GÙ*é€2åì)g )çä)s +)³xÊL!eO™jH™ÄS¦¨BOÇðýCxvæQFÿž*E”Á‡ðüCxv.QNþ!<;y‹('7á?‚ך¨ËÌ·DÆo°ç7í¡/†ÔqS­–ùùûÅ>[A`[°=>'w­%ç{øþò×—?ÿΞͼØÿðøiÌù%‡9ü3©˜ì|Mú]…õP*Œ÷õðÆý¹^~Ãn"öÒÉö`ëCQ¿˜3ödÆž­³5ž­½:¶ÄƒdÝpÜ[SòÐË÷Ë'Ìôï¹ìS5K¦í†vgªþîóx ¸¿ÑŸ4çþˆ9¯÷—Þ oe¼`﬉‰š=šKMóq{T—uÕØl¡¯/™ùKRFË|õ™¢ªÌ2r(¬BMq¶d¶œä48\` íçr’©w’ûüóxf4ªeÿ:Fÿi +8ÕéíGsöÍÈžU¸³%Í7Çóí¸¬˜nýKû×0ž>œ.–XÊöØé€Ò_¶Ñô'/f mï-÷3?;Jè¹²äy°`™àhÙህ K.ýç%å{x8k‹ÎÒàÃá§þŽÒt’zËöòØ+«/GµN™ÆQ9›P½Éõ >Lg>q3§Cãtg¶x¤Ñ} +þó”ò=<™ŽUCVˆã#Ž›ÏÓ'Ô Ïú?ŠÐ§\ö™Ø{ÛõvœÉÙéÈzP`ø2­§/ÎXB¶)Rê­qÈ1[<[NòÁi³îÿåEúPæ!ÀhäÔ +9»8¶† ïbö~·PrŸ`{lâߺTjõ~.•2þ1‰Íçö÷×úÅ>ÃD3Ón¼^à±Ýœ^Ç®'DF@^Š–Þ”f—ÙâÙr’Óf,8‘õµË¥·F­>[4[NrÛ`ÎçÒÿÅŸÑk­ÏÍe*ÎÑ·äæRRòs™nsÃUa­Õ•—Œç‚y-óñöo‹þt.3ÃXŠ¹ôÖ8í<[NrgìÀûU-!ÙÄGkuå$?,³ž±•qØÖ +]fÖŠºq­)è»x¼Ìú“ÐýÜùl™É¾Ê^û Á†„ýüˆïƒýûÐïÎ/3¶ãå\ÙŸ †#oóÁÕž-ä–bwqsW„yVÇ[¶ël9ÉiÇŸ/ÿšS +endstream +endobj + +16 0 obj +3925 +endobj + +18 0 obj +<> +stream +xœí[I«$É +¾¿_QgC•cÍŠ„ÚÚ0·±ø0øæÃ`<—ùûVh‰PDdfÕ{Ýî“ixU•[(¤OÒ')Ûœìá÷·ÿÌÁœü!ÎñS°§áðÛÏoýÃáßtþýö·ëû[NÓaÜöþ÷ÿău‡÷_~:»Ø³qË1œ7ÁD3˜1ò|0šiñg83˜y ñl.txÏæºüíý‡·ÇûÛi¹S4vºO-€›O3 0l@œ] +0ž­K+9ÒG„§áL¤£Ãr´gð~·—e:[³Œ.íáèÏÎÁ!8NW^—¿òYSÉÚ©Æ̧‘$ ¢÷ÉüÖpg ±æl&{‡'ÁCGü€Pž¤¯åùë—ÍýQ¼˜žÒvñpz0o ¨Åö춷%6²î +ºo±àO±‚/GEs¸X6–C¾Îpq”4dkuxslu1çÊMʼnsh®™1qO£+9 + "xÂFœRbù߬ýFlÃÝ@fwRoE6Žö#l#ÎFxÐÿÙFÏ6B°ñnÜ’1åm;ì£Ó +霺ïJ¸±oLòO!ÚÑQŽWübKï!…;rPH¼I¾5oíËM#TqÌHqW!.áì†Úᆭ»½1”×ÔFs_ç›F1WÉGþ®ã+ +ý.L½A¶ˆ~€wí†Æ-šóÌÎq„¿…µ–!jqw5,Ý*?OÊ2ß‘ñ0Q½8_Pü37¾¶É²O Ïl…lGî5=bâ°Å€{RÖQ¤5zÄÚxÎxØ.øè +¯§AGv +ÑÁÃY{²‰\1ü¯íµ†ö'¶Û·– ]éüYvôá­m`“gÇv\CvØ>Û„g\—W˜TTߪ$5áQÕ溞îÝ×ò0;qœ¯fCªéþ–Œ"n–zÎßøÔIpNq'ÌÉ“X¢¼IN~Ùèy dG“àXêH¼’ÈxÙ}KÁߎo7¥²"¢I’Ñu¶¡ ß +¸éÎ’SW°»¿GïúaÒ•Ë*»ui-<­²%EÃ"‰³Ò TÒépû ÄK°…„ Œý\:cR¸Ìû²>ƒÓ¢ æ…Îù‡p€Kfß*!Qhã{bn^`D3O +o‡nÂôdjûz–ªË;aY€œ5…öˆyì'<ør·‹ +ú×4š¡‘µ´V(G©Úu¿š.rš"v9t –Ä©–FòlX%¥5íÉÍs?TWU³f“΋­TÔä~„QWÙ¦’:y%$ ++X§¡ø%'„ À¹æ¿¥ÄøErW™úª¬ÂÁ(¨vká6Úµk‰©z¬ËW¡ëTµo8𮑦nXñ¼ÊÞ²U#Å2×,S"ä<ÕÛõ6{0r\͇öjdið膲ÒÛ€½7ia÷¢C’§ +—ûìóþU:'j§¨ W»,ƒg%,ñô®Iüz‚!®ÖPƒ>ysôE;P -7Ä*6ks½5èfrÁ&Ì¿TÊ;ï»Âq]¬ÏuMÈÑ85%hê ª>niLQo¯¼4Hõªå+ó» +`ÏûpkE‚ÂœmEEI +uà»f¯,jÖJÜ’sUÕËe«t$n/TóÎýöÅ‘ _ ÝÎ=« ìÊÛ‚¥ð%Õ­t¿Ö[!Ü OÉ‘G¼/÷€Úü z9Ÿ¹Ztp¬ÚÄy0·YKÕ]{råq[$ðó ãZ§aGér5Ç/eJ»`$§Â}ÓÛqèšm„g¶˜Á¢rÖ£å}VHKŸAJö»ºfî³$ÓÚ9¿¦ÞÁ¨k¬Yõªd䚸ÔLÅ1¾´C#Õ ÖäD^²))˜ûžÔ ä_š—ûrYìRhtMö +³òöŸªºA_ñ4cÁnUìÈ°Fñíì!UÙ²m +kí:)ÈUE†w)‡ÔT领‰Ì ÑÓ£z¢z+I®„²—Eh¦´«îà»6E­¾”ƒÇn@üÑ‘0p²Ó·z ÎÛ%âxcœù=73'€ x8ËëpÎy·Œ1z6œãìx ¼ýf\N÷ôÊOð:nÀé¨S[éŸçhébpª¼e]Þˆk¢4R[ +5NÚj¾S +ÌrØ:„}UÍÉŸSC%ªJ¢™Z¯Œž2Vƒ´_B½qöY…ðSÙ¦¼Ä–ò¦yÿû¯tÃý?O|ó?Oèaþ<מB<ü¿~8Øïo1 +'Ç!þ«ÌpKúþÏÃ_ð‘ÿ®VÃâ +endstream +endobj + +19 0 obj +2772 +endobj + +21 0 obj +<> +stream +xœÅZËŠ,GÝ÷WäÚP5ñÌŒ„¢ êV÷€wži˜…™ÝØÆ6ønüû£g„"_Õm† }+3©Ž¤#eº³~ùmpƒ;Ç!Ïùœ†’üy¾þðò¯o†__ܹ þ}ýï‹O“òG˜ãgXôõ‡áÇo^ü<ÁV<`0ÚAÚþÁ÷÷-Ã4%˜ÿþŸáooyðaxÿñû‹óWqázJ]rÙnÂ[QnfW®ñ#£›¯)_Üo_§‹»_ÿýþíËëûËw›‹þÒãR}lêÓÅç«ŸðÂ_ât=Á®#üô“+ð4 ¯×p‰ïà?ïa‰»ÀN'&WüÃM¼ +ƃl\¤Ý +Ms%>èG|Ó•nòóõ4án Ö?ó3`ëþÒ=Çß@0øUÞkd.üàg&?^éѧwù8zQnŒå8¡î¡»ñ¡»øÙœŠ&…@çþM.ÑQ@Š¯¼Ÿj¤S/v<6’Ï™ÞHÉáBÖé܇LOIžwä!ƒLFä³ßU=zBܢꨊF‚fS} 2Æ ømT¹4¾lSÏL÷Hýw‹oª­EUmkd‹Çú$> Ú;"¾y¹B-¾®¬É;… ŠÀ!?V¼ƒ¥öÌñäõ"¦ÛN0”hBxb¶q.çié[½Ù›růBF¿ËÅ¥Ã3UõV÷#¸5›²¼7\ÐPåD'ûGÁ¨¢`r¬vò +XƒÊ&õñ£““õ¢M/7fþ½ùøÌ@’¢Êý%ñu«S¢Ž¦!* +ER£’bqL˜½ +’æc#•p #è-½A•bUIXxÖȬ!ŠC§ìhçì‹w"lêËÅGØ ó¸ +3™”ôyî?H•9ÂÂèp6Ž¼áfFŠD‰¥ _ +‚¤å\[dîBH–Øjz$ÙHM]v´Ñ¶W`™@‘$VñÝý$#B[nÌj{ËəսƒÉx¿Â·ˆ’D —žJÃxE¿[± €Áz“§5OZ —ªT@Ëc-F²|՚ƛ¬Îv#ÌQø^‚¡¨àÜÈOò@“Žm˜fe;}ˆìÞbxS¡87у[—ºÜZ`@r® +C”Ùø³Œ=¡y‡ä+ÏaVä©€º×(3aÉ„àa~TV›ØÇp¢…SágJÖý‰ÍÓ|ž—‰–ˆDÈ>x= µ›Étƒ 5×é¹ ¯^0 bîE²W†IÙ":ëIrǚ¥Ϙè¥ÂY«Â<‘p¶„.º—sõ\žÙÒƒŸ4AO­¬Xê.1ù“ ”M@}f¨1®ª +ŽPŸ… EÝç‡#®ªeb+è¬$VͺÉÇ, mDŬ×Yp+þ­NîCu#æ%„¨ò¯t‰qouA&²µ=#è_ +‹|8&m7ðEÉ ÝXýÉ°¤Rÿ&Z1(î#‚‚$¿Dуé=/Ùi˜ox÷Mž|$aÅ +ÓŽT’f¿Q+ÉrÍæâªIHU¿èTƒt9‰KçVœVGR'"Ÿ4›µÌ¡·ïDÅM‚Vñ7É  8Ø·ñ#Ä”†poëÕû™ü}KÀø†¥gnËdž˜Ò*|6Í+duÒTÞŸh3Š`¢YUU§sœBôgÍ~ß„Ýó˜,¥Ò˜&*¸f­RoýO€ k S!RµËtŽÂÎ"°­z/šª4NÁ2ãC^¨ÅrÈÞÞ\¦4©ÛìØN¹¬£'?Ô’×5M¯z +¹U±ÒÕ9åpšŠvÑ&­(KMlW*™ÚfÒP®Ž=Æ;%©þ—^œ{„7ºúœMv`£¾%=œÄ ·’¤§Gÿ¸X ­[šŸ­‡ ]k1lÚ1˜S~¡‘ @œkºúnmÆãC-œ¹fÁf"é”IÉ>ŠZmW{€Ÿs°ê+¦¼!\ ¾œgö6I˜ ·lÐ7Ÿ™)Œª6*cžØш|ÈplúWÍœ¥†7[¦4/ô Ó1Û7k4°ñ…‚¬I@â€#ç®Yó Ib,Ær»Ä4«Eèv=óí.šßwzÕI£Úà¶ìä"DÅ"2¹ +ïçˆd°ý¤Oü¼w +ª{Þ;ýØ7¢æ‚Z+(Ѥ–ˆZ¨¢÷©)]êFd‹æ²í²ot!8ÇZ÷y^Vd–hÆLš)'Ó”[‡ŠÚ•8†]+üú ‡f‰sØî×üy«üúþf?f?áñq,ëÎ`OZk@}ƒô”JV­ÚV#ͨúŠ<>Õž¼pÎ}Ç"|7÷î³ÛÑ)ùXï†^ýþÓ¾¾R>ÖVçj½Ùž9[‹ZųM>Öo<º—…]ó¹E£4Ô¼¢A‚k:{Û>iŽ¶CwsÁF³!j=³0™¾)™kcE:?zž–9Ž‘ýúmÅëaãA +ïîm€ö3Z!Ö:ÄþÒ§‰–>3¤ÂÞøŽ +™Kèï1ï­T§åØ¢1Ò£ÿSXÔ¨g£¸¬áü]ÞáGŸ íü"oíùêçáŸÝõ//)G(ŠÍh}ÿŸêZ¾jku”ךQ^;m%ü6ëhDVé¯D4Yùʬ“QYÙFymœ PÔµteÖʨ¬m£¼Ö—¶~›u4"«t¤×ÑòêôfæÆ)ëÌS˜™+9Í̵5¶íÜYciÇ^ë½­z­.-bõVå±xX#«Ù}kÙ%B¬åÖhZÛ¸:>cI[WT&²ÿs¡ÍXuÃHægìomê´Û¼Öw7Í$½Püy™ËíòÅ}IþX¢­Åµ°ËŽå×|Iåy<•gc1½Ýí?øƒ’¥°R?Köø€¦6‹ífz%÷y‰ÊB\µE¢kŒ—èkcƒ?!”z¸iƒéd6-3d+üëJ=Vj¦ìíÉãWû`qµMÊBŠ›+¨†á¹³4q©áö…fîÍÒ&†Ÿ¯0ato.øÀ&Ez©v£t:Êd<Ýç?t¬»÷©&Ñ‚æÖù®¿RË|{ýÿ±iîirÌ´ýq‘áCX7d´™¾/ Z6ïõñÖTE˜¾„Üü(ë°óûW´Ýÿ0ƒ\”EËÿL•pÐ ÿÀW6]óúÉGŽÞm¼VF¾õü¿\½R¸öýðþ%?Cû +ª€±}¥¥hýF†b­«±Ñ+_¼Ä +™?~àU”ÓAž—onñ•¼†®ïû•l\~%«üú·ÁŸ¡Ìü®¾üðÓK.°é4fà 9ΰ#Á-ÿ¯},á +endstream +endobj + +22 0 obj +2615 +endobj + +24 0 obj +<> +stream +xœ­ZI«+¹ÞûWÔ:`·¤’T*0åá6ôî%²Ye‚&/нé¿ßgÒ\Uö{ ¾vYÿó骋~;ý2¨A]ÆÁÍîb‡`õÅ¿þëô×? +ÿãßàõëN·Ï“ó—0L“…iŸÿ~øpƒ6Ãç¿ÿvUzÑWe–³½ªQYå”W>å¡Sa¯ð‹WóbÝU­üx™®ê¶üýó§Óóóôes»QÃ;mgãv湘ëøP~9û« +°‡¾jÏôlœž•Õ°<3NÙå<á«W5∇|PA+ü®—3}± ܸœ~æg4j¢Q´=§å¬íU»%à²íÍÕ(’†fáC#ð·(Ã¥†µ ×´»¸šqWÍãp+5‘ v’ÿÒl–Š–@Hè0ÜŒGÝ`;·­éxÇ¿i{|d m·êG’üØ'ÚA¼4>QÑ(¸1¬3oÆ6õÑ]`(ð—Vä0É#Ä(–LǦeõ]‰:±þ´^K»„¸™Ä’Ã×Ò•} +±ƒ¸ FùäP£ãÒy&HX|™`bX(3ÕÞæ"‹âüÌöò1¸Xz«sÐx§HV¬6†ÿxè ?‡ËÔ8¨Áˆ¬$™üÝ%Rk[jA™&y5ÞRªp *m…Ä—,ÈÑ»‘*7ÖŠõ„}øÄ«³P¸—^É`•ÇÅH1åÙO([ô$C!x(b8O5Œ™!7&Þƒ4I–o$gÅE?E:1–Eôä+ûÊ)Á\Lë”Ú¾‡H¦'Ù*@’;¶fž%©òd˜Êª)…# µ9ðrÖÖ± Á±æÀ)„l~Y$Ĩn|,k—C}D1 @¡‹„ŒÂ +¨°–:¡ŠûÊâÞA-;¶¸ËcÎe¼ªt­Í·uÃ?>%â÷•Ži×\²QB‰&ecÝ!4ÆG›a"OöZ%õÄÉeå¡l=©Í%$“¤gˆÍCG(áí‘?€+0$`¡ûb¯£ß›Ð…ÛóчFÞMX¨vâƒ;R +°ŽF‚;úìK‰Õ; rw™mÑÒ{4Økâ‚Ý%#:#£e6„…Ͳ +¸8Þp.°eÙíB4 +§ð +FÉp,9'©T:ß²Ëq6JBÙªèqBĆø,ÃH±Ù*0)çuLÄb°¯¯EDÁ4Ww™Š/L'5÷ÐQ~ºì»Š…-+`A¤H9nÊrW¤˜%a\" îúÖÜ[–‹Â+T•0i8Ê—n¼C®)~{¢Ú°w-²ãBȪ$ô{¬[¸¦;…+½äÔen¼dÉð6,gˆØb¡a­—ˆ­[''‹ ÅËF“Ôl8¡~ŠBUI(d;Ò£ÀÌbiÁ/×´4Zž›äÂÃd#WÀÍ4¦âÇ–eÓ¤å™Ã˶‰†YŸ(³¨"›ûd´»gžÇvã5÷›(‰É²ÁøªlHTüá%\ë°‘.Éì­D£Ä‡4zŠ±'4fÙ0p’ajëÛ£B»¨éuë@ “ Ó)°939UkQšÏhÓXòØUzêšãCcL±¯s¦G‘&ÿ“íºä)2‹âîImÅ33…\²ÓV'òTm²×c´êH 6ÒÑl ë±/”îèý¡/º®eÿN¹òIkþåEG­m:…™­@‰«Òʨ1ÿçl5ç¾ßè +jïuWõT +NëÑ;¯åóç(¨&AõPù¯'~%þüãI +g +õ:Ïÿ;üeGOã#Žz2ìÈ Œ)¯OzÄW”bó©Á¤£‡¹+ݲñ“Q+¼qK3=6q4â ¿;`ô_j¥w󄪥d–HþÏ–èUQ¡qØw˜š^À×¢Hè2à‰FWk<ê˜[é}<-Ì]0}§l€T7}‡O«~4†¾k’Ìè ø¤±âߨ‹~Â!Œ3£v<ÎÃSœû±¯Åh åumß‹Œ?Nø2”ÿ¢76ÿ¢—bBøbEëOÇ?Ÿ\€E'°Ë Sð3Çë—áwIumF +endstream +endobj + +25 0 obj +2406 +endobj + +27 0 obj +<> +stream +xœÕYMÛ6½ûWè\ ÊÌðK ²>䶭‚žÚ¤@Ð +\ò÷;3¤dK¶åDº +ìJ)¾™yó8”¡Äâëîs”¦pÑ•¶¨,–¾øò~÷û/ŧôŒÛ—¿wÇÓÎù²*B°<íôWñºwRqúðnxÀ=Ðá•Ýƒ <é2¹ÓAu0{~â!¬ÛCºaÇç·»î´{º¹œ±eHËÅ—Û#@à—¥ø¥©Ý¸B#﹡…ÔˆúÜB-³sA~'úqž×jý+=ò <&¯Œþpúx8zvêx‚ñý +IA¶@Ð +$¾s„‰a#È3îAË£Ô¼ h4K@}¬6‚Yã› g7èJ”Èð•DÏÈn +;îqlžÌ̦äqž{enÿÀˆ™¶Sš4wHrä¶d†'ö7FnžÌ]ÚL¨ÂP¥·»ˆÄ‘Ç{ÜŠ<УP¥a?v`rt\îP¦ l# à ±‚v¤—åèÍi…©e©Œ[‘‹l¢•ÀRX5Ä›ô"èõ9“G +ÁgØ—ž¢IZ¯-%6c££ð¸Ä³|2™Š*@ŠTs;RC–Z¾ï¨'o`1žÍH•g€Ì +§U¦‰ãÑ«¨9Kìd”!¹Ë' +ÄVeÖr1^+EaÑ¢ùQfuFX¦.yöòžÆ¦SÏK…äNŒkéD8©ÊN;Š»øìœ@k¡k¤ä¨Ö‰AVùž=/tEÊÜב$sHü­»€p ®©üF)Ûh¹–àM8-žÄ‘ÙŒýÚJ’²™ò¨ª_‹°}ØŒ ^}ÌÞdO¦]2'mö´’S_2L¨á‹u»”#‹Ô06nuTä‘î&Þ(Ž6r#ØZ’RJ +hLGûEèf« +J=hts®*{ÑØœ †YN‰D‰½ò׸%híÜ«²QKH“ÕºÔÅ6-+ ¤6©mòŽzµÖ +Þûá¦íÂT#°¸0àÏç0¥¿f}³ƒâ•Èø3ïIùòŸâ·;>n^êS4~Į̂1 +X%"è4Hi7KO&gy–ÄžÍr h§zú@1É…ù©Ñ¬uò ¼1¼Ñ6Ø$v1ÔVO”Ýõ‡¢‰™ÃQÀgI3ÔpdâUÉ+͘G@?÷ ™®A*u€x|Á-úu ¨ŸU·—U˜&”ŠËqøep@óÂÜTëÀ™êæç³U°°²ó@š¸V\¬]×Áón^d›•õiÎS/E™!’RÃkéLš,8T¨š .€ŠpVWM¸ùŽ6\¾^gÄ`ï'á[àIRåòzÁÏF>Åñ9 §ŽMßîä8᩸ü)ÀÌ~ +œ…¾´N5ý-«ýÇ«ø¥Á»â™W‘Ï°rTý©øHj h +endstream +endobj + +28 0 obj +1194 +endobj + +30 0 obj +<> +stream +xœ…UMkÜ@ ½ûW̹°îh¾ +fÀ'…ÜÒ.ôPz넶Ð\ò÷û$½^7›°àôôž4c{2ÏÝ_cí½‰Cìƒ)údž¾wŸß™?º‡ßÓÏîxêbê‹É9àØé›y +9súñe´Ti´®Âh½ +6Úd3/ù¶m©~ÄN²C +q´“.×<ÚcýzºïnOÝËá\î +— %€4Ôƒé¦ÂÉÌC?]óBŽpèe76ñY|áf¨e5:‘–0…S¹Ó;ùJnW#*n›Á© Mî1üLð ;Ú†ˆ™É€AYwOR|4:Ë €Œy^,ú§+…)—ãbg‹Ÿeî3;›ÁÁÄv2m64àDZàçG +;Ç›¸kaL3° ƒÔ¸9-À¼PÕ¬y­À +2CúXÄ9*™ò”ÂHý •ø¼D§d]ÓpêRYÝâYre/zøUýÒ`û¼×o£Añ¾¦Ñam¤É×EŠ +Yšµ[?IKë°HÜp®%Ö°)e• Y¬Á›¢QtJ’'ÂÐr®˜&jnû+Ð~áÖsÓ)Ó0X E iB”hL. +n9±¦k+%M3rŒ¥"Ö<6› + „ã’Û”@«Ì×%ÁÍãv’ˆ;?küÌÐ6Œoª¢¥™[·ju´k7µšÐ1³”xÛHšÀeí]¶¤&%Æ­ÄÞ앆Ù¡q§M›7$| ù²ÊÙdíܽΪmÏ•Ò[G‹à̆–±jpa+s-³¤µ¿¦ÂG{¢·{)f¼);áüõ»PjƒãEŒ9WÓ¹¥÷:N[á@H+ÌE@X(n½×¦Ëˤhï.2äåáKÚX»–«Kxcâ°<4-W¼Px‰Ë·n¦” +endstream +endobj + +31 0 obj +713 +endobj + +55 0 obj +<> +stream +xœSðj/š·Ò +endstream +endobj + +56 0 obj +14 +endobj + +4 0 obj +<> +endobj + +57 0 obj +<> +stream +xœí½y|TEÖ0\U÷ö¾ï{÷í=tHHßÙ¢D $@PQGPGQPÁuDtdFTB + ‚n£Έ»óÀøà23"8/:‹¤û;UÝ Ë¼>¿ï¿÷÷ôMUZnݺUçœ:§êÔM×ò•mHÖ ‰s—Ìî|ý7÷¿‚z!lœ{E—0¦]úÀG’Ý6¿sÁ’û+,ãR,FHòÑ‚Å«æßñáŠ-éF!4«raÛìyí;Z„–^ uT.„„Í}OI!¾â¡…Kº®òà +ˆñ«wÌýɃ!ÔÑDãKf_Õùé­Ä߀¸°tö’¶ã¿|å¯ÿ!}²³cE×É ´ÆNó;—·uöÜý¤âÕ)·C†‹þÔJiœp¼D*“+”*µF«ÓŒ&³Åj³;œ.·Çëü`(‰Ä +㉢âdIiYyª¢²ªzØpôÿÆÿ +Ü]È¡—›ƒ¼eçÝç™ërù™¾l–|…§ä]î7®{™?OÈ…h:„– ;Ñ/ ­ÿ=‰D¤ƒôCˆƒ®ŸjÑÝèJô>ššýRýèt%Ð0´0›A´eðÏÐ#˜ wU£÷PÚHj¹8ÿ7·B\ÂmÅ7 "¨e +ºÙÐA¨±0«„øâ!µp×ô7KžÈ–dÿŽ÷óofç _ãZòÿ,`ì1àQæÆìúìæìƒH‹Nrž¾ßfK³Kன¨­D×B Ö _¢wp3Aöeo…6Í€6¬FÏ£·pœG|+2¢ÉPúçè~´½„¢Ðc.Àkð{øõÈÈ^“í@h"jBk ׃øž\Â]Â=Ã}Ø÷ß™#Y/Ô=]®B×  +h#ÚŠ>D£O1G”d +™Ê=ƒ\hºÍÞ¼Úô$zÆrœÂñˆoÆO“+x®ïÐ%,ЃcYï߉6CŸ>†¶¡è]ô¨ó;èS;pOÅ3ñÏðMø|~ ?ŸÅ#òÇq×ó¯ñË|UfÈ> Ïu!7P F¦]ãùú+¼_!Nà4þ#‰“‡yu_&Sž“]}5û! +¢(”FÁ;O@Ó¡Õ«Ðh/z +î}ý}‰þ½Äa%6B_8ˆ'ã‹ñJhÅ3ø8î#V¿j²˜ôC\œ{‡ŸÎ?Û·3cÉôdŽg²Ù­Ùîìo³o³ñ­„ç4À´ N´‚Ø.xΫè(ú úž!Å>hëX<Þ÷~¨ÿ0>è$'ב§I–ÁmäÞäüý™‰™%™û3;²©ìÀ-I¥àØ45CÝ7@o>‚ž‚‘ÙØóúÛ±—à ð4<·â…¸wâeø|-ôê“x'Þ‹?ÀŸâo O¤Äý'sÉ +än²“ £â.æfp˸k¸»¹Ü»Ü×¼žOð%ü¾•_Å_-ANj•¿}ÊvjIßœ¾ú~›)ÎŒÊ\žYŸy9óAæó¬*»/û’¢hc3Zmü¼ÿÍèô0àÇSÐÆ?£¯Ðß`Ìÿ}ÁavB‹}lÜ Ý åÓq3ž×B¼ú +ÞŠ{ð x?~¿‰ßÂÄŸáãCë‹áª*˜JæÃ;<@¶’nò1\ß“q.Á•qå\× +o³–»ÞçÜgÜ<á-|)1¿š]ÂIæIî“l–¼!ù«T/½4Ï#¦ æ?ÜÛäe¾Ž[Œ¶ &Âq%$µøgäGü8ñà—ái®‰k" +¤¼°| 2Ë6KýR?1#½¬•ÖA6‘"n:áÔ¨ è +‘KÈͤý¿€~$cÓ®àÞ![È,n3_‡?D«á™ˆhð¨Õã:»÷Ð2¡"nÿ{Z£DÎ’,!šìZþ+ áþ|pL¿Ã—àc¸‰X¡·jÈ(q=>á@æïÆÓQ5„»Œ#ŸBÚbt7~Þq/ZLöâ_øT=.ÇMøA®]‡—Ao C‹È=(@:Iðy*ú?ølÊýÆ&Dæ#žÓ¹èi†QI1¾ðt ZסîÃûÑÛäNT‰Û¸—N9ú +>u oçÆ¢íøGþMþMÂCM/Co–÷C1(ÓÏEkª‘„$ÿ[€^ˆ ä{|-YŒÚñýÜ_ðc¤MBmÜ +2ß—ùž¯çÊ¡Çö7i“#I­Äç`Ä¿Bu€ ’.äKn 0÷w2ÛœõgfI´™ÏÐÕÐ;c»­Z‹>ÁV|¾ˆÏ’ñ|6; +m%Ûøϲ6¬Æ~ô‡,PXf®Å¡¬€—eUø"ÀðˤOömâ×ó7ñ+y²?׼݅@¯Àlò(Ì[QèÇ ¡7gïi‡9¢•¡ +x»:4¸Òׄ¦?m.9-EË€ó>„žFÛa†ýqÜ7-‚ô0C]ƒ®ú_‹npú +úyŠ<ÌùÉ-äUriGŸ O¸×9OC‡ø[ùÕèbBa<¹ +FÉ÷Ý–}žC.àþ) RÀûìß²dŸè;õýÚ~—t$ú›´ IøÞ‰%bý1]7¢¶fø°êªŠTyYiI²¸(/ŒD#áP0à|^ÛåtØmV‹Ùd4èuZZ¥TÈeR ÏŒÁÑ­Bw¤µ›ÇŽ-¢ñàlH˜=(¡µ[€¤ÑCËt ­¬˜0´¤%çŸQRÌ•Jb½P‹j‹BcPè~gTPèÅ—\4àÛG›…îc žÀà Öì÷à +B£}á(¡· +Ý£¯X¸®±uT·]¥l6´)‹h»R  + n[°s;¶Õa[ãðíÉ5ШngpTc·#8Š¶ › 7Ξ×ÝtÑŒÆQ.¿¿¹(Ñæçt£àÈn]œA +ì1ÝÒ†n{ŒÐNß­¶'ö¯»­Wæ´ÆÕó‚ófÏœÑÍÍn¦Ï0Äá¹£ºmWµŸŽBåƆk纸uövF×­[+to¹hÆà\?õ››¡¸—„G·® +¾ +:qüÅ<ÜÔ<£ßè›Ð·Ê½_[°‘¦´.ºÁ‘Á…ëµÂÐ8×u£É«ü=N§¸;{9…uSfýÝiW°yö(÷v3Z7yÕ‡(8†æ%¶ë +¹ŽÝ®Õåµf0Ð6Ç VœBã'ô,¦- +^Ñ-Ì %3‚ðNÕÔk«FëæVC1ø5c¸«{ŒH{·¢¡u~8M§÷wKÂú °î{<öÍДÙùiXÿ=¢ Å“Tƒü~¸;ï.,¤("k€1…6Ö±xEQâŠ^ÒìÔ @÷¡&èÛÙÍÓÐý~?àõ½"š‘î5ÍÈÅ4ÇÕƒÄd¼¹›´Òœýý9–©4gMÎÀí­AÀäL±°tË#:½ÕÔ¸px7¶þ‡ì¶\þø‹ƒã/ºd†Ð¸®5߷㧠‰åò«òòP·©aç"yˆ¸8– H9s 0ÌPwóaø“2¤ž×+“V²,ŒîÖ·ŽÍùÍJ¿ÿ'ÞÔ›=AïbÁéÛòÍì¯Ò<õ:ÌGÈø)—¬[§’78кu£ƒÂèu­ëf÷f×Ì +úàºÝ €DÖu6¶öhovÏzW÷èÛšá%âိÜÄ·\´]Ä·\|ÉŒÝzPo™2£D›†Ö‘ÍÛC7c·€ÈRÉ@* 4†ÆcÀôi–k·Z$ËåY‹Ïíň¥ÉûÓ0šÛKriz–¿"[anäH@ÜA24z»TÖ‹Õ;]Kx +pH)•ðǧBFÓžÃÈ!Ÿt=>Q²vB_íDýµô}µ(]ÛWK]iI¹Áoû +þ<:%pûO‰ô#øýІÕÙÃü…ü30û¯*2ã$JÃ<ÎI¬ë4[›yžµ½¸Ó¼ÂÚißiSV¹+KÆYÇU^j»´b‘maÅMîMIey©Np@,–k­¶ª2!èÕigTwÆá*ÕzÞŽWq<‰+´y«?qwEt¥¾Òdiº”/u [»ÊÞ‹7Ñæ·L8­ŸÐ×w ¥Óiý±Üe0Ú†Œôo¦0„†a¥%h|·êâñÝ!@šÝÈý¦Ç`F{²ß Oö›]V«Ím·Vç~͸ejY†+R•åeV‹Å, +"Q¸‚™”^„ÊË*«X¶Y&…üh1WQ‘2B +÷‘Íd²ÙL‘Lëºgö4122êÆú‹·6,Fk|ò;í—^6ö²[Ënújí»¼¯ÆëtzÿâsÚ]Sê›ã¾¢‰³Fϸû…Ìß.›e±lÉ™-A×Ø­wNßz-æÖÃhß ý_Ë­A*dÃcÅj£•·šmVîMü¦ê}ò©äO²÷UÒËeíÒFÚøvy»r‘f±¡Í4ß&·ø9_Á©2µõf÷ïÐ9Ò,ÔÚX(j,ÝëA¼idê%kE»Ñ/¡˜T„2Ò}ÒƒÒ#ÒR‰´¾Ã^øLn ô?´àxüX_˲8 +Qn$†tø^dÍžDæìÉz³ÖlÛ“ý™²ŸïÐx +Þêþ^G-xY ZÌATYÍzWÚL=CoöѤó¦UfðäJðdÔƒôoDQ•–™UFÈÏj6ØêÌÔ3™ufZâ€h@©TëáNð§óÕâ8Šý5c3 +PE +FÉR0ÎR‹Ù +#Ì×fŽ½r ó-6x›¦þyË–?S‡·íÏœÀ†}û±!sâå_þ×á‡:Y^^’ TŽibÛáÜ0:ÝÐ ¦EI©7R\TàqK±¬°J¬A£¥…~ÎéW(8YUee8lQj´‚Í*ú*J¬k¬Äz*âñ +ÑGÖDHäTJ +é:QcM£º}uë¸:Ç@F¥8Nù ñÚ¸.ðWÒµŒhZXQßã°¤ë¿o9yéZ¬eÙ™¹Û¥¤a +Pº0ÜJaŠé.é18SšKKV‰BAÌîPªy‰*ã£>,‘:”6Pô%…>lW;}Šâ¸¾6¿~¨¥ðÚ•Çëz%Rf¿E<8YöxÖ'gßËãó2L‘y7ä@ œuÒÞ\H[Ò!kn1Y(±U‚’·±i0h`h(— +JD(*7ä¯/_\?Ç_½bø¥•cÆP–²ybyñüúÑ œTZ”ÑÀ’?§^®7gêŠÆÑ£k.¼¤o—Íd´“_ˆSÛúÞcð +Ó=±y¹ˆÝh²‘Ýv€€m4 +°¼ôÂ9âEOÉõ=UÌEda_ +ßeºÒy…kù&ç]æ{[e[Ì:ŸMî’½ ÝnÞéÜí}K{²Ô¢%¯sîq’kŠ×o.~J»µøÕÒ÷K¿(•(r:ÃI8ð +Œ“-VéG•1Ì•«‰Ê^|D¼ßR€”å~`f~”Ð':\"V£V˜Ôû=2š¡A‚à§è¨óã¤?íŸäŸåØ¿Í¿ÏØ/÷;«mJ€·A~‡ôa`l‡¥¼ÔQU¸÷ôÔ‚ãú¾„Ù&†¾(},}ìà×±d @éÚ“Ç(ºæ°ÐÖ0lþ<ÀØŸ#&ûþ‰RÙ¨œ#{r‡Q^,à{ËòœÒÌ8¥Š˜²ûµà…4?Ä€%9,` Uù ¨#¸ËËq®*nÆóïþâ©#¿eÒš5s¶ +½M©û`ÓÃ=>§Ó÷jÍÏ/x~ÁÄ+—/Ù;wÕ›:®~N§¿¥qþ0¥ÝhP꜅Íí;DGÿÚ ŸT3ùÂ…ÓgÑîÅÀá¦ÃØWãµbÕûÒ÷åä€ô€œ<"ï‘öȹe²522W6O>ÏÅmv=&%×øvà„sûù‹ýä¸Ùå–Èer©œHÝ`6.¹‡r/^sšÑôøÌpëmw™s¬e ¸–lÉqŽA¬£Ÿ3 å þ3ž>ãŽæÖIÕ—2^ðgŠ£oXrñÕËfÑxæ[êÏÊó‰ÕÍ£bÞõô`\ó5 +7õ}wsîpp‡­tÅ¢??wAáÂB`s£)Á’$–HȽ9,p%m.—Ýð*­E‹²ÏÝQàW[!…€ßìEj•YÚ +¶ùºŽ±3ö¯Ñc}/¾mG¼pM¿ ²ì#VG=&ÂÔrþNRú<ÿ•–Œï¶æ{y‡Vn”Óþß­ ATÌÑ=@Á‘ìW;‚òã´Ä2ÐéŒJiÇÒÑèïcÓ`Y‚äï®?/ÿêUXñÙ},Þùѽ÷}ôÑ}÷~ÄõãÚ¿±êÈ•W¾ú +ü íÓSolùì³-ÿéO@}»¡oÍ {BŸŠ…#Ê/tM*o)¿Òz³u­óV×mÃ6T^ Œ®'wú~í{²þ‰‘ïÛ¾´}o“¹@‚ê1Ù+}Äæ¸Qã´ë$f„«´e%A®8EåoƒÊ©­M + ¯¦Âþ£r?ë³¼^âuŽ6‡ÅÒH0"ÖwÄVÇ6ÄŽm‹IbŽÆ‡ö`²ˆåGÁ¬NÇ£_6ïÎû À@sz?çdÂ:°KèQÜBYÞrw® ½Äf¥XN£¹¬ŠÇ`PZmuà¨u +õ^cS¯¡ÊmHcê5T¹ô×`vèÒ˜z~¥G¨KéÀ+3;\uz³Þ’.ëÍ~³Bc>lèÍØ¡7S­î€¨ X žŸz8~Ö/·ò@\f"–ᡬä3œ“'ÎÏŒÈ|}Ĭsú2§’ÄúÌîÌÞÛá÷:u¦¾>óTÈù_øß<ìžy^Din¿šÙ ³jrò–y='Ë;ÂËðX9Ë”ÌqlÈ1*µUòÝ ªK;Q:!Úy'ï’y‘Ïä2ú® +W£kw\YhŒöf¿õ+?w‚Q(¿Ûy¯(t½äQQ¥ŽëÕjÞ£ b!Ä%•lºòÈíF/µÄ +‹Ñà±'Œ‡‘7lÔ…Ò! +Ùry,¬sc·3Y„½½£ø‡Ó‹ùµÌ– pÔRGÇt!Æ>$*tà©tiÚýùuÎóÈ„gD³Zª«Ñ2N–aƒÿÜÂt.™® +Ãþ²J*ý¸ l8\ln`óþú™OÇ”o>-ó/¬nydüS7dÞÇG2]ý’4÷W:¼}ëE7„«¦)_U7÷—”›] +³B3p³(¶ˆj%¿ËJ +¬Ø)×)˜æ¤NÊÕj…< Ë Ö*×ļ`õÓx +áÐh!ò (¶êÌ‚¿E•6{ÏëÕÉ5zÔ J³ d³R-IÓùA–õâ¿í(5©©-áÀ´pŒÍ +}LYÊõçP9û?¨EýZ‘¨Ä"Õ‰„Á +‘Þh⥒°‰7øQjÎÍ#q¦ ™ò2ù‹È’ýY³Ÿ ú<¯B359:h2a3MÕéh¿–|óÓo\#^ÌãÕ…ßÙÊ&•ãLѹæÁ†+‰—M-·O^ôB<õwÓm0Ú +¸ w%4È"š¯Õâ„b’r‘q•ñVã}Ò‡L27SQU¾7‚>_ p»,tf¶cQT˜ív‹9àŠ‡i‰ICáP ®ÒšÙ«D¦Á&dÖê•¡p +ŠK•i=(¯–W Æív)u²2"s!³Ò›‚k‚ƒ[‚'‚Ò #ÑwÇiv"ÈUbÕ±cù1¡Ã’“¶‡ +;ÿˆœcxΣ´Â@ò±ËdÖZîþÕ®œ.j,¸ËÎG1„<úHãøë&¥ÖL9ª6ïÃ]”‹õ-ñ:¾·6SŸ›sèž©mN“Cf +:glͤ˜˜d4ØÈ ùµ¨"¼ézD•â"1]ªÔ +‹‚«(ºO%-šy¸´I/×ták +—«~+ݯüXö±â“èÇ¥_J¿PÊ\‚»Fv·‰{š“ZÝløIÃáö¬¹5W•ñ! ¬õd~mkbI]Å]Œ\›ô«”1?¾›—!_MXñëäXî,O ­àÕå§jÞã(»ìŽÓ+LtÈ8Ö±ÚôÑc99‹î`œWc=‹; +ÒU{ +Ô%{²'QQöäθZ#`ºÎ^šýÓöhp`•­±AåÇ +ÆÝœw‘`‹ Ç?½òÚ?®Èô½øçÛÞfŒ­ã4cãzïþM‡múÅ!nΦKgv\¾+“}>#í—lù6›´ßyðÝw¾{¨é`ö0—±…¿o1§ÝõÄx!jFí£žž®úUõÛ¦7Gþ—éëuŸŽü›éhê둧L'SÿiT™¤VIb¤Ïd±Zê\#×îMíÕ©¦›.©n¯^Tsuõu5·VßZó˜¹Ç¬¼£f—\$Ç‚‘RqDm +4_­Ì¢†R úòÅ•:­šS‚öë¨1Âoð7({qÅNN`ºÕ}¢;Ré÷£ÙÔaþI^ªƒv3ºtJ°&fñ‹tÇĪs¤ÅæŽ +¸AÆI#J¿ê²üŠÄ ì$Žƒæ{t@¦CÜrZ6HÎiÃèB ¼°ºj¤Qp‡Ma[Ňj\Ã|¸JÏ8¢Ö´Ý‡löºÃ=µ>ìrÖÔVû*}È\o`KÖ”/ç¼¼ÂXh?åî¬1§”î²_!°ÒQÙozêÌUT¤ XkÝÕ§±ô´e-L¨ªÎ~#*@*«1ƒWMw_ì þÔP™hÝneVëÁƒ)ÖMëž¡…ž§›Lfê +Únñç\[k3Uñ”|³t’Oórj~4Šä•ük©*`§;mÒêÉkoŸX3ºäæm£fÏúý믯–[4LÍwØ‚›:ÝrÑäÌë·\xèîg¹¸¸ÌF¯Óê¨V‹WÔ¸u&{ðÚ±—?Þ0kÞg€õXŠ}%é«GML&…ÔÂÚÅ«éÊÖ˜“€¯$ wÅv¥u“…”‘‘d2™K^#¯™~çøÄø‰ã3×Û¿ðýÛªq¸ Ý)RíçºÐ7Óu‰¯ÃµØwë6×&÷&ïóÝJë÷î€ñM÷›^©üUƒæ^Œ +¿MÆû +*õgÍ„;Nzñ¢- €‚±ÅŒ;ÌûÌ͇ͼÙá/|ú4/Y6¤óZ–cÊ]¦¦Só±¡ìÁj–öfOìt™}^c3°ü £ŒýÖ3³þý°ç‹N=aýâÉË~_oÒêíú’ï¯ÿ(sëÞø=VNw¼÷݇œø¡G^¯+×9 }Ùtìzóy,ÍüŸë×?ûôítî¬Îfù{@~)àâcÖ¨ífî)ëc¶^²ÛºÓ‚¥ž¬¶n°n³¾d=lÍXå[H79H89/·Øy»¥€ÄøKÔVÍW[Æòc-Óùéæ–ŽóñåüBËÛÇ‚‚kø«,÷[ï³ý†l埰l±í"{ù^K·íyÇóoZ_·}j=dû‹õ¨-®²º¬q·Æmkk ž¶îµ¾&yÍü™õküµíŸäGë?m‰­¦èõI³^o24f‹?J“!ŒBBH q'(´%ônˆë ­ }¨‰J©› +B¡hAÀ_€ÔRzCl–bµbƒ‚Ó)|ŠI +î¸oSìS¦ X¡Ø$Q(¤’€Z N¶Xãñ$Óö{‰Õ&ôflježÌž,f3MB‚ÝR…ƒ`ÂaÁnØF8‚9Áb…V²A6ÜòǺ5 šcGS0æ¦ðÊhßY#˜j4Òµ_4µ´ÃŽí¿uà^|›Aw;Ä’ +‡XO9Äp<<‡ŸÏì†ZZšýAŽ rC†’m÷áÏ¿ýËϯõ±µjJ§:þûú¿,y•%TÒ—>õ2_—ÛÐ0ÙN¸ä©?pÿÕ‡¡{(Í*1 ¹Ñj±0à(f=Ù1×Ñåø9èNý 3L`Rµb†f«Ûq¯Åps¯ƒ¾ç9·T£V"¼Ï‚û LZž‡!žêð\´zÐöh_nw4ý +(‡jÑ!]*Á–`…é ¥Ï? ôm¼v5ÇÔ<;{ÁqßSþ$1|üq梜žßMÁd.¬$s/óDrd@­Ûµ’^r3ð%¥BüEù¡by©ÈK¢Z0ì3467H {°òÒ9þIî*‘wȉü² Ñw¸ ±¥í“ }ÿÐrì$]+¢sÀIÚx?ÇDÎèiž5Z*8‚/` Ý)Hø?fœŸ/‚¿Ì…0?=ô: +£¨{ÅÒFs§™|æ/üÿhøGÿÉôòØ’¢¹É¹åWk®-+¿-¶¦ü¡Øå[c[Ê÷xµDNgþ9lƒT!‘È‚¼ñR» · Mi½w—úeÜîŽÈä5DŠ¥¸À#`A©Ô+¶(º©$1I1K±Mq8’³¢ØŸ[ èòû‚ƒG‚'‚|Б*œ=D\d»¥t­˜.è*ǘúyô\úgËjæ^ä%Ó™=ÙS(/ëÍþ³Ç+G½KÈKhS—ÓÄ"k²7û×êA¿œ=®0i1Ë´¤»ÚF…Ï +ºˆC*RÆò²Á[§ÜõŒ–…ì3'°éïÆ]µ®}ÿ™|æýµoÝ~ûï~wûío‘7Ø\vj÷”‘‰Ë +€6ìø +ëOíÆx×.Œ2ãïyû»ïyç*ËÃx=ãDI|ánÏþУ£¦fÕºaÏ¢Ç]φ¹Éh–sZê\ä_®u^Q|#ºÝysñ¦Èƒ‰_?y:ñ›bãA¼9¶UØãrC¨<„9K•å¼‘CΨa25jHæ3Zd¯1ªjŒm‘ß­TÐÑÂ8d!ìP8„5J¬SQžPrJgi¡o£o‹¯ÛÇôñðq>GIÿøàQ¬“*Œh_m:·Ãö“çÎígÎL2 ì.lN€ÞÐS`Ž÷fÿ´=vƪµ4ºg.)äTŠÐCûô«lœí…g:éؾµþó2}˜{éÈúC÷߈:òæ&:²§÷É𿟇A}.›çÁƒwÞùî»Àö4ó_!;jSs,+,7Z€0Ô3ôú€‚È%30Èv˽CÀŽrày‚A¯Ÿ¤ß§çôÇ`NG™Üàpçånwåm§¼­[Ÿò5¾./g‘–Ì)n´Õ…šÄhL]¨'›Ö¤4Z¥R‰Þf5YêL’ +…i‹6„ÖáþÝ,©Ô‘ßaï;I)õ(mjmÞÒuØ0Ö¼”Ñ8 Æ‹ÙhËëÓ!-µOEÕZ£C¶ô²Ë–ÊF­:ü„ˆÿ¾<9¨²”êßez},Óû¦Zip¨x\zö „¸¿€$çCŠEI¾XT Á,X’NR®.1—XÒî´w¢¤A-šEËx÷$Ï$¯¥Å¿2¿âï𱸻¹Ý>äqœ{ j©Ìïø"¶@"r]D¡Ëö&ìæn;_wÊ:tõ¾'÷Cº^ £œBo‰aQÝ$Y#¹Q}}éuzgü•ø¡¸Ò& }ƒbhª•âÒ^Â?‡P ðµ‹¢“âl¨ €Â-1¿!£à(.²KyTQSV¢œ™1̽¢&i-–w-¼ÅQ±r7~;'³·L`vMµú/²ÔÒÕzP(¾ Eï–ÁxN÷s ã.w¡;áCqW,g”týõg÷UùÐýÛõFä–þLb¶LØÇ– ßzŽúÏ=}Ç•kË-v³Üô‹…K¯Ä·²uDMߘ¡VE«=h•[Fg[ܸ:OAh*ôíèÛj¼\,ÚäüQ <¶àyÒ•Òø²?Jºñ¢|LúÙNÉ.Ùk²d‡2§Ü`ËÙŸ™}fbži7›mö€áLû3½2ÇÍ5X3S¡Ñ(}ÎþLu†éY°"™3=«ÆBÌíçc0aW#^¦WÊ‚ã0hÕt;EÅŒÎö•,!%tCeØ™*9Ë3f´ÄTRÃO[þÿg{¦wº$2iØ%qø°SæÎ +qnÐ8 æJ³'w jŸÙkͯRFoÈ/ŸÅäÏ°R=k=yrÓݗιuæetG2sœrËËn\9³>¹x°ÕÃþ«¾§iÜ0©ï§­Î.½ºH¸²ï›3*ÆñÌ!ò\Œ¨\´¿‚þˆŽ ˆGÏñøÿ—Ñu2ŸŒÈ^À÷#%Z‚=9ðhßQ”<ƨßó&•˜štèŠ8‚.îû¨,èPÒãü¸(sŠ¬Îó똂(œâpò”g+ŒR›U/‘¿V*mÇÖ£$ÈéytžÐϱéÊïÉ£l׬–îNâ×fB,:)’7a²YV²úœüú»™l晀ÚüúM<öÑÇðØß¿¶«™ç2ðè/@‹ÿZBO'ñ3;ŒDÜ“ý;â@6+’Çê€ÍþYÁY²ÿxέUhåZBmÜôÙ¿÷x´EôŽÂìßÅ`LâÖú´ã¹×mDÅ8*Ñ‚Zÿcb„Ä(‘hœ#@Ê~û¹ÒЭ£äW{°tÀ lÂ1ýý§ØÔ0ðÜ[î]BŠõ»Ãæ°:,³C"u»<.¯Ëçâ¥ÑHA$)ŒðR•Z©V¨åj™Z"å"CHD‚É)â¸4,¢">)â Î/b—¼ˆ:!¢bU%skÞ…ð‹_úÅ}7óÝ/¯­©ðß5bÚŠw±žÂ»j§­¾òAG0sdÿî+?"àaÿ~¶Ó™=Ìù¸ØåWªti •¼nù,üqôˆïˆÿoá¿Fe!KÔ:J˜ž*´„/‰.Ò-r´‡ou¨­½€<+LæfÓ4ËåáùÑœ©Ó¡·8cú˜1ì\§ß¬¿Ï~¯ó1ËcP61t³‹ +r¸m9‹Dt‹Á“©vðR÷¯mþ J[#oÞâÃ}û}ÄçL˜ýQ§Ho‰`]ÄÙá"ŽøAÛkËp¼_¦jÞ1º»vìhþpÐéƒA9ãÃe-t?'Áæ÷&¤ƒÍ‡,Ž÷¯s¯R=³³>Òm÷ì}僧æ¼5Ù¢7ØÚyã­ÌXõÖËœÆM¹ÜK>§Í5fÍ_ñÈ¡±Mf›!>òr̽þ¦Ü= sYÈW)ôxY«ƒL׃¼äwy+«¼HW⃙#žJyŠ@4¨Ä ,–¸ÁàqDº”Äâá°'F)ErQ8ˆBž +…#ÔJ¾)Á%zq˜…‚Gôr .ÒäÚâz×uÄuÂ%qM6zŒôkôõ'ô¼ÞQñÃn,Ï‹ ,öµ, «–…µË™ÙB&fÐW‹¿19â ±¹?9—?}.É+?UTQ,oå ÂX~LúSðƒgZVèT^î!:}?ÃEöÜô`'ßÉL£Ì¦w¼“?x¾¡+ +lå“›ƒ4ÀãKE…®Çª’÷ ©q/¶å±u—Jåp¸O/…æ¶ÙÙn ¼ÇQÓù–GO{Üœ¦ªš‰Ôõm´fº0¡–Y×Ü!TP4¸}•Á Ç +#_AGÞä°VGÐ + °ÜÑ‹;žÓë +Ôì +@Qл“îV÷A7¯s§Ý“ܳÜî +îmîÃn¹û/áW:Øô·ì$±¼ÑwæÐœ5PgÍèýÃs ?a"Þ?¨ÿIæ ÚõÜ3lówˆˆœù¥|eæV.¢£ a|Íÿú~{QîêÍþSÔ¤H®p‰®&c“‹Wèö'‘oL™xI!'4E)F¦>¼$Ï]—]æ=äCd žG…\í æ½äzd@6ò{Q‰ x™ùEÒ‰ÜèWø÷¹ ú„™8êÙ¢ð‹ÜªôÚzoa³ÊYºƒdà€Ùx†Þð­Y¡s(åþŸ?ÎbJ¦I© +£\s÷ À€—ŠPþÕnäÏ' +þº8È©u—VÌ/]YÊÉâÃKÇ•^âœQÚ%t%®ª¸½â±Â§JFÞ÷½'Ž¼_tD«9m‹å +ã~i (ô£Êˆ3;)BÞd15¯*¦–UÅÅr{,),¤ššo¹‘-¢Á‹xõåa7ŠàH/nÙµp‘¸{qäpS`KàÝÀ‰òµ]Ôã$ð¢wT[<ˆ™3æs´å(Û7D% &)Sí7 “'Ukè’1;Cöº3õ¿êAoO-P# +?3¢¨°ú¨ù|J(=½˜…rël²8Ÿ ›7ƒ™»ŸH4\>`6u3[ðØ2È2ìÔCÞôà%kni¬óÁ­™ï¿Xºã¢'WeÞ"Ê̸¡*æë?»äኺÙ’)¶½T1¥iqõ”û’Ž%} |̆þ"*µôÐ#–k•äÅìH¯D[Q.4Ðð£­-Ýoô c”+DÇjH„¥¿8(~ý3„Ì_ýýǸúÖ“j¶؇Èò¾r¦ÃãûFtÑ>~chßä7š-Öqö —è.ÑO6ÊcöáºJS•e˜}¢nœ¾Ñ(WI•r—Ô%颦¨E&µ80/7é4<’Ù¼ÂVrÚ0])P Ú‚$èJsXæØál¸:¿mÙ×’›ªc Û‹xûÑmYªÑR—]V%ÈûÌ|B=LB;Œö´•NFZ³+mµ[=i;õ HSÈú+ +%½ÙâÀ!þ + +ùÐDC +ÑGòáIQ ¤i4Æ:“<ÐÍ¿Þªˆ&ê-iu>´SqZc0Õa-xê…Îg^Ì lÌ„Š©=ˆ©V£,E¨â@O­ù…·¿õ­Ì[¸â­[¿½uê·/nÿË{ñ[2ú‰ÌŸ·àf¬Å:ÑÅL:ÑäQûÂ4]MˆEpÄãKV°Y©¬¼²¬¬¢Ò“TIX\^ÎËåÞ£rYr•Ù±Îî³{Œ™Yz\Å4]‹âMqEãñ‚¨§¸7»^t{0Ü3¦¾·!¯Çk†$Dç•7ñù¼^·'‚i|œÛíª®"œ%â"ÅÉhe$™T©Ô¼)¢–G¢ÕÕ¯×SUéŠè öEgE;¢Û¢û¢’¨¥¢¢±BÝ}7z$zÒzÉŸE‹Ç‡ga²ÄcÞíæ á=½d•h5 o潓LM‡MÇM¼É1Œ +j¹ÀDºÓ1j˜ŸûkYÑ–x|™]ÿ¥æÃ\*Ès¹T²«MSIEŽõÛ9ÐTj€Oy +=a·ŸÿX㲟¸‚zöm@]Ë™™aŸ½ +пX8`ð~Ž"ä—­™õÌ27ó;v`¹‚ú¿ÇuxØïéÄ™ͦϷè +ûf#žEŸ¹Û— ‡Øvé tŠÅT¾JW`£èœåë®–‚ª©ƒ@­A»‚ +Úœ‚ÕÖyÓ4ô Óñ(ÌN[Üdò8SÅôƒ¤4^Qá)Ž¡B}!)ŒG"ž"_/^,Ö:A÷RCgŠ„A*W9‰JˆèÜø¸; ÂO=A +ܤآxWqDqB!QTD"ŨH_DŠ¨†f +‡aòñ*&›’ÆãÆFÎè¨×Ñ¿â},¯Ñ…CPÈ@8¢«,§µ0úw Õ¹Z†Jöñø9”1zœq@Ó:K ùÚØTr3ëêÙƒÌAW°AøÍPeŒÍÉì<=JçVÇ0*†QºžžmÆ*'Xáv¸Éë«°ÔåÂV¯20V µZ ]8ž#ù\KÄž°’gEdåLÔñ(éa8ˆÃÒƒpgÈKã¹Çï÷zÍKOTz"•‹ +DÔþÙ$4ÇV +ú =Æ”?ÇtŽÕÈAÆÀ +Î'¯ä¿OŠ™QP+ÓøÙ¹büEÿ¶=žHI?sÙ[÷íƒ÷¹›ÿ +UÞÝ(F¿Û£IÇØ +…š…â$£*½Àô9Â…æÂpq¬0UP1,”ˆ¥S‹Ì‹‚ªù&4UšHÜ<)öqøãÔ7áoR?†Lɇ‡‡§…Ul5o +JC q¢œõjÀtˆ$Û‰€Ž}ô¡ )ú©`Vš™?]DEål—º¤dtª¤¤<(JUälŒTFTCzV4åÔ#û¦ü14³)¡écb±™áX,$¡p($T¤Ì© Ùd4 (hF(ˆL!³$ˆéA4KK©I”×%„-!y +&J3=–¬èaÿphjż…!EÓ™Z“"Bª$ÕšâRtÜSeBȈe§b‚è‚¢jÁ&U8*÷⇘±hÿŠ_Î4ʸt>cì"o +š;â–“ŽlÃÖòù#ɦì¡ÞZªpÚá®Ê…Ž²\h+baPùc¸x­t!m^úÏ&Ýg΂ç/ Lî¬â2-ðœþíxSöÈg(ef«†”‰nËC˜ÿ"üí‘`ö›³C~Ãgò9Œ_xõ´ÿ*n‹3‚ÑPÆ6;Ó‹žÍ„½4µ&ó |EfÝé}øSÿƉ܉£=óm¦y€á­ 'õ²‡ùé@QnÑCÛs§+T‡+ÜV†§Ž¤Åá°Zn¯ŒÃ*!¢nQõâ¹»"~…àÇô£0…œ!N¦Pyü:éa)‘: ƒSZ°˜éD¥3w˜›9³#6ø˜]îóMGûÚc¡FÆ€?Ž£ö£¹Ã‘ç·µb +'NY¤À%ª’И‚ió +ž <zïV½à}.z@ò–üÿ™ü¨ä¯rƒ•/Åe’ª»{Ðàq¿üä®»>¡Žÿªï½×2ß¿r sâµÇ +×ÿéOç¾,SC¿ÔÏÍAAœûf‰„w½&©á4>]’;kðQFvšmQ™æY*ÓÌd2M@ApŽM¥í9>5q€MÆ‚Ñ`6‚ "$˜Ìf“ ¸¦#a É¥¯Qrôc$Á`C‹D•‰Ô$ +iÃ6g؃!VˆшKŒÆ-Æw¼ñE¼ +…öò%ð}^éÿIm2Ù¿Xr.Iä'~vd¨]9¥\ЯÎ$Âò3SH÷™Ç§1Êc_‡\Sa\ÌŽöãZj93uÐ)Ž19+©ü÷—ðß²Ÿ“Ï%)|h’¨û@õ…ŠÈeJ¤Ç¦.'ß‹ŸMäTYŸÕ×aeçY|)’aÙ ä$  ž˜39vô¨þèQjœS?Ù9^†ófÑ\¤ÿP7t§óù±?&a’ ‹Û¢ñu…Ôãïê»Dp:ò»*P\Tž’ˆ'jGÕR9¨°oH#É<±Å^d¯tÖ‡Ê+Ê«*Çø/­_à_\¥ÿÚúuâºúMâæúmõ{ëß*7éPeycùô¯ Ä+G§ê+¦•HÿVÜ_/w\¥íöÒ{RÛŠž¬ü:ð¯¢U*ËF"TzæröˆZäÆîrÁíö Ga Ï…¢E¤¤m,-**)õ–¢Ü3ñºM¦Ø&‹i¼)B +J"\$ æžXÀ_Ÿ+ùôÈ@)2"¯?`öûÈ_à\) F +c1Gi øò;kÕU‘ºtZ.×GD{ÉÕ;ý~»¢¬Ïx^9²Œ”íÁO ¹Z´‰M¥­¥¥*K›J¹#¥'JIi}Õ^â”Æ•¢a”_ –“€'¨ñdø=ìTFbðD Lñ¤³ÏÑeNjOer§ƒiŠÇìiç±þsþL·Ì­1Ö濵š_›p ¦^$¼‹D˜t‘3.OO·t¶Eôû™¤òôË!“ðYy<ÿ$€ÉÕJùéä +aþ!¹»þçM;P'ñú%¦8ƒwòð´³÷ïZiÊf2j& +Ùx S¶à–t¨µ¦üúç;×âßeÖ­cöýH$úæÜÂëºêO°m½öƒ…”¢MÙϹ¿ñÝ ‹•¢—ÄúQrüö—¢Ñ>¬Ü¬á¢Špð†à6-_$—£ ×ÄcÞèÔYÃ] •u‹.¡ó&½ÄËó /¾´ ]&/èÅ5¢)ùs¹¼¬\ð;ËM—Úe¼æ¼¼Ùý¦.ù“t¨[rÈlé;šffäÆ[ΆËë4wDï1F¡ˆË©õ© °Á¥‹b +À¹Ïfæ>œ™?ÏÖ¿3GmýsŸ§”’ëß¡¦ä*Q|ÚTôÈ +#WN¡Ýò`ñĉ¿µ*óö”Ĉtáà.„L¥½}ûEê|ØcœóöFµéM—Ý™™|šÓôKà4W§ñ€‚«ýw(oUÝb¼Õt«ù6ËßaÿöèºØ†BµªG©A'`¨ØÝå' +r›‡»3†œNòØrü BË3C±ÎçµZ=^›<îU(ˆWNBÝètDç,Nx½X@“¨1wÑ^<ŒÚÕ þ@Þr1 +ëmÿ£ùŒ@J(TZ´:N­Séxi$ +„ca^j2šDê*CÅX°‹qX/Æ£¯¡œy\a!ýÄ 5a€‰)<ˆ¨q™…}Îd€BØ7MèÙkjåÇö¹ |`ѶâI1Ïò›æÞ©eßfÂ¥‹v·8B#C·]”98%‡â3ªg-šÐÞuýß/Iñ~ÝË—Ý?qDsSâ¶_i`û•Åh8~Sœµ6~sɺÔ/â›ROü¦ðÑb¹qQi{9QF¹¸+jŽ›‹"h\ICª¡ò‚aㇷ„. O‹¶”\\>55½êÒa3‡Ï‹Ï+]j­z¶ä‘Ô–ªKž+ïIuWíþZüµ’@‰ºª7ûÏç†+Kä! +žì)•—Ó¸æ¸:*ņU¤ ‡ +vAhLüöÐúèñŸÿ¼äÖÊÍ¡ÍÑ»ã‹ï-ÙTùúMü½ø_†ý»ä‡Ô•ÿ6œO•—p‰H#äÍ}EÍ3ß–Ä:­G5_Ö‹oM\ØVAŠ²pÌã‚ +íüêÅ-=ø˜@‘íÉ05Ñ%‰- IâÊŠpÄQÓpõ€Ëv0õ?ô¥;é$Å}ßÑ~f'ËîïQèSñ棎/ìÎ$íÏœÞíl9m÷ˆ—å>²<:XëÐ¥‹çyéxxÅt÷³Ò ^Šz•Ôî1E½J/”«¤v)êUR»Çõâf!ÏØ +D"cö«åes̨1÷ùìÜCU„TнIºCi´;I–w^\9cj­ø·ÚhSZÆUWÞÓX:¶m„Ya°Ûö>~W¼õ®È¼ûéÀÖ¥ŠA°%6“Ne•jƒAb7›õkcxÜ×t33óDæ»Ì÷™ÇɼÁ[ššÜ ¸EQž/¾¸­pkü5嫪•’ +…ëâ ›ÃÇŸ +K¯ ­¯ˆ¯,Ú Ü`^Ú–OÕ·éW+;õ†Nc§I6N˜à¿ 4>~³VR¦«†û‡‡Ó…5ñFݽ\‘tn¿+ì*t%ƒºÂ¸|•þ…ÐëIn´pAø +áfa]ɽÂcÂ.Až»­Ž8B+‘KâÔЫDÐrÁm™õÄ"ÖhDîõxKËʬrb•Ã:µOT§Õ“Ô³Ôj™ºß(ÆŠÂУ¢3l4ì7¼k8b8aœ©h³ƒ$'¨YBù¸UC-kò̇žˆËí$± µ¥9sí…òÿPÂhVªL‘x¸Ð\T„ÃÊ`NcE(¤Šá<Ÿ¡ŸMf*Mn·=óÇ<ÓÙuõ³’^6eýf8^t/ªštÓ)ëØEÃÄ«êÛu@wlÿÞ¯„YºÚïå fÑß#á‹fŸþBt_Bb@‘ÿßnì>úÿbý›!Œ†þ0ÿZ€V£;‘mD‹Ñu¶Ý‹îBmhºmEEè ¢ßÐ}…Ñ‹X‰~±½¤}>DSq´= ùÐQ4CsÐBd˜7ºdû{àŽ}PO +þjÆ&˜×RlFUèøU®š¯”Œ‘|/ù^ú²ìkùmÊ*åÿQíR_§™©Ý©»Ø1\h¦¥¦WÌX~nùÄZj}Çvý{Cá,tþÙõˆëK÷÷W^™÷ŸTHùXœ¼>´7ü§ÈÈÈSÇ…²ÂÙñ‰ûŠ.+~(¹™õ@ +ÅþeàY’žÏàþ,™Žxˆ#4œ¼Dÿ!Ë_”ûçL¬ç¬,Ʊ»´t‘ÁºÝ‘‡y(óu–@dò°¤vk–¡×pY–£üÏ<¬@nR‡5ä2j`¬*øÿÊé$¦Éà +(ó÷<¬Á¤´fÌsð,µlƒ%´ÇdÍ –²ôvËXúJË|ƒ´e÷æaèCY6CÊ-yúPÌÃЇòŸåaèCùÝyúP¾5CÊ_ÏÃЇŠÛó0ô¡âÅ< }¨ø˜ÁJÚNõ +«hÛÔ«¬fé¬eðfÓ#lZõã 6lTïb°™•É=×ÂêyÁV–þß v°{3ØÅÊô1ØCËh4 ö1ØÁà-¯ 3¸Áå ¦ÿ+iê),gíÏÃìY6ê\: 5{MzÔ¨2TW5@S€ÒÚ œ€:ÐRp]hêd) +[0õgCz;+Q 9õÀC8ÒÀý]h‹µAØ¥¯”¤5¬„x;KÐD¯då@úb¨uùYÏ~ž»†³Z—ÃríP<¡.@-íh.äv@~šµÅÎSÏ´óÔ2´t®lºÑÿÖxÓ÷ž +®‹õÑ·–Yض¸óŒ7‚© ƒìlF +@ªX¨¸ñ/ŒÉöçå7%/ÆP¹¸íÜ‹Ü>p»¹=ÜÓÿ;)ÿï¤ü¿“òÿNÊÿoNÊC¸äi˜ÆÚÏ™÷ç!å(væŸ9ì?w‹¡ÌªÁqÞË—òãù1üð‡ +yÂR¨÷|µLÿ +Ö‹9ª\ˆ»ñ¯@ï¦c{þ{Î +ç× P&8ôÿ9÷ÿö )ÙýÜþž©åb/ÃY°C*[CC•†…=Šòt}’Û:Ámwf¿:ŸÂ!øip4uËßÂíEÝàöƒ{MÙ){ e¤ì”4׋0÷<÷\OÈÞ¹Ã*;^ïäv ,8ÂÝÉ­G~¨û²|8+n€°Âùðvn}OOW¯€8FÇÁÏÒñïö`ϘIe»PUË€Íý)›w@Š¯ÞÁ=­zZõ ´êAhÕqð1ÔºÒ7CúfHßÌÒ7Ó@@UþX¾ª<ð`ΚO ^É5sÓ`Rõq3òátnZO™o_}+7ªÞÆü-ÜzN•ù³˜?‰ù«Yîjw0¸ƒÁi§ó0õ“ƒ|óuÔç&s¹ú¸‹¸q,lâQÂI§áDîNàÆ°ðBH·C8Ê!Çfñ > +±§ántÏ(_I}'ÄgAçÑôQІQЦQÐI4e¸-à³”Yà¯wÇJbn\ +pÕsõp‡uˆ#"ŽáJÃUÇÕAÎ(;|‘«eïX ¥jáIµÐWµPs- O- O-’qµà \*'‚k× +Nõ$ྴ+OHpE(uùÉmÈ ¡}d=òBè%ë{¼>±^Av¢&p­à:Á­!;{$F]½ÊѲIp“ÀÍ·ÜÃඓ£t.GT‘4Is“È$ŽìŽí¨­-caye.t{r¡ÚY¦«_ÎÅ ›bèap49MŽÁ«öÇ|à NíwÜap´Ã£ÐQèŒ(¼`î²RRVî8¸,8( +õ-#awûÀ%ÕBS ¥bpO”-€ÔÃàcvÍo·ܾ|^€!s€!gê +@k“৤ßÇzØÿ.X߃‡ëê« ß'ƒLr;ôæíÐot­Œö+`5ä¤ó%6€ÛN"ën.W®¸pùáà‚ä¼0záÚ×pÝ×mp­‡Ñ0o‹ï‹“Y«+6T<\±­b_…l/™ +W+i•ÈJWA¹³^Ox4ið¿™ÿ ó—3_d¾MtÎÔ©yc¦fÓLͽ353fj&ÎÔŒž©IÎÔôâ9¢-®ù4®Ù×L‹k*㚊¸¦<®‰Å5õÜŒ§# +z‰ù#™_Æüó=xz)^À—"¿0Gwú¯÷}áïåqïF¯‚r±KsA +M|ÎWâ_àKäR"¹ 䑇ÐTü4’Ḙ½)›%eÃdŲ"Y,* Ê|2³Ü(×˵rµ\)—Ë¥r^NäHN-êÄ8]Ó5Kõ4òÔç¬'Ô'¹{‚åCÝ&n<ñH<¾{ÿ\4~ŽÐýÃÅÁ^¬¼è’nIp$î6ŽG㧌´wWÅÇ÷ʲ“»«ãã»M—ÎØŽñÍë&·ôb4eF/ÎÒ¤›\ô_vïF'nºÝ•››é=3¶óøöÛ›‘õŠ´=m¬3 =ê^kÞ´¡f¼»F[âé¾oüÅ3ºŸò4w—Q ëi=GÿÃ÷nRM*Gí&U4hž±[¹†T7N¦éÊ5£šO—C¤Úü4`å@Ë!áŒr^REË…i+çeå¼CÊmáoµÝïï/3‚•1´Ì‚¡e°2 òe¸\ÿ 2²#ÈÏÊøeGÎ*ãý eÂç,3¨7ÛFžã3,?¼›©ØÞp5ý÷è­ÁÆ6p­Ýë¯Xhï^3Gv£üAþ?§GZ瀂áì¶^üA°mTwCp”°}ÜÕgçw_M³ÇGmGW7N™±ýj±mTÏ8q\cpö¨æcf>3äq·ö?n{áìsT6›VVHŸ5æ™sd?C³ÇÐg=CŸõ }Öq {Ãz@K9ÙÜ03î *% p«Ëß<Òªï¬cØ\ã·_çÚÃ#üRÅ›»ÕÁ‘Ýp4«¨¾¨žf•Ñ,-$ëòYöëjü®=ø‰|–’ +Á‘ÈÞØ> +þV¬È?ñoÅŠ]—­¸l +Ùߊ®•à؆ó +´¢‹þ§—z5›ß|À)o^î6Æ£¹+š»r&H+V"Z[õNW>­„šñŠ!ÛÙ+ÎüQ̈£œƒêV¬ÄìØ-y´Y!ªA´‘ùZúÿ#”u +endstream +endobj + +58 0 obj +22076 +endobj + +59 0 obj +<> +endobj + +60 0 obj +<> +stream +xœ]“ÍŽ›0…÷<Ëéb¾6‘"¤L2‘²èšép2H@„,òöõ¹Çm¥.}À¹×ŸÁ7Ûv‡¡_²óØý’žû¡›ým¼Ï­OOþÒ‰‘´ëÛ%^é{m¦$ µÇÇmñ×Ãp×ë$ûžÝ–ù‘>mºñä¿$Ù÷¹ós?\Ò§_Ûc¸>Þ§éÓ_ý°¤yR×içÏ¡Ï×fúÖ\}¦Uχ.<î—Çs(ùxL>½6TiÇÎߦ¦õs3\|²Îó:]ï÷uâ‡î¿gÅŠ%§sûÑÌ!jB4Ï­‹r¹[òìÈ\ßÀ%Ù+eÉÁ+åB{¾(W/à +Yó¯äx˼Öîx¿¿‘¼'#cr2úú—ÈúW˜þOCÿBïGøú úú—š¡…ýú—[0ýΆþNûп,Áô/5CÑZú òB‹½HôÇ^„þ}„þvŽþxoB 7¡¡¥yú[¬+ôwø¦B‡o*ÑïMèïð®„þ…æéï°¡¿Ãº6ú#oãùÁZ6žŸWpôwš§¿Åº–þûµô/4ýEv<Á8â˜Á?£“¶÷yc£ƒªó‚Iéÿw–§qB•þ~„ó +endstream +endobj + +61 0 obj +<> +endobj + +62 0 obj +<> +stream +xœí{{|”Åõ÷™yžgoÙ[6{ÍmŸÍ&›Ë&æ¶!"y’ˆF @ Y4š@‚¤br¡ðÁ Þ¯-Q+à­l6ˆ —µV[ëOZ/U{ËÛb+iKÕ_Kvß3³›@Zìçwùï}»›™sfæ|gÎœ9sfžÍnï@èa ¬¾¦­GÉÍ*€ŸËê +ý2<>;ù õÊ5=W]sËÁ?íÐVH¿¸jݦ5ï¾=Ç`²Ø­íhkôÞV,g¶c³ÖbÅªÈ +j,?Šå̵×ô_»EwÏEÈŽcùÒuÝ«Û™óF KåœkÚ®íÉ¡GP> ë@îj»¦c×õïÇr@ÒΞî¾þ_@^`ökïéíè™ýú¼*°˜øs̾٠û#*V¦‚(©Ô­.Ao0šÌ‰øÿë%‚TžöBªèƒT€èñ©éŒgmŒÒOÑXi±…áYøÉ!2Œ¿¾".R ƒ_¢·ì‡I¸¬Ð÷ d‚–ÃÅDD?ÜF‰nˆž€ ánx<ú¹!ú4¶ß ?‚¯PƒßˆÊaÊ/‡8!|Áèà[!æÂRb‡6xßEî{áäÛѯpT+Ü€ýUB5TG_Šž<¸MÜ%½¯}î‚ÃD]í„tÈ€Aê¾ý-ø OÀ³¨“ŸŒ‹ ÀWÃÍð q ?Bî>øDˆž¶ó¥q¤‹atÁF„§á'ÄB¥÷¥SÑoE?$AêÔ 'HYHŸõÑyÑá2ƒ×q¾ì=.^&î•.‹TE¿}lðÑ‘#ä%©DºcòúècÑï£Gú -²ÇY7ÂKðcøü™nn…° G~•¤™øÐâïQÝB·oÃ8ÛÔvvCW䆣h›_Â|D¬$…\BV‘»ÈŸ©ž¶Ó·„G„Â;"ŸB{{! mÔOÂAÜÏoÂ[DÂþ‹H#ù&é&ï ¢ŸÑ/Ex£øwqRòE&".Šþœ —ÂfØŠ¶}Fàü¼ †¿ÀÄLf“µä1"ä3ª¥t1í¡÷Ó'ésÂ"á.á%±L¬¯ß?”n‘vªÛÔ‘3{"÷Dž‹ü,úBôgè;FìßõhÑëÑ+ž„ámìýø5üŽùö?—¬$Wà(}d;¹—B/9ŠeVºwºcI îêFX ípF½»¢¡è£Ñ£›¢ÝðbÿFòÉßÈîˆQDTÂëø¾> ;q^ô?;"í0Ÿ'É"%¸NJ¤]ÒÓÒéÒ›ªb´öMðzôïЛu8ƒÕð3ø¾$\äCõº7Ã:ŽÂ|’ =¸gs0Ž×ÄgÒ‡½Ü€Ö{÷óQܧ0N\?€÷ %œÑj_ƒý4 ¯Dé=¸‚7’¬iǨÄyÉlÚã)ØÓýµÆQ§_ÁÐÚQ®W>Æ…Z²ûú¾í8Â,h$øñ +°j…Ÿ¢½3‰jHùâZq‡! +*¤ß +ù‘EÑÙ´S8ŠgLë‡ðôJ ÉzÔ„ó˜Y e‘¥¨ÃÛDCäç\‹‡hGôVacd¼Oáš(âu-€RݤTÍ»°rÙåeÒ’â¢Â +òýy¹9Ù¾¬Lo†Gv§§¥¦$»œ»ÍšdI4›Œ}‚N«Q«$Q òë¼õ­rÈ×}Þ +XÙÛ†mçT´†d¬ªŸ)’[¹˜ ëM@.äðö Ç<Âꨛ3LAc@¥BÉÞÚºË[Ë4 Yumí¡Æ%Íuµ)O° ?Dæ¯ö® +·&dòs˜Ï‡ ©æ‡Ô|¹“ÍvÊÃùヷšaU«_ßîmo»¼9$´Ù‰~·6äØ|Üy¶ˆ[æ7ßznkŠ0Xçì”YqpðV94¾¤ùÜV˃Aì±4«¾u°‡¾ +Ø°LÆÑèÍÁ湇”ÙLجbóëðÖ±šÖoÊ!­·Æ»vð›­¸4Ƀ!XºÉNNVÆ¢\'65{=¡ªo°­6uØ +ƒK7¸Ù5³¥ Øœ3ì°Ñgô†s™Žé6ÎqqÆ5,¶,ay/F‡É«eÔ¤Ù‹sšÍ²ŽÙ0¸z6Šá+HjÇé iç·šç°z†IYf¯<øW@ðžülfM[¼F•eþ+0–ùÉ´«aûòûCyyÌEÔóqMQÇy¼\V¿a”Îòö˜e$h>hDÛ¶ç¢ù=¶À;GX……ж%ͱ² «R úƒ!ÚÊZƧZlËY˶©–ix«=ùP°…4¾é?“ÙžT·vNˆØÿEsG¬½a™·aÉÊf¹n°5nÛ†¦¥Xûìé¶8Jšß,¤Ð8GSÞŠNyù´0+4ëCbþ©¸S·‡tJ^Aäú¹uA,ê<ž¯ÅŒª5ç€F£§Š“³°¸–¡9þ™å¹3Ê3´Ó +¨¯è£ +M+u3Úê1 +Ö{åúÁÖÁ¶Ñè¶U^Ùì£{éÞÁžºÖ©Ú™ª¿-ˆ“XKæ ³R¨ö’íK†²}ÙÊæ13>ÝmojSBç·Ö‡3±­y ¯* +¯¥Óµ¬$³4tô0Õð¦”1`oy/¯%Àë4SuVÒX™×᫯1lñ%|ã­@ +5(‰¨Ô£´JIIŒ S‹.JŠPáñ/ÃNpúÍ_TNV.2Ÿ®\8Y UÈ›Ï`V\äIô$faFð‚qFÆÏ(üdqÇ‚‹£Ÿà½tÞ×KÈze­:Y“*¥Ù“/IYzqÖ/Í¿MÔÎrÕ»¾á[ãºÊw‹ïn×=É{’ÇR^K~=E¯Rlv•Ëž­Êµ]é-têyÕTú˜iZfIqb¾!Sñ_ÈT2r0s¥º3ÏdÒÌú´Ñè¸Rd4.L#fN ¥ýgš˜––OJAÁZ¸Qµå%5±Ê£¤˜1s&<£´ÿyQ­7èò>‚mœb3§(‘ŠbMH/öirµ9† [¿[OÝzÕ½b´ôÉ‹$Њ¦¿£ˆRšë¹ÒA~ë ‹W:º‚ÃUÚYíô£ +[Ö÷.M0«…ßkùÞÑÜýê¥Ý +MäŠYŸf–7×^ZWjN ¿»àá{ƒ;^ˆŒÞvó¥©å.M}}xûÊÛR³äÔ%us#?·”8³+ç®(ñ•gv UŠÐÌè +yôee\•¨òj²‰­dß—§U[ë­ÔrØ0f|Íó‘÷+ê\ÃrC‡á¾„,{3Æôêj¯’Yë»*£Ýw«åVë-7fjË}uªú„K ‹Mõžš uFf¶¯\_æ)Ë(ó–eªU:)Qëq²õ^uf†’ߧ¿ÖºÉ¶!w o»í¦¼‡m÷åÈ8à5l#w:ns>”÷T^(_åðØ7`WRÝ·üÖNì¥OcÖY4Kq¦²’™S(ŽD]Uc>)Ê'…ù$?ÝSd&æRâæ0&m§(¨¢Õàò_;Ê<à .÷t€õ½þ/üëY©×ï? ±VÊT„¨ˆø2fyê=M$èh'Ž/ð®è b²'ƒæ$ô4'ùJ|"®ÏIhL&ÉõIêªÉüK´8*¦RËú”1Ȉ¾1’“‡.££Ñ‰‘ôLVžqgÆÊ®d^VR¹Ú@feÔga&‘ÀKŽD’ت9õ¦€Æn0Ô,S±L²ce âNžT*Ñ`T™)$©Ä$* +! JjE—%ûK‚ÉPhÌÙVdkµ §lÄÆ×Ô`T±¤¦lG²X!(NW`«@„Q’­h)/áYÆJ|URgd(Âë²þp(íü ']˜ãŸsrQ]Gíü~ yæÓÇ1àµVUšñM,‰€!ÌRŒãXq0[ã«¥!d^ÖšƒçwX4áè) ÑS™ÌÆW/ ýD1«’ÌI.Ì,Î* o#X`4ŒåX_Á$OR’‡¨‚7#;WpV¹‘ø#_odÇü¬ùßØÚ¸d‘«¦lÕ.Ñ7i¤>CÇZV]˜‘ø+C_}{>ù1†Ùa·âT'9’VjÖjÄQ‘4s­¦ÖtÂ,©ØA‘–¨6Tú„:J|vPäÌÀ~T;Iv2›ÚÑw9‡œ´ÇyÊI?w§.Á§7Ž’Ü°Á g&„ éÉ)<_\ŽªJnMôçÊ…æ“fvóØÁ+ø™ŒfÄÃã$®ÝÛãI 0gT©lxD{lèžéÔ&#g.©¸¸ßù˜H;ßnyx±›¦?Û1»ñ¦pÄ-ú=0íMßb3]ŽÑº +gê‚ÿ£,i6-AûZS§¥Ó~s“ëú€þGæ9a~ÏyBuBs"é„í+UÒì¤Ù¶K,—ØëA}§^=ÇRn/w +¥¦[¥[L;\û,{íc–ƒv­‘Ÿ©)FŸ·XÆR«q¥85% ‡ˆˆ–ëW,‰   (((¥»ðd=„®+b“ìPV‹!·ÐÀƒg±‘“SÔ«+¹9vØ.Ä ûEË“þÓ'ýP5yºå8ž±“§YLð3S­G[¾mcçà¬r‰“hÜÐbqäÆÕ‹;¯Ûzuã±úO¿y"òGb?ùòGô³’eMw=}ôÑ˺ ð2ñapS“¬½h»èÉÈÕâuQÞ±’=9 4Y—xa€)tÜü(\ˆ«$”ylIâ®ÈÕ²»ÒR´÷ÃhoZüeÁ'äcÍ—I_ÚÄ×è'µ¸$—–Í+’V؃Î胪5èGµïÒ_J¿Ò¾«ÿXúXõ‰Á¼Wóý©êÍôÒ€f‡ê&ˆ¾Ö%8˜KZEµµBÜšÒ“BSŒ˜a¢õ_,<‰û‘»¤eýüfEÛi^cYcïtŠ¤%ˆNÕ’° Í +ÞŒL_7Wì±tpòÑ?‘@äÇŸÝùrÈ÷wuÝw_W×ý4ã6¢Œ¼öùŸ"¯ÜÝ÷Ý}û†Ý·Í· ãX+¿’Eʪi·¦Q‹ÞÐS|‹a[±(/õ +E¤”– + +™Oç —™‚Ö`ÖŠÜþ`áÕ¦¯¿J²Ì5”Úçæ”æ7jí +9µù§ô“ݸ[ô†„<½!ÛhwØ + zŒÅÎL?½ðÈ\̘8Ó}Œâ¹È©7+F‹عmKáWº+%fI·)›£®€4Á¦vºTy¹ >ÜÑ$WѺ\ÉÉw“b<ÝF”fz,®¢æʸ‘Os3Çv/ƾJfmôÄÞØ¡4u³®<¬Õ0d÷vz±èXÁ’ZããÔ*:MÖά«r×ø; Ul¡’Ý1u£+C_ÆÓ‰9³£Ì“h5R¯Œ‡UÒ9k·‰TkÒrVt•g%¶Œ¿wÝ*B^|uQÏë9|gäÏ¿;scëUwl_Ûqc}öl[ºÇ^ì½â‘gŸ¿ó]’@’Ÿ»ïÌEG}³rì#½ñ©ï<öÝ'‡¾ƒÆº}yžQvxTq|#ñªÄû%A«r©*iebmHü˜ªMÌ€‰b‚t6«U§U%Y}603íh & +ƒ D¶à#™JR©EUc á>çÉ ˆ.M|2Sá½ñNS)Hf6Ø5¿×Ÿ„L÷†t—xˆ‘3¿Dô¡Š¸Ëp%ÚPC¤Â.¥ÀTuAË +û +g0õAõCÚ¯´ÚžômétŽÐϱ\—µúKlµ®‡´Z+ót)!™-”1AmDAçÈ5|„­’ÉÉw¦“t³GãJ›öñ˜‡Ÿœ¬üCLã“Óç÷TU§®#Êgg*zª'¶j-èø iuœõJ±-ò÷êá•/Dþy9|qMZ +k7·m¿éªö[½,H²‰†‰ë^j>Óóô¥]O~ï…Çvã|«q¾ÙU¬Jžsô+¥>¡â!íÆûÍû¤½ºÃÚÆÑdÆJЋTõºÅéû U“_Ó½®O÷¾þ+õ—Cª)Õ¦àÓ•MÁh²½h{Ë&ðë)½ŠS£)½]Ñ›Œ–Fc«‘_òøbá$MŽ’ŒÜõĨ35XLø(:Ä>‹1£ÚWZ,hæ1ÁâdæÎLPƒ‡ÚbÇYaú•éÝé»ÓÅt“G£àÕ +’ô3‹·°ãí4‹ÞxR¬N%ÇZåTÒM˜áã«“=çò«OÕ$¿*YX´³VY˜2(d‰?æ2ž=¿*sF¤°¥‚$#üÊÏ‹Õž*?»Ùýº¢…oTÐJF6¨‘ +oTÐXüâ,¬Ä[Œv•$±·e=´ø ;låx€ÁÃwaRìí #ÎY'öGþxs'±¾}’XT“ŠpC[ÍÊláÚ—WV²´ðáÇž¿ë×è þÈk‘£×í\@ÖmÞ:~»Áx£ o¢ï[`¥’Ù©Ùk MÚ5ÚNC§¹3q³y‡Y­[p½©@­%¸/±t§bé±’"+±&|îÖ+ir v‰]xr¡y=óíØ^œ<}<C†5#ÙYö˜ûÒ=$[öÿnìƒO qHrѪÕK¥CgZ®ÚöÈ_þ(o ,^Fíîf7IÔÎaÅo"nRÁ;s +©Iü +ùO¢UKv)“6'®M”¡IÖDK’`¥„ÇÍ4A­Õé¬6 AçÓhyÀÔ’¨–h¿.`‚Õg·MLaWü¯˜Ó1‡Ì“xî8ø‡ uZpÞ‰±ëdâŒK&yfûѶG§E>–—\XßUùX:4ùÑî=Û‹ï]YV»ã–ÉÏpÒ8ÿ¶èÇÒÒÛ ï)‹nÑî°î°ï†U¯ißÞIø« ÍÒæès ¹Ö\û€4 ½EÒ¨“ÔG’ÑKó„,I#=$= ý±ðj‚TEJ–šÙ—9NáZòçngl»éð±{”¬TÎQƒÎh ®4‘Å&bRl΀i”ä(–`úܸ>ÞUrQ*Iµe©‰IíV©õ(½m$e˲øÇ73vÝ${Ê<»S"Óó‹¼TªD¯Ìî‘Ù2T%š™‹ˆUÄ]yó³È¯"ÛÉf †}í%‘_&?¹á‰7^Úð4M¹ìÔ r'YIºÈ}»¯Õ÷Þôiäo‘O?»ŸYî쩳Œ=øŒ+¹ìÌ‘%ºM +IãÒ1ésIrK­ÒVi+$<`¼J >S§ ÞFÿét‰Ÿ'¥±³D:ô·zËý„Þ%}ï¤o*¹2àµL—kšc¼Ä4©]6p +v8,IVâ°P+q +ZµN­w²‡{8†!‡ÐŠdÜ!8F‰Æ 4 s`cŸ9â©¢OÐê +o€W¢ÕQBÉq +>‡e¹­ÊºÛºß*´Z·YwYYOY%°š­²µÈ*âÕþÚ¡©ÏÑBåøh8 +ÇÀŸ¬\È>—<ÝRi>í:N<€Øg•(z#Tb© _Ì…‰Í;òËü +€(Ñ[VZ–•H7'd§f_â\õíK7W$h¯¿ž$‹¾‰HÓ +þÔ”óJ—ÔßGÞšxû{‘ì߯ìãTÓåéJ¹ÒTùWKÃÿ+ùøï+§¿m‚OK¸§ÐÆ¿ÃÃqêy‘E0ÿì?rÿá›I*¬ûàbLE˜Œâïá.¤ËžèIä—Ò +Œ ¿‡&L·#çû “ù»¥× ÕÓ§ÁýÍ"Ò a·hÃâO¥Z©VU¢Ú£úRÝ­ÐüP[«ý?:‡n/×" Jq±Åé–£®•ôexí2áS`Ÿ³×7y.píu¼$p”úã¼Íðí8ϾçòNœ—À ŸÄy8ÉT?jX…¡*Æk ˆlŽóZ$OÇy}š¦íU&þ&Τ¤8OA”œq^€|)5Îã3¥´ ÎK —–ÆyòWÄy5KߌópJÄy-ÔI#qÞ@–K_aÏDp,£zaœ!Y}癵tê8/‚]½•ó*¬W©ï‹ó"XÔp^Íì¦~.Σ­ÔÏs^ƒõzõã¼Nõ»œ×2û«OÆy´¿æqûÑ´Åy´¿¦3ÎcŸš—â<Ú_3ÕÚ_3ÕÚ_+Åy´¿öª8ö×>çÑþ:çulîú7â<Î]ÿçتÿKœ!ÝëSÏt3xã<êcðsÞÈ<ÍPçEH5,æ<»Y WÇyÖÏuœOb64<çц†Ç8oeúFâ<êcˆÍ׆õVÃ/ã¼²ásÎÛ™<^lc<ÊÓ8ïbòÆò8òÆΧ°55^çqM±õMcúwÆyÔÇxçÝ\þ‰8Ïäcë›ÉÖÔøJœÇ55¾Åù&ßçY=Ÿ‹ž¯‹éæ8ãšn‡§@†(‚bL24ÁZè@ºº¡ S?l‚^3K½È³¼ +ë;¹ÄØR +ëð-ÃR¬» +ñýÐÇKH;Pzæíü{`½(ц²5ˆ]‡uÿ8Êœsdäi©9°‚÷ÓS†2ì­f!—ƒ}tÂjlíÆönXƒ}åž·—¯ëã¬lÁ9z5Í裓Ϩ +S?Ÿ};öu +Ò^¸ëبÿËýwÿ,×4ÍÕrÉ(Ù…k ÃbÔi +· k-àëÑ +«x» ‹xËZ>Û6œ[>Ö5ò‘zyK'Ÿë2ÌP¾=n9}¤f£·9€efƒMHøJËüC1[­áºöóºnÌÛy}o·%ëWÆš^®“\ÇtÄËm¼§>ú5(ÕÏÛjï£?n¿uñyvMkCLéÑ{Žl÷”vÔx5#f\of‘óÏ!Vf²«q´n‘vîûÿh †Xǹ”ÏEÊón¾;þ•'´ÍXõ¾:Ýñ<6«?€¥žË\Û +ÓÞë‡I®C‰åC<%—ÉMk;ä…Ý]Ýý›z:äùݽ=ݽmýÝ]ÈÕëÖÉK;¯ZÛß'/íèëèÝÐÑ~AuogÛºšîuíS9¼FfUsVtôö!R.» h–œ³°suow_÷šþܳ"çJðÚÞWSL¢³On“û{ÛÚ;®ië½Zî^óõÊ}]Ãt]Ëj{Û6vv]%/^³¦su‡\ /í^ÕÙ%/ê\½¶{][_¾ÜØÖßÛ¹º³M^Ö6ÐÕŽÊÉųK‚Ýò5m›ä¾¹-jµ¦»«_îï–Û;ûzÖaC[W»ÜÓÛ‰•«±¥i[ŸÜÓÑ{MgG»¼jÂ:äu8fëX½¼¶§·»}`u¿Œzl\‹Šœ3ÒήÕëÚÑÐò”Ý]ë6É9¹rÇ5«°ïs¤»þåè\¼Í¾·£Í’™çì >Ý×\>£œN¥¿ãfËÞNµ½{c׺î¶ö™Fh‹M½£WÆuãP˜ô÷ ôË혙QfmǺž™ºknA¶ûÑÑÏ=Bf¶ôÃ1 ‹ž˜!s¶v +ßžç¶Åjê9¾FK¼NØ.~(¼ˆùð¹í3êÿ}Øÿû°ÿ÷aÿïÃþÿÉÃ~:Æv~môµ\Št-Ò +ˆg53dÿ¹õ"n¾RSuõ­×adøåO`ÝÌÈ<³m +ÓâÝçíñlë +Î+«YÀKø™0³}fK#öÁf=Àc³Õ¦Òçk?×RÝ_kÃnÑ-ÎçŠóÅYâlQ/ÄŠs¥ÏÛÞtÞSïlmý?Í'VÓÀJ¤eÎm;[ÛÀwAZºû$¦ëI"üNð¢?ŸÓ>]w)¬ö¿êAÿE+ý—ûûWÿ ¢Ùð 8Ïk¸i[µAxöc¢`Æ\Æ4„IExvDm(QF‘Z¬œ†íþ’±è82sJy}Á½%ÛŽÏÀ•PŠÕÏ„—³êgF”ÚNKçÆha1§aM¬Ym-qW'#¬Sœ[ŒéNL»1½ˆI… +=¿ÅÅ$û„ÇÃõnìáIìÈTmž‚Z> oaŠbPû'q.OÂçñµzbD«gÃ?ÁQ)ˆ2anÆ´ +Ó~Loa’ óݘ¢û8f·ð8¶=Tx\x,lv›«uÂwa+&*< &Â>ø1sÛ<4bJ*QªÍÂ}Ј‰BHXã˜(v{ÂîŠâ +á‚bn†±ÄŒò;Qé¨ûdhsÂË +&&¿s$Éκ¿1lJä¸o…‹1fÄì,iD+\ DèºÀ na Òt¤«‘¦!]%´ƒë©Œ˜Ì%Ûp¼*¯l¦ÝBµ`ÇCÚ-Ô +ÉÂÅÂÆØ8᜼œñ|ÁÉEL‚H5‚:\â– +7þömÓo{Øl+9*Ü,¨ÁŠRÛPÊá6t¸²:>“¦­¡dWµ^hÂi6¡Yܨ#A+wñŽºÂØQu¢P'¤‚Û®ÒÀ†´^Hçt¯ðîh·ð_ª{ü°pGÝÍ:ÅáçÅ\kÞˆÁX2^­æakH¸à>ø®ßì¨ö 9P„‰¢·"·•;ý rƒ¸jƒ¸Rƒ¸Rƒ¨Ô z;°eÊ +›¡GØ»0íFž¹•-ŒãLfNɘàœhóa4%ÁÚä­‘iæ [’¸˜sDo,©:*ô¡Ÿ÷aŸŠÐ?âp–tòøTòGœ) ÐFw=*8bKƒ@;[’£B*‚&MHÛÜ¡j7–™#»ÐŸÐcÌHômú.[nöK@N߈Ó7ãô?b4:NÅ6ý9£Õ©ô#öýúkØ¥‡é+xçuÓé(Ó‚~@Ç  +éûXnG:†´é¡°çu÷(A‚º?6ØÙdé+aaœqgÅGJœ±ØKª³èËô%HÅ.~4éKt2¾ˆÔ‰tœöÃëHŸ§exÉpÓqúCz„¹8}Ä+¦›Ž„L…PXÍÈþ°Š‘ï‡!Vj,t¡ß§Ï@2Š>ö%cí¾_¦Ûtû#ôIÚNs[ªuô1ÒLN£Ð¼Ï(XèãárÖÉ®ðÙ=FwÑ]Š³\ÉR +”=BQVQAÑAÎÂgæry\m¦w`ÙMqÿÒ˜—ƒLÑ{0)˜vÑa±&‡eak.i†ãH³â¨ÌØHÞ°{.’Œ°»‚Ik ›-FšE¢$¸Oºïq†ð?¢aÑ=>GE$oe’ŠÎ}¤à»(\íWë˜<žÃqbôy÷ž¬îG°/’uÐýû÷£¬¾õÞÁ‡»oGé3J’{›»ÈÝ_pÜÝç¾ÄÝæ^ênÉÂú°ûr÷¦&I3}æ »;¼g‘v_”5ÊU¬wor+îlw…|„ÙfÇú-/8Â,%±ÑóѾyY£ÌÇ——’D%O}J½K}™ºF=WíUg¨ÓÕij«Æ¢1kŒ½F§ÑhTQC5 ±²ß øÙÉ­*3#*‘å"çÍ”å”ÿ(ÑP¸BIBmXVCBã«¡a•úb™w”è–¬ IÞ²4@CSMh¶¿aT]*÷7„Ô—5rGkCtû(¦æQeU7§°ß§¸ùö”1 ÄuóíÁ 8íªœU–y‰õµçÉZã¹ÿìËy.›º¿aYsèé´`¨„1Ñ´`CèzöëÕ1j¢†ºÚ1jd$Ø<&öPSÝRV/öÔQì8Co6¢d3‚bš™Æ“&†k“ó!å<Œ œÎ>.çÓ¸œH˜Üðûr]í°,s™,€÷¹ÌûYpŽ z bk‡}>.å•I3“"Í^™+–Ë;r»Q¤ÀÍEð1ØÍ;r>X¨ð¬HV\¤lZ¤Œ%³25gJÆšƒ2þÿå«£ÆOFŠ¶¼Â~Üê­ëÀÔÚ¹a­3´m•,oˆÿRØ׺jõZFÛ:BÞŽÚÐo­<\üÊyš_aÍÅÞÚax¥®©yø¥£6\¬×yÛjƒ#U•ÍÕ3ÆÚ1=Vsåy:«d5³±ªªÏÓ\Íš«ØXÕl¬j6V•RÅǪëd~ßØ<¬öNGh‚}¸5Ŭ±›{æ1‡›ëqnI9$Ù þ`Hï­ 0±¦‚ê‚jÖ„ûŒ5Ù¯¾ãMÎ-s=)‡È¾x“«½50eZ`B +¡²% +!ϲ•ÍÌUBJÛù׬½x³ê:kñËý<áû\Iè;ï«ÿ|¯>– +øûByËB³– &j5ÕZĺ ¦ê× +kµu£Ñqlô£¤Ÿ +Ç8?a_#UtøÔ¥¦Cª!5e +ý#Éi%ÝGñߊ ŸãèÆp!|¦G2²ØóKÿHaYŒâã*£ádO ûN_9BÍŠQ%±™]Y» +v•e + •«Øwq÷`¥{;JÃ…{è÷÷MÙþ ľ݊ã=NMã1Æïúûø…àMíÿ >mؾx¯}¼ûþ©‰Õ÷Å;Á•ˆ>0ˆƒxãÅ:‰•¦³³/,ü_¨ÏÁÕ +endstream +endobj + +63 0 obj +11360 +endobj + +64 0 obj +<> +endobj + +65 0 obj +<> +stream +xœ]‘Moƒ0 †ïüŠ»CEBé—„:Z$ûÐØ~MLi„(¤þýb‡mÒ ÇöûZŽV͹1Ú§¯n”-xÖk£LãÝI`W¸i“ˆŒ)-ýÑ_MÒàmçÉÃИ~,Š$} µÉ»™­Nj¼ÂC’¾8N›[}TmˆÛ»µ_0€ñŒ'eÉô¡ÏSgŸ»Rr­ÊÚÏë`ù¼ÏXF±ˆ£ÈQÁd; ®37H +ÎKVÔu™€Qÿjâ-×^~v.HEr¾eàŒx¿AÞD>"çQsAÞF&ÍŽx[#ïcžø@œqäcÌï‘O±çù1æ©9G>G&Í…8?!×1,xÌã b™¿B^æÏéáË qx£ŸÕ2yw.¬•IûÄMj¿·¶£E}ß䱕y +endstream +endobj + +66 0 obj +<> +endobj + +67 0 obj +<> +stream +xœí|k`”ÅÕðÌ<×½?ÏfïÙdŸÍf7!HÈDò@c¸ƒ IH ·„$Ü5TÄ ÔÖk}m«xiY’H´/y+µÕJ¡­µÕV¡+ú¥­ÒzIö;3» Áj¿÷ý¾ß÷î³gæÌ™3·3gfΙg“®ŽMÍÈŒº‡ôÆõ +íK–Ì›ƒz!loÜÜ¥™ÿ˜~pqñªöÕëÍ+·.DH.‚ô†Õ붭zä©_ìCÈú„Æý{KsCÓ“7ßnChJÔ1©-Ã_“ ý0¤3[ÖwmýÀx#¤!Ý´®­±!oÛÁõ•dBºh}ÃÖöÝB!éHkÖ7gÿú÷wAz+BJj{[g×}('ŽÐ•ß¤ùíÍí×/{« +Ò}™þhú1*Ò4áxA”dƒÑd¶XmŠjOq8]núÿå#E^Ÿðòò¿ pŽÆíñs4ŸÆä}`îOBÑ÷p+ú:†~„/@©Chõ¡Ÿ"7ª@£íè›hÑ2 ÜŽÂ#ý›ØïCyèQÐ¥GÑ à½Ý„Ž"öÄßC7£Ü¯ ÔNdA¨ÍGmè.|u|ZŽNó· Éèj´µãîxMüîø=ñï ï¢î§ñ!dB>ÔωøÂoã¿Gã¡Ä½èAtßcxéÐJ7pþê@qu<Ž¯Ž +=¢-ÐU£xD¡öfô.öàíÜL¨åÛñXü8pùQjA¡£¸Ï&Aay¼:~¹ ­P냨§ý½ÍÂ…øwâå¢+a<}èçxÚ1\F +R‡J § +ý;ú :…Cø?H›` +]¸>þ*r ‰h ôö (ù'üwr<7s/ò³â3äòu*môcôìÃyx^JÆ‘6ò×dhq"xžåþÀûø“|ä\ Ü'ì +O ?.ˆfék2’_ùüÛC9Co +£áÝÃ÷ +÷ ÷Åÿ€œ0‡>B•BïàYó}hÜ!ô+lÙùpžŽ¯ɬÀkðF¼$y+~—õýûøyÒoð‡Ðg ñ³>O Åd™Ïu¤™l$ûÈ=¤¼F>å$ÎÄÙ8'—ÃÍæê¸f®‹ÛÆÝÇŸW¸7¹?r¹Ïá‰óF>Àgð>ÊÏæWð›øGøwùw…åÂÏ„wD£¸^¼Mìÿ"M’¦Kó¥R´W:"½*׃v¾€žE?»æñnWÉ=‹î&…¼—üœüôyj⪠h*9ˆw“qɶŠÓÈ4<]à# ëÉ~r‘Lãªq^„Ö‰‰ÚDÿD¥ü è<ÿ<ŒíçPóVÑŒo"ŠfÔƒ)6ÌåóQîgè +î4–øGÑïx#vãóä n>hÁùéB +r£ïsñèYR‰ñ3ùNÐã¹ø)Øãü.Ž82´h2÷6º­%¿EçaïF÷ã&~5ºâíè]ô8¬ŠqÂ1Gtâ—H+¿‡¤à>Dø'at%8s‚݊븇ÄÉëh:ÉÑ[Ü3Ðû“äû\5AXˆ[`܈nCã;Ð6¡†ÿ%^8¼…ù3°»mç +ø Ä7î²ö´#°ºÂ>PÎUÅšs5èÅØ!‚çØ'xРVXã×À.ösÔ'.&ýhµ`Å°ë Äÿlx!Z=_6ÄïAãa?Øß5Dï ½è Þ9|jGé°rÞÂW ³ÈIaV|<ÙC^'‹È}—Ï/H;Œ=è}x¾‰éÂshÿ´•ÅïŒÿ´;vØÑJt: £üZ˜Ã +¢Âá¹äp|×ã=ÄŸˆ°µÄסyèyô]I@ +Ræ8† ã½5“…ñ.®y¸ä°¤ ƒ´6Áþs»>sÉâr½lú¥Ó¦–L™\\TX01?oÂøÜhθì¬H83”ÔéiþTŸ×ãv9)vU±Y-f“Ñ K¢Às£ÜÊЬz-©ñ‘Ðœ9ãi:Ô„†1„ú˜¤Y—óÄ´zƦ]Ωçª/pê N}”+Z)*Ÿ«U†´Ø‰ŠÖ—-¨ü®ŠP­;Ïðj†ïc¸ð` +h•ž– +-†ëµÊجÍ-{*ë+ ºÃ&ãÌÐÌfãø\tØhÔXÌj?ŒÝÓ1Cˆ»rêa‚d t*æ UTƼ¡ +Úƒ®lhŠÍ_PSY‘ ÖŽÏᙡ•1š³E šÉš‰‰3ckFk¥£Awh‡s÷ÜÙ¯ •õQsS¨©ayMŒk¨¥m¨Qh·"æ¾þ¬çR*·Ï¬Ù567•ÛSéiÕhrÏž]ZìÀ‚š±¹AÖÖBP–„gÕï™Mß B¬Z¤AkdgmM ï„&5::ªÄøšC•”R¿F‹B3B-{ÖÔÃÔøöÄÐÂmÁŸOˆŸA¾JmÏâšP0V–ªm¨ðv = ·õzuÍ{yÎøÜÊšìa«-‰˜-c‘æÑ<†1vŠU-•,¦= +] +Ó5èIMÆ4…ÍSОÆ)ÀŸZ ¥bM0#­1ÃÌú=ÊTJ§åcBX i{>F ¡ó¾œÒ¤ˆaåcDQª'£ªù#x,åäP‘fÂœB§³tñøÜÍý$jW4ˆ@|h>ȶ¡vjˆ?¤|G¿ŽVB"Ö½ &‘ÖÐÊÔ¤çEkc¤žæ Žä8—МÑâõ!Ðä>f";crdôkS\)•-ScØõ/²›ùU‹BU –Õh•{ꓲ­Z|Y*‘?e4/‰ÅRfÖp©$‰‘TŽå‚R.e¦‰sŒÃWdJÝÔ/É •Œ‚µY1¥~N"¬5ƒÿÅBýñ ´‹.Kv365zyzÚeé˺gÞÃA‡á¨¬Z¼lÏãey j‰¯LF ñhqMP›CK`e†áÛœB¡65¦ƒÈfRп)™¼Œ15‰×‡jçøÜY°ÑíÙ3+¤ÍÚS¿§¡?Þ½2¤)¡=äGäG{Ú+ëG§?~ôŽÔج;kAV-x*, +‚fáÝ ëx÷¢e5 +øO»×ôLfÖϨ=œ y5B:£J¥DšÐhUad‘ꀎP7Ëå¥û1b4y„†Qc?IДŸ éŒF?t™¹¸f¬ö°%Y;´‘`f` ,vð&ƒjP +C€áÐý\ã?×ôÒøAêÿy’6ƒWãÁ¿Ó#ãPDgxJÐ$µÄ>És%š­^iŸí©Aר5ök<Êò6rX¤Më… +öy£Î"¡È\!T˜«œ‹…ÅækMB“y­³Kè2ßà´ N3ž1Ø•6$&¨Œ~T»»¤«ö’’T=N€Ë) àsš +àuÚÌpÚ©ÛéqöÇK{ÁUÐhl¶«4Ö—9eƒ†B4Œ# ËéNÃéôØÍCºÓ¨]5Ûlš¢:pb +fÙãlªbFº$pÅf3d™@Ÿ‚ +pU̶¨*¦Â\÷ØžþøÅ)SjbÀ?ÅGU1P¬@é5ë‚LµóqG]¦¸Ü“&Cd‡(¥¼­H–(aüÈð +?9é›Öçû¿œòÿÓ ÃžþY–äv ¿$ý¼ìþ{ÿ3“{kÈ7üç¿ÝÑÇ}ÿÓY|ÝZóìϾ +Ú³”íE~:RÑKú´¼¬ð8Äñ3ÁùYÅwñ¢A• +²Á’¢,ˆ“±ÉMŠÈhÈÞ'c9CKÁ)$C +cËVW +'] »©†N¡3 «ýñô) +YB]µZãÍfE“‰Q?‡l‘"é.› +0Ñl†P¶X œkŸ}ÜU.F“ŸºÑÒ¡³JÝGg©žWÙ¬0-DÊK»¬7Ÿ˜ê:p]¡Zèœ4©°À-EB¢$:ÕMo-»öºé3fL»Î‘ÎGÝ8gêY³Ëê;†^€½p)¬!ºÚNè×&ÑþÍ3ì30Ä ƒ†Ó†  †vC·a’tÆ7ŒÀú'œAänÂHDÞ(Jañûù|ŒäÏðâ 'ˆ×øSâù©ò©î¦Rá™Tx#m•w˜L"Í{ŸÉá>*@>×T<ü\yöüËÓQ:T +2)-;G´¦®cc4¥¸ÐÉ©…êî¾¾>þ?OžüÌÉG>{ƒî™ñ¿’áAäF¿@Æø`o(Rd ÓXH·Æe¶1‡\Š!j3Š.?g²)([ìa3ŽKr¥¡²^j—º¥}$M: ŤAé”$JýñØù¨ÏfcÈ_ûèH%:x‹%‰ÐQò)) tÕ‰i¤Ï±‘KGÉØÝ&^5vÐ0êÎ*çaàÊÙ`ðçË…=¯D-,T^¢£FÃn1”‰«¡âBu2hEHu¸\…Dñ]]ºr]î­·ö>ûlJ4;ýÑýÊôæÇHãXZ7|×CߨÎõQ½¨ŠŸãÓau8Q^¤»Èï$K¸:¡Î°ÄÔÌ­Ú Í&¶¸³¬£* úBŠ¥ùi˜e]øÔqÑÇO´OõNô—Û«}åþöåÞ…þûz_ƒ«¸Õy‘\ô(È…m·{¾«ÞÕîâ\~Û>å€B…Oõ%t”<…p|‰³…Få¥ÀžvoŠŸ7¹uKü÷Lª*yÚ´…ê•¢…ò²rŠblñ ÕŽØ<§‡Šò8à*T2%=3§( •Ió$NÒ¨J6;~6YVª“’ŸM‹‹Í‰7½h2ÛJ““­:;WÙ^ÜHÓÕçaF†` +Ζ·—äÕ•m,eªigŠ‰ 'Š7v`·3„T Õ!éìLÂÁH]¹ÜuGs?xoøCìøý¯±~Îس³ñΡ7È󔥷o/u»0‡Í8{ø­áOíÐÑ|ïm3[ +ßÇçŸ`ö\øF=EàÄrPéWÞæÞM¹À]Lyªp¥&KÑ6? œòœñÄ=¼&;¬—Ý/À6ç²-V³5Ó£SÉ{t*S6ÅMªÌ¦þøŸu• +ÈÄ°)ƒqÐÝÌDfrÐy‚ô'º‰ +Íd¤Ú +鋺ŠÒ¤Ã†7aøšæzè”øŠ&Å<<¤ÝsÀó zxG +.¶Á^ìSU¶k~:²©&·ä¦Ê¶ÄÓ–YžÊvTÂvTží¨´ û7é¹nåbÝÆÑe{léG¥ +P.£Âç<œŠpL²Óyœ¹Mw‰ªÁ(%#'*U´¦b›ÑžŠQG£9;pÝFë”íÇ….¸ÆjH-ŠÐÉuª»Ûôfý£óc_ÎÚ9Oð‘ûU¶WÜ8ÔInÛ°¾üžW†ž§kð6XƒØ›XƒÝú·°`¶e +ÅB¥ ”bdø ý3üí}qjJ©«Ôwµëj_\g©±Õ¹®ó­‘×YZl\|ƒ×Ío¸ßðþ1åÏî?{ßN;ˆ¼šgËsä e6]¸Ú6_X%¼‘ö1ÿ©bVœV^$(•žxF§ßjòdž2aŤ›êMÝ&> ³‰7ÓíÍäa8"¦ X}LûCΰåÈ”#)CV “3—˜B.LÈ ÆûðÃ0Àex(7=’kÿs=Î8lÍÐ Vhil§óŽÍ´Aœ8[Ä+;R±‡¶‹´ ìMŸ=vÕŽÕÊPÎ*C—ˆtýÂL—©ô0¡ç*ÌeÚ ÁYs™Nœ + +edq7]±ÅEtJñø'ú:¯<´QþëŸ_KŠ–|}ó3ßÝ´ùáèÐÇ{çí}¹søÃá×þ +ßwlÉ'~vêÅ †ÁáÜ|ùðßf•¦6ÎÄù½6»hSt»M3éfÍæ¡’¶yó¢¾7}ž>¯B#f€©61?µ×æǶþø[úzI¶c©í‘Ó-ºØ´ìü"…’Ù`wY<ö,S–9Ë2É<ÉRl}P5eÛ³Sæ¸jíµ)µÎV{kJ«s›¸Ù²M½Þq½s§ez§ýΔÛšžWžS:Þ7¾ëøØ2¤|âˆûÓíI[Ú•bò§ò¶ +Û­6Îæí~ÂP±Ë“Á6sÖnDœ×‘’¶°™mª9l2ÂÑoÃÙl6‰´äWü$ÏÌOüý¤ìYÈBwô“ź©Ì®ÛÉ +û1;±÷ãGl8U¦i“–®™óÍóÌÜ|sÜLÌÀÑ›gÙ²¾Tm;œ¢ ¼¡ÕmôyÎzÞ£|tÖ«œ…I÷y”ó Cz R;x—0!*ߨ‡Øµ‚`$ÔÌ-•ƒ¡ +ƪŒÕç9~™âçpÒbu9âo™\b̘\b…ÃüYg‰šá,¡úUK·´±.ŠëjS²¨M¦OÒÆã¬68nvLË-ãV#‚ixýÞŒf¢o÷ +¯+ÏÌß¾´hxõ“JvfêZ[Ÿ=ôà¦Û7“µŸýôÐŒÚEt×{ßzE-º)ºÆ H” D,å¹R 6)ÍCeˆh Ê>†ÅGLçËÎ+ç“çè3žNœ8ÁÕž8ñù'¨ÎÞ¾ÙBØ‘Lx¼l˜še,'g¯ánã~ÃI›¯s¯Ã¦H—;Û²…;ù=ÂSüûà%ñ¸˜'`lÑ +ö`§ÑT·×\b§Ô^HËɘ§q‹{í.JK¿Â m†ÃWȯ÷ +Ff4ÈFãyM0:R²&‰IFð³xL$¸pFŽ˜À‡ì'Su[¾€1aP8#ðÂU2¥™ò%¬= ŸÜ¦›M–5~ì´NåfMMϺ:k_î\iRpÒ¸²ÜY¦YÁÊq‹ƒ‹ÇµJÁÆqõ¹Ý¹od ~ú0Ku»Dg?9Ü—íO‘p?yJW4”êQ;êFƒ ©ê'7ê‚ßo3VføÍF—³0\h {<§ÜXqëîzw·›ÏÕM ø\f¹íL)èô«tr‹L=\,¼ ¤RØ“JñSh7U諘vtÙpe2ÙNÚNÛâ6>`+³ÍƒCœyA6b[­Íæ§5ÙÌ´¥Cèæv‹`†£sG¶ºÕç?:É’¢”ReèìEꢞ¥>ÑY—²µ‚ê6ºÝ.wâüË‚‰$ÅEvzq€‘Ç%ójÕ!SÁÌ®w{¬xsìw6üâ®ç¯¼ùwþýý¿qûÁï]¿õ`oA¸ iÙäظôÍ0¾óîÏ×üãäÖ§¹œ_ {å…_ «Q„óë°í|ZÂæ@v*>æê‰log¡±?þjŸÙÂn*ÎÈS5s"c°Ïš¸ÂÔó(¦ê,mT9ŒÌpzcÑfDF‹Y¤ò3«˜ðF^5Ò„:r æE£'N(¯P^ž¸t¯ÆfBpT½SaM9p?ÎH®R¯UïV9U£ò7Rƒ:y-rfÄù¾ Á"ÅŸ–E/2.è?dñ¢Ù"¦¼vG¼h2˜¬²]A)œCòË©¦4k& +K9rÔZ„Š¥©ò4k7[Ô¥j¹Ê4Ó6[½Ê~­m¡}­Ô$¯¶o¯—ºäñ¨íˆýcñ3C¶IÍFÙ–,k¶-˞瘂&Û·È·Ép÷›ŸÀÉAÓãægÑñ¨õ§ükâë†sü9Û»öÄO +~“H{lf¡ÂB+ m,1)SVoGª,ÉaɶÚÃY%΂Íaðê_Ó'Su´0Îa¦¿;RD£I£êb~¡q¹ºNÝ®îQª‘ç¦Ó‘˜˜/^áæE?‚/M+gé´Ä7UwpìjW F£l2›ŠªÂŽ]Õ+ »Ö¿R_e´YµT Ì +°j£‚Ö‡d…y[¬àrXeX“Q£ì€âô¾7œ¸ïEKv^£×jaݳÃÎ,Ë’Dí6›ÕŠŒŽ‹Š×[Ú-ÝÎÒŸÐÚ<#n3Þl$`è.Ñ +óTܦެ•¦LŠ€ëÙ©È Àü,¾˜rqót¼ÕÕÕyÀþ€¯Ï;ø—ßõ&>•…ÿ…«^ L` +§P ,ªé³hf<?ƒ0€5~ªåÛ4;è(ØʼnOmU¬h¬89~ê°”!–N!³täø™Ã’– ÚšÎ¨PÑ›Fë³äT”OkìASÈÑDK£•–s³r*˜ŽF×Д±V¹5þê{ Ê€~8…8µ—Îò(]~Áß«¥wÎÌOq³ g.‹ÃUÃÏ}²Œ/|r`ñG +÷=÷ä¸ßð‘¡oU_&†øÙ ²ê³7Èög??™¼¡¿¸rà†äŽ}Žš½Vªèa¾˜«äŽZxFšêö¹eÕ¬‚Òadóƒ.™Œp³K4`»q1[ÀÀl»‡1ŒÞÃ$Odåc'2Ûü +Ì"0ŒZvCó°£z®‹ncnj +¸.¸H»ë€+抻xq|õÍöW\ÂÈ_¸„q¹„!‰kmçoo©ùD­‚1^yÂT ·-̽o±ŠV)lÍ©Ø"Û’÷,;P)fq±[–Ä ôŽ¥ï¦ÁÍ߯êÛ´vþ]¥`“þõžºï<<´‚<ºë†Ewß8ôœþWÅÏñ~8ý³Ñd2^Ï5X 9^‹/gœ%'§Ä2É99ujΕ9u–ºœ5–Öœúü=–ÛÆ=äú–ïI‹3›ÞÐÒ‘fÑóÁK±Ç½Oeñ>—}Ü{2û—Î7³å +Ngg3•€]{ fÓ9_B±€;à‰ææ•ð%¹Wòsr—ʵÑUrkt³y—ù%ó'–O¢êä"+敼Ì"wAÐáY1®mçϳ–Y÷Z÷[ãVa¿õõC+ge·1ÖÄÝ9C>Òtî­æÄ&K'Ãjõsn0=Žxîuøý{ùÀNsT™e,³s\ƒÒ8Q8˜ ºÅ*Ë583ÙLgÒ[_:Ù™ô’‡ŽßÃFÍe²†2éû +Zqf?¹V·fé(¢D´H~äPD(a'(¨Mvò# ™Hiº…^Ê– –%¸„Y5åÌr {2ò2‰'EËD"ZéHEv +$²›ZÑL;#²k ‘-/Q¡‹§Œ1?Á6‰2”:e£úV:}çj‚ž‚…B€¼þ‰£€îìh®c'3u~ÐÆ03QŠ‹&%¼w0Sص­”5$oûœ—;áDÉJœŽ„™SÌ•6 +¬9ôüìÎ9ÅkßX +wß¼--æÙpêöÝOÍW îŒçýî•ÇÛ–¬omy,’vË’YOc®Ãjñe†Æ_Q»Ñ³ñŽ*½áª [/|¶óŠ)øÍl¿’]7§þÚyWlUz!~'ì:t—…tYÞ+aIBŸNß`ÊÒÃÑL„øL¼AÃÿ캮ÍÉ=<â]ñtÓ–½R«+­*«\¬«¦o©`e³ëoe,¾B5è 28Ƚùù;$64_8ú½á©ßZëðèõôÚ‚<¨GÏmV×:H•Rå¸V¹ÖÁ›ÌéôTt{#°Gd#í ¬ÐnÉTMRi¿dŸæÃðõy,ÿÝ}úOóÒ]ÒR:¬u4Mo÷“C+*M\èÃà +Üé0Í$T§F+¨Cð2îžêu÷Ô~0üÒðn|ÃóÔ]=ñÖáÛ…£V{ó‘õÏ + +=Ãá;o^~‹ÓBmÓõñw…áW(ŒSt_ª#ÕIê³ður +¶s™™(hw“0Ð¥¢±‹M,ºÓ­\0]4`É +gj³›UO8BW(6¡oŸè°yƒ]YQ‰‘Žî,œ•ÑŒØÈÖ‹Ñi¼61¡uÕç«6`:«0…taÐeB_iÐM;±6¨éÜž+øPªßç÷ú9ÑQÂÎH "‡ùH(챤‘Ë–fGŠ&A*C±ßäb‡ +Aº!D™(iüRËdô8 —éàñ‡U‘edRG!³°€w¹¥ „nõ’ètØyºÂTîj²~ïð©¿Þß׋çÿn?Æ÷DWiÛù£-Á)»0ùúM¦“²gðЙŽÎ|Ýo_Ã}«û¿™ßÞ]½àÖy»÷þGwÃd¬"_¡´RBV¼ú¶Ú”¤<“È?˜ñÍäYËSó¥->OÉWVË-†ze7·OyIxQT.(&Y¨ÅKÉ|¥ÅSþfþ›åoV8¶y oåLFƒÀóf0Áæ4.‹f N]zrÛ˜¶j’ÙY„ã(ÍIiœÆ›PÊ.rºÈ‰ý¤]7 Ùüžk…Å&„±I·›5Ô,q çó'ùÓ<·Ç|?ƺi¾yP:mæö™±™¦›tR"7KÝ‘¾a{í7‰›A/|=çvazyÊJ}°]–*çáK¯°¢ô + Dã‘ (Ç[ß%$bX'‰·ûÔ¨ëãmœ,_@(þf¸áŽu‰¹ajl¹” G_ñs¤ð¤æͧ‡¾õèëø/ÎÊðÒ{üüpY†ïØr×ôÆsVüwfJEix‰þ#á-aK‘¥Â";Šý×ÅÆ…ŽEþÕ¤Ih64:êýƒW…_§¼é}'åLJîÿô¾ÃÞ‡¸¨¾D©òÑ7* ]™– ®©¤ØRE*-³Wú¯1.µ¬¶¼#¾ëúdU°“³šJõ›$p€z +1 +«¶°¢œR±¢êj½Ú­òf½%^›¨ÌiWGv•9í*»)Ué-"³ÛT+=úÔ§:Žú æëuÙ3Á<–â?òÖ2}Ì[Ëtæʲ­MbG¿ÄNxúÖrþØ·–à¬ÁS×½”ÝÆPË«ôÒÛuhcò®%᣻ÜôòoŒ{ÎMi>~ó¯7­yõ–úûòz‡´g6mþîÁ¶>zÛ#w~öíý˜Û³ œX?E쯼ü/¾ñÊqºÛ•ÁœÛ+Ÿsë7ðŽŒ©†« ™K3š3¶î6ÜšùxÊÓ¹?â,·ÏãίÊ}Í-¤Â²#J6z–ËË +ËËMËÍË-kä5†5Æ5¦5æ5–¾H_–-+’™•9nRæ2c­©)Ò”ÝêÊìÎü†ñaó=Ù÷çÞ›ÿã“æog}'»7òãˆ+›š0TL#HhÉAbÆA2G4z‰jO/Y&g…ÍFÞ§Eœ¼iBš^ôdxsÙü{˼ó¼+¼‡¼'½¢Íð¶yO{ù€w¯—x Ü ªÌÞvëÊ®`Ÿ‚C+˜íû½WQâ-¸U-ÂxÂò´ui$Íï”ø„!Æn%þ4òã‰?é)ÔãýL83½zŠ§¨€][PÅóz!Õ¯‹êŽW£%½-åe'‚—½ñö‚×#eæ@Ñgý%§rpm…–È¡f0­†!´ ï¡…r|¬©`VNQ}Á`)+è. ôÍ}&bm"…µZBÊd Ch(¢{i'´L›Â®¢X÷À +¤WQôüÖØ 1+»ˆJ\JeœF¸ ̓ÍÀ;1ùzT<©ìçˆ:æ& +@ðòà$¿ätœï½‡¸ìüFfRoð¬2ĢѓÎ8èô¬ñé!Á‘Q»’¢pb†EKE†l) ã!Hw@2h +¥¢ŒÅ,3¦âì,ƒQŒò©( ¤QÏ%q¾±€]ÒçDwìØÆ,Fúû•º”É®ÄËŠdM€S,ÈÄ«d)ñÙAïϘÝÁŒÑ²Ûí7lßZþÆ‹Î+Ÿ’óõE7þp™3w¶n_ãrå¥Þzìþ¥­/Þxòu|…mGsÅ!O¸àÊsgoËDçÜ°Ú³pùÂÉ!ZŠ1³°|ûòeû¯y%üX1ë4„2€,É!, +ð$«W›,Eaþ,Öð÷;šðká¢Fܲ2xR5Ç…Òý¢“^ JX Áb<ÆûÂÂ$ìvû¬á}*Vy¶'2…T™³ÁöDGòÎìœî¦Z ¶3šÙÎÈÜ uÄvSGNcµ×éfOx_*NeÕ¥ŽV—ʪƒôºJ«Kežjª‘VÔᄃœÊ®ÌSGü—TZŸ ‘ÂPŸBx:€HQEã¨Eœ|› $ôyĨ„Е4-ÇüÊËÁÜáÄ«æ¤ of¸oí +Î{‹M¾—:;æUõ‡Cìg{;ï’ÊÀ>ƒÃYuµÆ¬fGJÄaVS±Ýâq–“?>ù˜ËMƒ±?Kãà¹hf?A"帊„üGÄ´^XÚ,(W&Ò¿MAȉ‹ðÈDò÷¿¼©.ñ€øsé=yµa’q‚¹ÑRl}Äú‰m»R¡zÕ¿¥üÄqšõÔ‹¦ÐwNô¬HAyh)ôç> + Œ:•Ð¿XäXþrl„F–âX)+êJâº}-‰óÀs&‰Ó¿;{?‰‹`•’$.¡•XIâ2ÊÇIÜ€öàÇ’¸…k©ƒå´²±.‚pð7%å¥n”ÀþW€j¡ä&HSlƒx›a*–¤¬V±¾v1Z„MŒÞÎÚÛÆdIëÕ€ÒÁúD9“eš“éVS;k}=pu±™zŽË@ÓQ!—Ñžèç<=¥­~òv¯ +(Ï'¯¢ž¼ +-¿Š4€ùõí"`¯öêØp Z¡ ‘—^x +åèódrªšé''{"3å.òsò䉟 ?eñ+äEÿŒü˜Å/AœñËäÅžô*7A>‚2 +Ä +Äy/ÿèÍ´âå*9² @˜P0`À^‘#=M;TòzYFÀÙƒÞcñãè1ékzd&( FƒÈÔ+ƒ`¿¶?BôÈ}B’‘»ïŒ‘[ëwFƒÈºÍ€Ñ Ò´0D–­Œ‘y‹ƒ Ÿ<òƒÌ¬Àäyk±Vn#[@J[@J[@J[O¶Ð}ÂÓ¾}«''$ö—è>Š»ŸÇÝ q÷c¸»wß„»wàîRÜ}îŽân?îNÇÝ:î~OQtc½ï²d‰îÁÝ/ãîïáîNÜÁÝa܉»56‰A烰'ƒð$@œ¥t`Ò2ÌÞtgôæ”%Ò¦´•Ï!/@Á`^@§x˜ @^€J^€ +l–¬ø  wt|/ m攬¸àC‘uçC‚Ú’]<Ä:–—ìô<š"/ÀCÿ!Uõ4ůD•9Ü^?¶¥ãyéñt2¹\°#ÛUYíÇ–#·üãïd(7»É^”±/ïíù$-Ðè‰<(wâûQ:Z‡KP‡!ž‚:Yºùe!?yâ‚ÿR(fë‰äŽb+-u$ð‰ÿlà=?ôœÿ¹Ào´~÷~ +”§^õßx)¯_Êó‘~ ÑQ±ø§¾÷2cÝõn¢Ñ‘ÀþÙµ~–ќȸ®Rº-°0²,0ê«ð¯ èPç‘@™ÿº@i‚«˜–9ȇ.DhtvœŸ5Jg.™Ü[ô\é>©Fš'M’ +¤\)(¤4)UrÈvY‘­²Y6ʲ,ʼLd$;èá¢ôÚ!*ìçÙ< +y†+„†$ñ"€`™ «P,…«"U‹fàªØ`#ªZ©Å.. +õcã‚e1!4ÇìU¨jñŒØ”hU¿_›­ŠIó¯­9Œñݵ@‘Ýý-®éÇqJÚ™JÿOÎÂXÝyW*³wÞU[‹<®Íež2ûtµdVÅ—õÉpÌ/=—ái±ûªÕÄžJ«P$žV[ûýG:ø¯øBeÅþ jk¸éø¯• )›^Q[[Õ—2>¤á¿hÌ_Ÿ 3åCšœžà{(Á†òÀ—I#à3P˜ñ… +ÆÇcÊw¸3³²âpf&ãqk¨“ñtºµ±Êr;k‰Ã—xü Ë™Ëà‰þW?Í3¢QÜ;­¶q9ý'Dõ¡Êf€úØ›[<±î•šv¸±6ù߉"õ+ÜЫ +5WÄCÚáiË¿${9Ížª8Œ–W.®9¼\o®è™¦O« 5TÔöΞ_4ù²¶nm«hþ—T6ŸVVDÛš=ùK²'ÓìÙ´­É´­É´­ÙúlÖb:>¿æ°ŒfÔÎ\žˆ{‰ÉúZŸ¬áRÚ§3åôÜ”z¬•ƒÈ­™C3bš5¾||9Í‚5E³¬ô?M%³<7M ¦Å“Y +ÕÐ íÚÔ¹ y*[+ßNø©kx"Œv~Õò*czCEgBU±œEU±²ËjKPëébSGh&Se|0AœÄ©”Èq£Œ”VJiC’ñŸçS2f¿ëî&Ïõb=w¡ÎZ.–^µ˜ÀV°8ù/}Ž‚-E‡ÎZ`'ŽâΑ:’ÝNüî›FtÌ#е)‰%eÑ•Œ%¡HçˆHF?TXÑQ‰uA…èÐÏ­ +endstream +endobj + +68 0 obj +13510 +endobj + +69 0 obj +<> +endobj + +70 0 obj +<> +stream +xœ]’Moƒ0 †ïüŠ»C¡|¬Bji+q؇Æöhb:¤¢@üûÅ6Û¤@¿Ö;aUŸjÓÏá«U³èz£LãÝ)W¸õ&±Ð½š×ˆþjhmzm³L3 µéÆ¢Â76Ín›ƒ¯ð„/NƒëÍMl>ªÆÇÍÝÚ/ÀÌ" +ÊRhè|Ÿ§Ö>·„¤ÚÖÚ÷ó²õ’¿‚÷Å‚ˆ)–lE&Û*p­¹APDQ)ŠË¥ ÀègqÂ’k§>[çK¥/¢4/=ÇÄyŒ¼#ÎöÈ çä”ó)rÆ|FΉãù‘óÔgÏZês ÞÄɹâú +ùÄõÔÿÌyòvá<²Œ8ÿˆÌþ3‰Ìþ“ ™ý§èG²ÿ„´ì?¡úÕ?ÞK²ÿ|‡¼ú?Ñ×Iá(q×?+êîœ_=Ú n¤7ðûfìhQEß7zÛ£C +endstream +endobj + +71 0 obj +<> +endobj + +72 0 obj +<> +stream +xœí{ |Tõ™èÿœïœÉä?Ì„ä$!&‘!‰Á €ÊL’FB“ »T&™I2ÌŒ3"íåå£Ø"Q©ºÖZ­Àº\u”ºmÅW•ínÅÞµ]¯UñÚÞM‘ÝE»áp¿ÿÿœy$Š€ýÝ›!sþïÿ½¿ïÿÏöˆ™¬'@œ½¾H‘el6!äMB„ìŽUqeÖøî_àø÷ø«vFºzûû«ý„ÎÉ®®ž5O|ïñ‰„Hw’ùLwÀçÿhÏøB¬NÜŸÑ —ª¡ œ¯Æù”îÞøê:ÆËpþΫz¾»³âVœ#=2¡×·:ò®X/áü8WB¾Þ@ßßGÉ2rÕû‘p,~=¹õ! †Ø~$ˆt•Þ!¤ÁLˆÜk~ØΛ‹ Ɇ c&5‘ÿ'„²—¼ŸŸ“äá1œuâò¸ò°øÙ@úpå%á +a‹8 +×#GÉ[¹‰¼;%"\K¦ã*!ïÈ"9&xÉ3ˆc¦#ÌÌ0HDj”ž‘Z¤½ÒÇÒAr…“JË¥˜0‘ÉáïLxYÌ&¯“²WxÄÈóðG˜û¥zÉJÞƒƒ°“|„TÐÞHc+y”¬E^r„0׊-¸òª|ìÀO÷ + o!wÏ ß!o“û@瓇„·Q®7Ègä;àÐ/§‹Èÿ«ˆë žßAb‘ß(QÅ©¸†Ü#­vþ=¦ÉoóÏQ2€”½äQÃ^CNF1Ra{LxI2l#“·à¯àFø°A*–~"Í'[5 +Àr²qï`g ”}Ö2ìb¿´\ØIþ(-ÏhGÜ/3‰æ3b JÔIöão¿Á†2Í6Àä”íN&3®•*ñ=’=N×õOöq33ø7ŠLJ™È½“è$Ó$sE¦ƒ:LóìÌÙt¶i¶Ù¤E˜"–Ñ2Ó¥c*s*s/[–_VP®”N)ÝH7š6š7Zؽ#ˆ¢L` X! l`"L’&g–V–Ï)¿¡| |}ùÝå—-Ú¹QÈ­Š‹ ¹9c „|!7ÇP\tIiM¾0½zFÍå—T +BÍå3¦W…;rý–-í÷Ì9ðã?ÿóõ/õt¾â»íÎÀ.ç®û~ÿÏHsž,+ózžBë¥÷oyàÙââkj–^· ¹$kÊöÛÚÏ“)¹Z]$ +HËI–p‡³.Ã(fÚIµ›(^QV{ɲØÍÂV 5Q³Ýd¢µS¦˜äMðS«i¿Íj1ÓLc–”e²Ù-ØC½ ö½ßZ²˜ˆóÊ¥ öäxÙøÔÏ®\zà€}×~õ±!ûLûÌ4÷ãNgL:úá¸ê¥E‚ó¨ÈFC&XÆÒq›¥ØRcñÐ&Úh¹>ózº‚n²¬·l³dS‚L˜d³ÉjÊ'äŠ6É&£9¦ó넬R2­¥HŠ\n,Ë,¡SLSÌ¥–K­—f)ö+HP#VIUò•t†i†ùJËLë̬*»‹8§è§ä”g†ÓX›é¦ó,«'Ëi÷’ë„ëÄ6h–šåE†¶ŒEÆÅ™‹i›©Í¼Ôº4«ÙÞ)tŠÝ4h +f-·¯5®¶®ÎÚBnÏÜ`Ú`ÞbÙbÝ’uævÓvó뎬GMšwYweí±ÿÊþžý”=€N […©B +Z|Ž LϦ‹Ûï¹y[Oƒwz¡:û%áÛ·_ê~í¦ó7z¥Æ÷@fËç±nñc¬Œ!3œyIÀ*6Yí{Íû© I£%Óhš›c;1„ÊçáìÀyÿ3Ës•+ +Ë{±ýòK˜óá`zî5èsc%ÿÞ›oÞ¾{ß¾Ú§û~þŠøèÉ¿úë‡^|ôä&iù“ÿ'H÷FŒÑ‘n™ãœˆ±¸Y²n´l¦,Ça,NÈȶù9î ¶‡«‡¡wŒ…^•Ó”5Ñ6qýÄ»'>”ÁÛ°”Ü¢ç1_Ob*y$÷‡9÷Œßn—¶“{J¾—ÊEó¬Ó2òrŠÊlÿr`èÄ°ÜqxÈvä³#¶WìÃs‡-‘<²Ê1y<[P^YÞTËF†´TxzHOaºž{ó†?ÝÿØMüõ]õ㟬_;ý›ý›v¬ýà—¸Oƒ¿•}ùŠëWu +ò¦¾óì;¿¯ªüG÷ÜÍ·„n.?íg»^9| »sÐRÚÃDÆ‘kc û²É>óÞì;Çgfg]Ù¹îñèÇ–@#ÏÉ[KÖ2Œ™tÀ´Ö<`°d +Øìk³Î;šgGã$ ƒ<—V3»hÖc÷ìÞµ}ÛîÝÛŽ +Ùê‘£ÿ¦~"Øá½_ýã?¼öêP_S‡Ô?©¯b•1ëŒ+ ãñuôÕ»ðN3¢·ÎrŽ¶ÛÈöÌ[³mÔˆ7£œg™c'“2%î¬'†xΨ<Æ.Jt˜Ü‚Ü9¹7äþm.s»ÆOqIaµ„ŠŠ.,lSïÚ±ã.õJáµÏA=õ¹úK¹ò䯾¿iã÷ûðwï~pò'H-êhꈒ²ßYšW`—i%OŒ3ì³Ú•ÏOÚWŒ®;ÎLÆÁx7`Ìq_‚ì¼yh¨ºÚÎÜ òÀác'P¯±Ñs™3T5¹*¿ª J©*¬*šSêœìÌw8g¡³¨yrs~sA³Ò\Ø\Ô\)Ý0ySþ¦‚Mʦ +Ew—>\z´4?q4q(q`yþò‚åÊòÂH~¤ ¢D +×ç¯/X¯¬/¿,Í*W WØ‹kXÈ\Â.ˆÂÉ5<ŠÅßÛ}køþ}{÷ÎÙ¿y÷'?ÄÇï]þ¬7ðâõÿqTœÞ¹¶=öÎ3å +'oÝÙéûù#?ýYöÀ;KKO$òʆÔÕ~g¹Ñ.ä »Á ƒ=Q…Ôe`?¹7Ó ’Á(É\3Ý¡v^h Nĉ”VYH¬²°ñÊâI¤Æ±b©X.O5.;Å.cLì—o·Èß5nå{?³±Ž1ˆ&¬tÊ T*“§¦f8Íݰܼ6H[ä» [3vÀ½;áqùÙŒ—3~“ñg8 +–ŽJ–ÝH–™ngÉ´]äù}bÉ¿ž|R\yôä«û 9'‚‡'Ü-Ÿ|—¿o‰Kïÿ¡£ýÈ +YW}J +Œü½ãŸn±N½…¨‹änÔ!ÆÔ‹ Ö¸½êäôW•¯.f|«è”×›4•„¥ýäj9›Ù;Èáš$÷%ù0/ܧE„û‘>\\K8~JËHå§úØ€>ðº>6;¾™hcÖú‡õ±%ûA!ñÖj%—yHcÉ0æ×úØN¤1ï"EAÊD†ªÆ¼¯26×®EbÌ-ÕÇ€ë•úX±[Ëd|î·ô±ääÆô±‘ånÒÇ&2+÷ }l)™•û¡>¶’îÙ“õ±Œ½AÛ‰qöê‘5Ñ`Ww\)ë(Wª«ª¦+ík”Ú`<|½Åê¨P\==J ƒŠ)-X º*௠§ÁŽz}«zW„C]J­¯û ë+|‹úðÂê +Ä_4 CJ¤¯½'Ø¡øý¾`(Óê ÅjÃá•iÓ´á¢@4 ‡”êŠé5Úr@g8„Tã(Dw<™UYéÇõU}±p_´#ÐŽv*Bø\Æx`R$WÊb€Òè ÷—W(çÀq…2¯gM¤;¦{#áh<àW:£á^Å +¬ÒYIÐàêÓ4”N†Òu”̧h¬%ÕL§õ‡žns¶¥2‚r0F}J<êóz}Ñ•J¸s$J›ÑÞ`Œ«?SºÑÒêŠúB(ºeG±ðj õìPâaÅZ£DÐ`x ÜGQ>¥™¦ï$ôÔÑî 8ˆw#vÔr Cíq••#2¿â‹ÅÂAÒ£þpG_o ÷Å?Á4RÃÈ(­áÎx?ª¿¨œs +D¢a_G€£ñQ°`{_<Àx Ã8ÐÌ=}~ÆI0Þî‹#3½A£ÕT‰hûbÏÄq(½&5åëv¤Ñp0š•á¨  :ˆ¬êâ ͘C´¦è8ÕTÇ õw£cv€™¡³/B‚~ÐVba‡ëk_舳&_g¸ ÔùƒLŽØ,J½ˆÎ×^àh^ÄH:A(G3Ä´Uf•HÊ´=%Öíëé¡í]kÈF‰o˜œáúETé +G£Š­Ä×D>$T¡15|·×·£ûƒAæh¾ž8º©Ïïç’kªcê‹"_}=¾(e„üX°+ÄÙèÒb1õu ’;‘à'6’CI‘W˜¯gtú™)lÈ^¨gLssÊĉX§”òAŒ)’Ù%ô¹@”êGý1¥(‡EŒvbƒ±°-â*CË4èñÒÀHbXûÐL'«ÂÁ$cÕqŒÅ‰`xùÚ{lC“1³M¥ÛWº}1Ä +Ó óº”wû•¾_g8Å*åÌižÍª±p‹jn6f$ŸÒòÆJ0âëXéëBÁ0CaÊ\õ‹9Õ0R˜°Å@O'cj¾[™ÛÔèUZ›æz»ZÜŠ§UiniZä©w×+E®Vœ9”Åïü¦6¯‚-®FïR¥i®âj\ª,ð4Ö;÷’æwk+mjQ< ›N]µžw©ƒÎõx'2×¢¸”fW‹×S×ÖàjQšÛZš›Z݈£Ñ6zç¶ ÷B7 +ˆêšš—¶xæÍ÷:ðÔÛâªw/tµ,p(ˆ¬ EnQ8Hr‰8÷"v¸u¾«¡A©õx[½-n×BË´3¯±i¡›Îmjk¬wy=MJ­EqÕ6¸5ÞP”º—g¡C©w-tÍcâ$ˆ00Mœ”:(;0ÏÝènq58”Öfw‡ +Pžw—C¢îQ +œÝº¦ÆV÷um¸€p ºx¾›“@\ø¯ŽsÆÅoDqoS‹7ÉÊbO«Û¡¸Z<­Ì"s[š]fϦ¹ÜÚPŸÌx:¿ÌFlítï@(vZ°Þíj@„­Œ +\ Ã`ѻܫ;‘8óm=¸µÔÈÓ¨–;Ükµ$€.ôŒ…ò +zöÂG9‡Â‡òÂgxíð— šxÞÉ‹ZŠ³v®*ûƒ+ƒ•AÌ «+"Ý‘J=蜑:&²†DIt‘n' +)#¤ŸÕ¤ +?ÓqÔŽ +©E˜8‰áo”ˆô®zHá+pä"=øQHKWŒÏø à™UøíGHzTg$©z‘Ò*¤Åþ\"„ÐŒžùbëq´Ï-"}Ñ°>Ž-ÀOø¸D +b áwaÚoá<Fê>¾7O+ÇCŽÂøYy†ÝÑWqcˆ7Ì©V#ŸÓIÍ0èÑ1tòš¬qÝLö8r>‹TâǯïBø +„ ã3ŠÒøÙ(—»qðÌÜ4l =$lqºÅÙÓm€Û'€Z +“~„eÖ¸8:f˜æá΄éæ'ƒ¸á|ǹ=™¢üó†uÕ­Œ”#åC}Ã|èLÒPüŒ&»f3ŽÒµvº7S2í>ôœ"äâÇåèöNÉÄÊGq¾Â¼¬—ëz%®…щ&Y3Ç×˱¥¼?Èyêæ{]®.N%¤[Ý¡Û]³–FMó1ÍŸœ¯0·~ˆŸè¦Q#Ö¸îcAÝ |‡¦iªãŒs.FúS‡c~¨aO``Ðïš/x¼j¾W”æ%EÜr쬟?cœ¯<ãÓå£< +:ÐC{9–8ßIè§G=z$•%yLQ`y…ñGÿÕ¼ŸQLé„­DxÔø‘B?àÆÏ%ˆs_kÇÝ8ßÕhгPpèÑÜœõq,šNú¹tó¬×5ÓË×Ò%JÈæ•·}\‡Ž4ë°q/·§fkš–AbxÚq9I9+yQ8f-4ÜA]«Ã­v©šÓ¸$=:ÎùJy]J¢~®Þs¢ˆ†NžµCº„4Š~þÍh8ø“ibBtp|LÂ~Ì{ôÌ–°P§íçuNgñèôêÜùc˜g†” +ÒsQJ§g‚ÂÇõhˆ +ƒMÄJJcé9 ýœÂeöqÎ)ÏÍÃ}MÓ†v—øÎbÏ0¿åÝö½ü™Êçb‹8¿‰ØÍéÓ%ª¦©³e:Y£ß-u¦óNΣ_÷¤î§ÑäŠÆ)Ó©?Íæé^—¸A}üF òœÑÃg4)‘ŸsÊìJÓF×°{U£”È¡>î=šï&hŒÔOì/Ê”à’ê¤<ÌÇmtî §3R£ñæÐíÝÃÏÏÍiÒ:Qžg}<¯¤ð&VbILÄËÈÛ# ç¹—"A©ŸKåçç‹F¹‹’r]\fÛF.Ã\Ü×dqs4KhÕá³i3ˆyÈ——kQòênG&O=?Ϩ.àPgMº•Ù8…¥B×¥ÆÓÿ¢$åV.~.¿W¼Ü6.ÄŸÀ›ðyã›rm´qù\\MœB-‡cZdúlHz\KšU긾˜Ýçõœ’‹k¤uTIØÒ­3šwÐ$…y\>7×T‡nE=ºÞ“\ÑüÑÃe­Óu­áÔü^ó‰†4íÖq™e¯Cªnݧ\\wÃ¥`vZÌùOI¡YÀ¥×¥é,eýFݺ ~¼œ²w­,æ±èæP.nëÖdŒÌåñ»Pç¼-éa©ЦûgS’³áúMÄQî\r‡†+A{¸ë¹?5è¶&µ¡AгàÕr—ïµþžOæíá7wzÕ˜ªFÓëNGZ®M¯´,<ÃöŽ€K­joKÚ•z×I¯ÝF{ÃN¼kµ|¢êMUZîÖÞ‰Ò«^?¯Ïµ0–¬J¼ '+“~¾›ºÓ#zï$<ì=Qöñ»ß‘¤•¸‹R¸´ºÒÇ«F-6Š6Ï|CÑÓÞ #ü¾×¨ôóq\¯L˜|}:,[¿iÄÛp¢ÿsº +”Qme´Ê!]ÿQnïˆþ.äfõd…Ž7Jïe)0 +h}µÞVOyÃ6‹Œì*0t¥qî约DëÑ1š”ç«Dëëï:]ì¾ì7©D‡õƒFV^_^?ˆŽÚR¾â~=§~ÐðJ¾#§T¯#ynÔÑ:,ôkë+)§õ•èÿï+¥õ•R†ÿš}%:ì†ýúúJt”·µoB_‰ŽÚWJIôÕô•èYú_M_‰’/ÚWJýW§‹ÙWJÅÛð¾Ò™nß3w—´÷s­’ø¦u—(Þ]½»ñÕt—èY´«¤ið›Ýe¢ÜÇN¯f¾ú.ýw™èˆ.Sê]÷«ì2Ñ¿ØeR¾².ý]&åKë2Q®ƒEˆõZέ¦mîu½#:ªÍ¿®Þ=­w¤|m½#zÆÞQªôå÷Žèè +ï—Û;JdÖ3ß(§w|èyt|Ò»4³ãC/¨ãsú;Ûùu|hZÇçl}‡‹Ñ¡‰Ÿ†ßIRÊé°YÅüÍU%×ËJü­ä¼ùyÕTÁë×® +¯ÆÎþ7güÿYæ?§n!דQ~öŠë§>WáxüŸøÏjøó |f…OU8¦Â”À¿[áßáh |r»KþD…#ƒð§A:ÿzþ· +œ¨…Uø_ÕðÑáVù£A8Œ€‡[áÃ*åÕð¾ +¿Wá½jøŸ9ðî ü‹ +¿Ë†ß®ƒw^€Vá7þ›uðö¡yòÛëàÐ> +endobj + +75 0 obj +<> +stream +xœ]‘Mo„ †ïü +ŽÛÃu¿º‰1ÙÝÖÄC?RÛ€0Z’ +ñà¿/ ¶Mz€<3ó¾0 ìÖ<4ZyöêŒhÁÓ^ié`2³@;”&yA¥~p#·„o»LÆF÷¦, { µÉ»…n.ÒtpGØ‹“à”èæãÖ†¸­ý‚´§©**¡ç¯ȧ]ä]âsä=òñ1ò!1jŽÈEù„|Àü}ÒÔ‘Ï)šKÊã]×ÄWlrí&¶çù3*fçÂpèøöøj¥á÷_¬±Ñ…ë:C„ì +endstream +endobj + +76 0 obj +<> +endobj + +77 0 obj +<> +stream +xœÝ{y|”ÕÕð=Ï2û¾f2À<“ÉjV²°c–„ hÍ°˜ YH0dÆÌâFpc¡u©- +ÔúZëÆ€(¸cÝÚêŠK¥ŠZ_i¡-h_ O¾sï, ˆ}¿ï÷ýõÍäyž»œsî¹çž{–ûLb½ËÚ‰ôžÈ­KC‘·¹ÿ·„„€­uyLzjI°ËG áÖvD/ýÅž§: Qï^ܽ²ã6ÿñï 1 #¤°®³=ÔÖÒqi!£ÛƨNl¸C¹Eõ°žÝ¹4vÝÚañ¯°¾ëǺí¡53 K ó0Ö¯[º.ò<Ž'd,Ò#ROhiû;ÇÕc}!úH$}@. dê´?ÒÛ!ýOŒÅ:ò+lÆ6À/ý°¨¢uŽD•Z£Õé +F“ÙbµÙN—;Óé6|„Oòg²sróò .),*.)-Y^QY5jô˜±ãÈÿñ€x€Ü$®&N²’ÝÏû㈃¬ dà8­ +Þ•«¾ÿÉ…†ÝÁ9ä4ùvHÇ«äò<‰“·‡BCÐÕ9FN‘7Œ*ÒóÁLVüŒ&og~Ž#¿~ò!xPÏ÷`‰¶U“a!òó¶-#á¬?ÙÖ;i›@¸­‰0@Ž"w÷£ä˜JŽŠQÞƒroøÕÜA²y¾‚ÛˆmärÊ †DÉnò#Åñ6¥ˆêþ¹ŸÜ:Ø*>¥¼(®î/#ÖïȳäE&Ud=iI#„¿ÃfÜ“Ð@jM_Nuªëø%ܳ×7V~Bã‚#½‘ŸtÁtSÂJ'ˆänäàs˜E6!•§”甇ÉÕd÷™KþIœ*ÜUü_ˆ…;CÌÊ»ðßÿ"{ï­Dßo8 ¦Z-¬ NáÕ¡7”U(׃äŸ(ý÷À#O›?/Ø4·qÎìY +õW\>sÆeÓë¦ÕÖL2y’\}éÄ ãÇ3zTÕȲҒâ¢ü¼Üœì@–ß—á°ZÌ&£^§Õ¨U¢Às@Š¤8´ÔÄùÉZ +ÔBuÅERMFçÔ⢚@mK\ +Iq|¹º:ÖÅ¥)ž‹Ðæ–¸Œ@Ê H9 + i™@‡HñƒSÒ^˜7« ˧‚Rüo¬|9+ ¹¬bĊߌ+Ê­T¯]Þ¹¾¦y„zÝ”À”v]qÙ©ÓcQ¥x~ ²ò/VàòkÆíäˆÆH‡Å™Ö„Úâ +³šj¦zýþ`qÑô¸)0•u‘)Œd\5%®f$¥.Ê:Ù í,Ú·þν²¨¥ÐÐh -hŠó!Ä]Ï׬_¿&n-Œ¦Æ ®?–3o¦ÖÄ )Õ³ÓãÌâbŽ% ­?Mp:¿?¿%”lQåXNZŒsSâ0»ÉO?ÞZ”õúõµ©v}ËúÐÞ¾EÉX¿Ó`X©Aq“†&$±wàù +ÞxíÁ¸¥¥Æ“S¯=#nŸ5¿)ÎåÔJ!lÁ¿ê€Œ×oMÃ4üX7A± pPÂ~?ƽ2Y„•x߬¦D]"‹¼»ˆ\ZŒs-´g_ªÇ9—öô¥zÒè-\ÛsšÖÇ…œém”ø†P¼oj׺0KÜô×Xo³JcKƒ VB®¦·uIq1…„XCPo(Êz «˜¾K<þæÅr­6ilÉP:5š–äßòÎ $ ¡ ë +ŠÐØ—§bA%W¬fgY)b„ZpÁº¦²ÅŒ—"qG`rzu)[5]sšJ-î˜'-­I¬xi +ÛWRÍú–© (­À¬¦çHÅÀÑ•’÷é +RI‚S)°k +jYnÍú¦¶Ž¸¯ÅÛ†û®CjòúãrW8hjRµC õ2å2]ilš1'0cÖ¼¦1IF”œSs™@“7A0®ÉÑHMœ—" ¤Z,&OÀ{\£ÁË‚g­Tq'OšÀKRÐÈF¼@ªiŸš„£õóˆŠT¦Ô¥¨©héL©óúƒþħ¸ˆÃn)90bh¨PëR]h¦°Cƒú9¥Ž5QYfP¥—ší` SŠË +MtnTÖÆ>; ™¬e¬• +œ‘óîÚ´ [žG/©ò´Œà݉X³Yó^èÛ©•½ ˆ>„®;8ôÜyMO¢±;4™~P]2:q±Ñ­ÔHmTQn v®o ÒÍF\¸4øq\ŠË¸Qâº@ûä¸>0™¶WÓöêD»Š¶«QEÁˆÞ‡kߪó›ü¸%¥Ìß{×[þFW*ˆFe½åËbdî F#å7òDM|²Qʼn<Çk5"/`SõÁÒƒVŒk­°VŒ,³û­~»Õo=(´ŸÝ2“?(®>³J¬:ë¾aqc¼‰D +Så¿®•)Ašƒ"¶Œ*µ­A §´pL û´°[ kaƒ"ZhÓB£Ƨ`:Ï2 ýZØ®…ÍZ¸uOeT$>f½»~L óSÈz- î·Z8¤…×µ°…ayYûèS çÖŠh7h!¬… ³ÑE¢³®ù¬q´À}¦…·µ°‰ñY¦ 5A ê«&>Í ¯eŸÞÁOª+Ùs~oº3 +@ª« ­¤îKÅ +(j•ßÉ‹Êe¬ð¬ðàÙVáÁcÇPÖ™0p\è® ¹¤‚,•«³óòÔj§É\Äóf'_U©ÊŸT©HÐÔeâŠMÀ›M>§L6›~VÐfñ”’Òú`¶Ÿ¸^©‚ú*Xˆƒ——ÓÑ3ÍWã|ÚÆf”&ÙI}G–‰Y¹U•£ª¡ª27¥Rç\ +å.§Õáª(í4ñ¬Ü¼€Ê®6qNÚt)TÁºãúæ²Æ+¦k•½ßî?øç‚2i„'?¿xÄ’vjypó¢Ù…ÓÆO^z©ãñ-Æ9aô’ÅÓf›¶þêÏ+ËçרîWéTBgû{œ–u.ŸQ·j•Á”Á&Ì~\ÄO&ÈÒp•Ùlt# d92ëƒV‡ÅDôN^ªªxW$8ÇŠB’Q]´V[+¨¤-cÛ¡RûGU¡ØÕ£*ÊmÀfȦ!lúàwÑG‹9­¨œÐ€GšÏî;¨|Ü}mïŠe½Ÿq~å”òAÛÕë­ !¼§,ŠR>U¾Û»ë•ÝOìKìMx{yåI­\Œ( -q6ˆ ‹iÁvV‰Ð"‚O„"akïaPAz{QE(çt*ÍMàœ©¤²h@Y£>؈‡„å)nÅêÒëyު㽙.ýì Ëo±Ö™]`].¢RÙQ?,Ä4+¸ÊúG\Û¼öB³ê½PêMŒ‹jQºp!•ŠŒ > fž¯T#ˆÕBP`V§Ÿ©Èj†¿¸ËN)g@wê›ïú/[Ö}oh£ÊöÖkxxXÓã?8Á’²_y_³õ—«ÝÊGüÎõ7Þzkj>wã|ô˜Ñ–É™V•¨ˆÛ¥5×µÞQÄ%uC‹è¾Iò—6T˜ãùO~‰ÐE”¨vJÂÝÊ'ŠÒ¯ xÐŽwóuä¦åÀs#”ÿQÞƒ"P…ÊgÊ?^}JùÉ3/%Ö.€ =…kç$Säl£8Î)8·KgžÔjâêƒvÑ ÎWÜÐçfÛ‰*Yb;!_åV²†¼•'¶u ª÷PE¹ÛI5l8T8áˆò×­[ØVßZPP7þ=þÆs·ñ7¾|íÝwYžÑŽ­›û2å£qุI¼dÙr¹Kk1£¥6ó|¦Ç`oZ, ß㺸>nwˆõ<Ç¡hªìe™€‹ÉX¢kxmuÅy[{dYŽdUB@bb+Üb 0å·ñ^ÐwÌQ^9ª<¡l„hü7Œ©VÎù_½õwo¿÷.BÞ‚Õ0æCì­W§-¹éß'þ5@ù]ƒ’iê‘ßz¹”dXÔj&#Ócq8ø† Ãb0kˆs{&l΄“™Ï„D9’ 'Ù´Æ—§ÍâØ4³~«…2‡’¬ÌÍógEÒ +ñ3_í¸IùÝ× cŸXñÄ^®†ïX×ÿ"_wU¸Èþ_¾#ïèŸEùó üû‰8×u¼<Ün0茣 ¸ÜFQ%Öu*Fe&Öú ¦b¥ÖŠ+l5Óö.èè +g…3´ƒ*xøÆ;Öý¬)~ðà„jÿÄNÛšuÜÍ/+ÊËý¬Ÿaz*‹éUê¸å“OzåµÊïðf Ét¨„‚KüF7ï1+ø[/´xÑ~{}^N'x½n ¯›t¨³ÕœZÍ».ø%Pv È—@é%@ +Š¬¢ta‚ß„g[w웵y£G àF¡-Ï+á˜JºÜêäÊ»Ü#xÁ§ |ñÙßò¾w.î[Þ}Uçß¹êÄǯ~;ü Ww´µ]>Õ+¦Á„ŸÞxoÎåò¹r¢³tÖê«·¼›·åCc>ŒÏ‡óá…|Ø’ª–æçË’GóáP>Äóa[>ôåC ëKϯyˆ$hV]í®î$Ló…yÜ©È'Ñ­¶ò†‡ç^“Ž€*·tÿ»J5ú+¶>¢|óðì.‘FCO­ +¿¹çƒß÷Ï¢ÛîìßrÀäJðcœ9ŒL”}™Ä`TÛ‡ÙD1\M,ƒÅ¢-j’M¸m’‘4”Ó¡f£¢ +WÀÊ!y¢Ã$¨ýÎi£÷ÿâžÏÍk6)_fœ~çØ©+®¿÷Îè0î®×V~uÓuÌØ +Y^ÿã¡[·¯Yéôu¦¡¯ÇœˆžUtÈ5Ô׋èêmGS Ôf–.%R*"ÂÉT…]‘TnuôÇr«Ae¼ ÇÂ`ÚWê§1þ$óÍKeÉÍÛlöáZ»6+`#Ì8͋ʇ™‰ÊEœ‰|3‘pV ‰A’'æFUU ‹³ZlÔ®VäáP¸3'µ¯üLA/ÌxéGÞŠþº;G£|±¬÷ÚžOÃ×›W濘LrZšwÁ†³RÛZ.°ã¥=/*›_c²ZEyEÛ梱· #oâÒ¸2Ü&› +ÕØæ281ØØž›3àdÄ3 QŽdÀ‰Œÿ%öfþ«¿þܪ€ =FÀpÿ¾Ž›(“§ â˜'1îÆõÿRùbÇ:nê¹½ë;7O»!òÎnå­tà¡õ+ŸÜ+·¨UÞaÎ,!Y9–a*UÁ%9V‹Õ +>o…Ÿ[a-sö¬i­ V+ï3{›½è¹¼^Ÿ/#ô©yTGIÝ¢Ž¨ãê}j±L-«ûÔ›Õ‡Ô"FÈ +_;¨¤èßPOKS¦†ÅÆ ³ór\‰È¸ª¦Æ£²™«ÔÎ (çN~¡ åá=ÐY{Ç¢+¯-¼êòµ ¸CŸþÏ–Ÿ>´Ö¼ùáá7<ûÛ_ÝöEë‚«Z[šÏþñ­øm +ì;P¯P¯ÅkQ¯µ˜½WÊÃÍ¢ÃY‡]eÂÄÍÍAÑÖç€2Há_$ßupB#[–í¦™6ñÚÇ•·þÐÿ&(Ðw(ÿøð™—rû?R^xB\­ü\ÙùʼnsÓèKXŽ¬A?¸I˜E܉s” b®Õê‰>åD­¶9-&³Îû¿œ£$óîÄ9 +3G• #ÅR,ƒç(GÞìýM±J¥|­«¨šÏ¾tHùø³ÈŠ=á²”(GZŽ¸_ ÿýóÛ’Ê·”O1Âè~=¾ã•„ +Ø€·'`$Ú·¬c6€À–ù„°ˆ%½i7€F*o#•í”­ gç#·Ë³ v­ÝëÌÚ B´ï— ¯ÃÛ4;|Î!:\†é‡ Švzh) k +¶í~Øì‡>?DüÐâ‡?È~(c’ZzaèAI!=)ùr¡ê1ý*Àd@¨ºéqñÊGÙ+isù(q‰rt€ôWs·ÚÛ×>þ´rÇÊJfßtíl嘲Vßu+ütߟÄÕOï¸î¿†;vÀ{Í +ʯ®R´o*Ý‹SçMÂ2´Uz2ZöÐi´Z^)…`4€Zc‰@œ¥Fš!á&gÙ!u3å¶Är–£‰5Í–¬4å'+Ÿ­¤‰ Ü%ÊmðsøïFe‰xàÜS°O™×ßÈ£•+„yè?ý¤„äqY:OàóÐäøøâ"¯Ù™St;-æ‚ú Áì$êYÁ+…a¹Àg å' +Nˆ7RL5¬|aâØé<:(GæøsórXö:FÚRwEå¨Ñ~ô“§[–Y+®ñÍ ¹µaY7Ç-xéÐûŽÏµ"èTÊ3êj rÅÏîôOºló]c¯y †í«ôZà:{÷]çþòõqþÏ¿~A¹_ÙöBBÇUhÃ.!³åR>,Ë¥V©\ÈPThÈâ=©98|¸GàuÍè+%u™š§†‰&íöA“Äí‹ææ~)›ÍNªª,¼¡ª2†Åß’Ó107UÊAåÜ2Š`øðGï…ªi«÷l½±­6|`Ãð[«|îZs³rjläñý;:FÁ}o¼ïµÒHû‹®¨ÌÉ)žxelÆ+û~)oþ‚GG׎Ì)œ¢¡9Û3Ü3zb'urY¥R09u:D n +Q¥Ñ MÒð*[Ÿ"NhqB™|N<ÅNì€ó݆Õ'¹ ¦Ýrã×Û”‡0«YÙVœËåm{ýmükkß_¦ ß|ôgeôJ”÷Àñ•pû@#îhlàP{¼$€`io¡ØjL²ÂÏÏ\qEB}ôwLìÌÁFÆÉì¢ÊÆqÁî ‚Uˆ5¢Õ +&• +2¨«F¯PqAìU1x~k…P·TjðóO(§úWqs`Ü‹Ê5—9UyŸòð½Ão:>Ìmu³mÌÅLùx'𥠣ç 0YþšW«"h5@˜o†R¨‡0lÑÀƒìʪA|`¾°‰24°ƒ3{ý>nÀ®f-Ô³wD oká-ì`ïGúØˉêÎQv\f‰7Hå3ŸxŸRÊ@*cN2h¤²°jÈø œ} !1r5£ea˜‰á·¥ÆN•˜‡¼¹ØÛ û~˜$t©”ÆüIK:øŠ%¼Þ‰žår'!SùªßBOVÒq"îMª¿1ù2Q«ÅèU:^MƒQÔ ­W‰ÛDÞ,nðÁ‹.çt³QDë/¢G¡9ˆ±¥–#ÉF(3‚dv~¡…§g©‰d™ɬÔïô'¯uBã¹w¸“ýþJqõ1eë1eã±4KåZ5Ï Bô‚cm®%¨–œ·\Ž7¸üy5ܯ†qjP«µìà§Å +F@žúŒ1Â>#lÂßB&Êäñµ …C7aâätð+¸ú¡<®¯ý‹«ûßæF¦c]ñ ´o ñëä"»ÚˆÀ“©C  ºEûöLècǵ-™ gB;Æ•2ÓñGâ)}0ÁçtØh´òÅSÊ‹*»•5pî‡zX©¼óáko~øé+o~À½õ‰²k'¬F˜7*}ÊÎcÀ+_ýU9Í~¿Åd©ò£,Ý°Tp·Åhr›<‚NmwÛóì¼F—¡Ë×ñZÝiæMbÛàk<0Ãã=àõÀYœðÀëxÜÛ<€½1Ì÷@½*= ÷ÀâóÀ~¼à¸Ç7x ì©(ô€òÀÇx›Áüp€ýŒú†8Ÿµ—z@ðÀèoYßnlaÃ"N6#‡8ï¦Æ»‘kö'{ š +xÒGÙhÛ=°Š±Ší’ž&ž¡ùøµé óÇöØ…yøÐüì)•¯}Ô&z ÜWÈ*?™}MϹoO(gY¼¸”ÙÉ"AyÔp«› +o²ŠlG&2*èUȦÞdÂXŠçMö¾lˆdCK6ÈÙP– +'³Aʆ´–Rþi‚—2:îÁ—j&ŽV«hr’}Qó£|û}Ö +áñ¸›c¿z’ò…òÆù†è“}Ô)_)ëÊ[›töì;^œÒØ -Ò)´Hì}¡X…º£1òÇ j(hV¥"<A +¶Jdë@ÐÁ)¼®ƒ‡up›b:˜ªìr°®îc:xW»Y÷DtÀµè LD'upTqlÓAë“SíŸé`Ÿ6³v¶°öq á¶ë`•t éÀ<„Ð&F¨gh>ÖµoÈÍlŒÄð?nF~àùÓGâçŸtÐUšÞ­tK°)™xøùjå#EU0®„*nrÿËÜd¾ºÿ ®1¡ó7 Î_†²¶’ér‘Ñ$ +&Án3 + ßmo±Cƒd;ôÙ!b‡}vØn‡2;Hö¡ƒiÿ7%JhDýìM;ç°îÌC÷CÞ¶_l} ò”g4?à¯=÷ȯŸ|æ7|ù­Ê)åHÊ ÷³\¾N¾h°Ì©xžf=ÆxÆ‘u¢Z[PÍ‹¶2=Hz¶ /È8KàâÜáþRåˆ`Tfë?‹1Ž9Ç|”Ù#×j8^­Uc&¥Ó«“?½Á˜ƒ°mÒGôpRGõpHûô×Ãv=lÖCŸ"zhÑCƒdýàâR)5_›z97ä÷)”³\ú ð ž½—;Ó?›ÿ®_Åó¿ÿú๠+*Žõæ›eùK—ˆÝb4jƒN«5v·èÉHx¶Jæ(Ó>t7ó•‚'Û3ÕÓæ–¤½áæ”7lHy_t¢ß2ï½Áó¸‡sx*=ž˜Gê?Óþz(ÒØÝžw=§<|ÊïÎ÷pe)ç‹Þ•K»×zOسÉÃ[Xógˆ³(!⳧ÞÓìá5.³ åí†0¸ þ=euEE\=d4_û#ö¾—6Zmé3îTR|n}~»ûR°ûí.;=îVù”‡^ ddŒxS©{¡ð@É°ª'á²]ÎrOÕcPÈ—n~ðÖuçâèl{?ÙÐÏ}ÞokT>Œ}Å[èú˜ÐVÕ±iŒìÓâÆVÑß èxƒ~Ÿ¶ Å¥Ðr¼ +pf8+¦C¸£|ºWw5>øÉÊ{ýßC%dyKôG]Ñ´ëÊÝüºÄ~­8ÎÞ#QyŠÍžáv8ˆ]­Ê°qÙUÂðöÌLK4hÎôe6gò~>3“w8ܱ ·Q4X­Þ¤þLÍŸPƒLcâäñ^ê|/ý •¡jšt´É“H°=µßŽ»‹§/¾…qÊ7ÿzw`x\‘¹]7-_²ì2åï#ùúþ¸»ãç¿ÿ¼wTùþ•gÜófßqsøöù¼ç°òÀ¼34V˜s¢ç™n´ü—Ë#l*£!ƒƒŠÏÉvzcA›Ó©åµæhÁÄcø æýÑ å=ý–>É{ÅPß›˜ƒïÞØÙ0;F™4J(8÷çÿÁXØ|îé· •ïso»vuñöö—>Q¾ +‡F–57/ƒ è—¯‚•pÓÖGr6|þÕŒ†“ï_·jÅ¢~¹&±.Ž¸öÜöl"½&¤´:™X»¡ø»òyxúŒžÂ7¡Íñ°øèÙ¡ѯéõÄl"zƒ>4¨Ä 2ôè˜.ýé‹JÇ9ý•™¨´U~ÁÓü››§+/xêËþ©ü«ÂC÷¡{ýByçÑ8L‡¹0ókö¯“P¶•([ʶ„J·@å3fÚ³ ±»´F•ª¬Ô¥õçús—ý~Þb¾,hQóEËÒÒ}]üœ· +ƒØªHüø!y°ËÎᎠ+z&7(èJåÌ¿þ¡|ÿÀ­½wž>úåé +ËÖnQ^\°ðÙ½ æû?éXÚ^º6¾ùñGo¬yÎ%xâÑ'÷ÚîèSnÁõ4|׶ðÕ?\­OcKoD—Ñi8¯¼¤ÎÌ‘KFØpàPÙPgÌþXÐ`6ûÌœ–7›¼Ó +:Ù17Tú T>­9騇i:e|t∾2›†:C5'Oùû¹çß)MÞÆ嫸Ü'ÛžÿàÛþï•¢Í ¯YÒ-êÄsö­CŠ· +륷.I+Gqì¯$ãñÂ:J:J|8Æ´NaTcI£ê±D9]Ëp(O7Pðš¨ÞH8l3!~5^3p >›È$2 +5hÎ3—|‚Ân8ÆÍÄïO¹÷ùþfþe¡Rhn~+WSݬ¾C£Ó\©¹Os\;Nû[§kÒEtÇõ¹ú :C£¡Ç°Ë¸Äø¢É`Zd®5ßiþÊr©å1k‹õQëç¶2;±±?äà +Ž’³Åù0“öxRIÿE‹­ …”’hv.ç‰ÀzG@OzM®L¯3Ö ‰%öd™'™¤+YˆƒÜš,‹8ËŸ%Ë*b'ÿ•,«Éõdo²¬!(O–µÄµÉ²º 1YÖ“aÜKéÿ€,áŽ$ËFRÅ«“eÉä' ' h±öe² d„À%ËÑR²Ì“J!?YH¾° YÉ0á¶dYEr…íɲšœÞL–5$_|>YÖ’aâçɲŽû“¨$Ëz2Fs(Y6ZM²l$K´mɲ‰Tjÿ8µkqW¬ëúö6©- I­áÈÊÞ®Å1)¿µ@*/Y&M ‡w·KS½‘po(Öî)ÑM¹¬\š$êB±"izOkÉÌ®Eí XiN¨':9ÜÝ6)ÚÚÞÓÖÞ+Kô^P•(ô•í½QÚP^RVV2r‚S€!H]Q)$ÅzCmíKC½×HáŽóy‘zÛwEcí½ØØÕ#Í-™S"5„bí=1)ÔÓ&5¦ë;:ºZÛYck{o,„ÀáX'r¼dYoW´­«•Ž-IOdˆDæÄÚ—·K—‡b±öh¸gr(Šc!g“z»–†‹¤]­ÒŠPTjkv-îÁÎE+¥óq$ì +á\zzÂË‘äòö"代·=ÚÙÕ³XŠR¹DÛ{»:’$¤Xg(Fg¾´=ÖÛÕêî^‰k·4‚¨‹p±VtÅ:éè¡îÇJ\ X:P¦R×ÒHox9c¯8ÚÚÛÞÞƒã„ÚB‹ºº»bH£3ÔjEa¡ÄºZ£L()ê)®YÖŽ´#“WM›9ˆl% +w/o2èžöö¶(]ˆ6œb7"áÀÝáð5t*á^d¯-ÖY<„ߎpO QÃR¨­ +猂 +·.[J—%K1jí +c_¤;C*K£%±Xd\iéŠ+JBÉUiÅE)AÊ¥ÿ©/¶2Òž\Š^Jei÷L\ùºjËØÒÒIÌ™>Sª |j‘9) P$¥4sdÉÈä(Æ®H,Zíê. ÷..­¯I¦¢EZŒW ¯ëÑRµ ¯ÖCXj%a!+I/ƒêÄV‰äck>ËI‰—„V:ŒßŤñ%ôVa„°{ˆÑ +“ŒÎt¬ç?S+ÇÒì$u »KÓ¿)ÌD¼EØ;”®Dæ`­‡DÉd¬w#æ$,·"T–)¬DŠñúϸÿ¹WJÓ¾’ÁDÓåÈU~K÷‹ÑHQ(NS¸øH]l*ñë¡œ/Åg/¹Û¤ã?ÊEB¸v¶ŠQìigµ6F•Òž‹sTä’‰±ÑzTãEF¬Ç;¿•­h +²•Ñ¦š‘ ÆrgRÆKÈ2¶®Q„¤x©¹Eqä®ÈÅudãn9órÖNëQÖ7ëÑä¼2›ÄÆ[Š5*‹È ·“•CLžm ›êZOsjŸôÇ‘’¸¡äºôà7Œ° .)NQRÞìeãöà–Súeóìbë6” ‰I,ÄäŸXó¥Øc°­ØÞß•É}·å“uQrg­`û´3=w„÷g±•”EB[:’z*±Ö–ÃŒ÷”ôŠÙŠPþÛW´bû~bt³q|t2±mO®pŒq›’R[rV”Ãk)&5LènoOJò*´3/J1!­¡e{e9“Û íÆmk §%K¡º“#%fÜͬÑ5éUé`Z–^£Vü#òí`²‰%G +3ŽÚð›Xç„F…w[µÄ.Jèpì’ 1ù†“xì¡c%xYÊvE'Ó»‡Qe)rG¿%Lû†î•ÖäN)Iò\úGùŠ0 ݽi^–"3“{¾'½×– +Ùµ©•˜ƒ–g&³‘¤þÔ&%']@î• mæHf-ÏŸEB»°cüD™,KØc=Ž03‡“<ò¹ÈgÒ\¨&cÉ\¸4ùœ 2ÆÙ>˜„O>Ç“ +‡ícð‰ýäa¼ŸÂ‹ÃØz"ŒÄž‘ˆYŠÏ2¬ÓgÄ,ÀöK°žíyøÌKÖs±žƒÏœd=Y >+Y/Ä~|’ x)»ïAn€CýðJ?Xú!|ä³Ðwzóéí§ùœ¬ò•žÜv’k>¥'šO„Ol;ñÙ ñ«c’ïËc}ŸÍóýåèDßg?ûç‰ü\òi٧ܧÀÏ-¤‡ôWËx—ð’ñâöÁ9ß3¬ö~ÀG>†„ ¾wÿ4Ì÷Οr}-‡7Þw˜§8Ž÷ì{ú°gx->wÖkÍ{Á%›á•—s}ò “jå²òj÷‚_Î}v¢ì…ð^Ø»Gç#{€ì‘öÈ{ZöDöˆô±yÏ¡='÷ˆ{A’uúLË3Üög=Ã!eÙôŒÞTkÞÕ¼‹ÛÉOðQ¶1Ç«/žlÂ; ó9?· Ö·£tGõŽm;ów˜\µäÉÈ“}OòGŸ<ù$÷øcU¾Çr}Ï2wM e> æ߀ùQxÜ`'pœòÍ +|[·äùÄë¼ú¶Àýµù¾m?Ûñ3î¾Ú*Ÿùß=ÜÝ›s}?ýI®Ï¼É·)¼iÕ¦M›Ä»îÌõÕoó ß©ÇŒqowÇíf_óí0ê–Ú[¸å8ö2¼bxEñ*ˆ€7|NEàýÈW®3Áì8)ßAq†{ê|=µå¾LȘë©È˜«®àçªp]BˆÛÒ\îkÆçÕóê| jó|óç]ç›W;Òg/·Íqu…r~n˜3_Í×óa~/6ÏyN~Q­> +endobj + +80 0 obj +<> +stream +xœ]“ËnÛ0E÷ú +.ÓE ñ!É Ž^ô:ýY¢±$ÐòÂ_Þ¹l taáœÒœ|{ØÆaÉ„©;úE‡±þ6ÝCçÕÉ_†1ÓFõC·¤‘|»k;gyÌ=>n‹¿Æó´^gùϸv[ÂC=múéä¿dù÷Ðû0Œõôk{Œãã}ž?ýÕ‹*²¦Q½?Ç:_Ûù[{õ¹d=ú¸<,ç˜ò/àý1{ed¬©ÒM½¿ÍmçC;^|¶.ŠF­÷û&ócÿßZ¹bÊéÜ}´!†êZ¥k"áJƒ-Ù€y .É%¸6¸æü¼"WàagÁο_…kÙwK–˜°‡7æʾ{æ¾DÖç£é_!WÓ¿†³¦-ñɦ¿•ú;‰IþðÑô¯qFM+õéï$&ùãìšþçÒôwRŸþÕ+8ùב +ýKÔ4éþQÇпÄú[ìeèo7`ú;¸™ä¿ÓßI.ýÎkÒýÃÍп„›¡¿ú—¸OCÿwbè_Ê^ôwøOmò‡Mþ¨c“¿Ä$äÚä/óô7ð´ô·’K‹³Xú[8Xú×2Oÿ¸=vzÁxâèÁ?­£º{±m¤Q¥_Ð)Ãèÿöò<ÍÈ’ßoÆòÞ +endstream +endobj + +81 0 obj +<> +endobj + +82 0 obj +<> +stream +xœÕ¼k@\ÕÕ0¼×9gf˜û9Ã\fæÀ¹Â@Ì…„\L& ‰LbÂM`’Ôk°&F“Ú Æ»UjSkmZ'ŠV­UÚ&½Yk|mm´ÒkûÖ µ©õÑpøÖÙgf0¶ïó}ß÷8sö^{í½×^{íµÖ¾M_Ï®6b"ý„%Ò¶-ñÓŸýå¿!¿"lÛv÷‰ W;æcx„æ¿ÚãÛwÞûýKÏ +¢Ú¾ãÊöã_ým'!¦B– +t´µ´–¶ÛĬÿ˘ӀÛå+u„l(ÃxAÇξ/x~Ÿ‡ñF,³bG÷¶–Ü'–ßEÈ%7aúý;[¾¯ân`i*À¸ØÕ²³Í_Í4`¼–ãîxwo_+)'dÛsJz¼§-¾òÞ­'1þ!ìÂÿ” ƒZ%ΰœF«ËÒŒ&³ÅÊ ¶l»Ãér{r¼¹>@ÌËM›>cfñ¬’ÒPÙìòpE圹óª.š¿`á¢jiqÍ’Úºú¥ +Ë–¯XIþoühn!Ò YH¬$N¿'}ØcÄCî!dü=%6ñ-¯ÿôÿO*²Ô×Ýäa2Dn!¯“ÍÉ„z!dB2??"¯ TùDÈFò(9øÅ#OcºŠ#‡•–\ð!w‘'ÈÏ&Õ!;ÉÕHË“äu˜M~¢ÒM>‚,r=9‰¥~„°‹/TcÁ¯vlÏ€ž!÷1‡Èræ,FîQR˜Óä~Ø‚%÷a;oI·xÁç +=@®Åïu¤ƒìÆ0ýhžÿ=Ñÿ[u-YN¾L“9žƒYö_#yyú# + ¥u +ìeÌS 3v;Fn%Ûñil;s »ø 8ô?þ°ë‰f°…D¡T¦‚XåO™òñsl1õã£)ØøŠñ°-r×Ìåjr/þ»:´·r;17G¾ZnÕ¬Ò<Œ½õ!ÒÒM£Më×­]Y½êâ•+–/kXZ_W»¤f±T½há‚ùUÍ›;§rvY¨´dÖôiE…Áü¼€Û.ðV‹ÙhÐgé´Že€Ì«K°…¢P߬ ¶4”Ìëܵ%³ê‚õ±„Ø"&ðÅ((Ø’cb¢_-àXBBÌö)˜’Š)¥1JA1ñRmP|6®iÂð-µÁ¨˜xŸ†/¦a®ˆFÌÉËÔ*…Z±.Q¿»ã`] i„ãFÃ’à’6CÉ,rÜ`Ä C‰éÁøq˜¾h€™^wÑq†d™•j±¥u-­‰Èš¦ºZo^^´dÖ²„%XK“ÈZdB»$¡£EŠ +éäx|ÖðÁ¯<Í“­±bSk°µåÒ¦Û‚y²uHʼnÁÚÄŒ«Îº±åm‰YÁÚºD±RꊵézVLT M!þ“`s‚ï¿7Ò’„h ù%˜`–$`mSžòñÖ#¯¬Šõc[žïßùàÁã&ÓÁx²›Dš°ˆ§ÇŸ=äMÔ%šàcpQ4Ùôúµ+Ùk65%˜Âz±£!ø_Ì›çÍÒ8‘/J&Èdr8/Oaá§%²#‰þ5Mj\$[½)TM01%e8•âX¯¤ô§RÒÙcAìÛëš&¸Âe­Á:äø¡–DÿV”®Ë”Ž ò ËÇÞ¼àA› V…¢WDª–µvŠ M2 sef@¹Q²äiÄò±úzß‹ 6±*ˆÅ(åÔëbÉÿÝn,@DF7«‚ÐØ”j1 µ${¬îxYs´Ä°Ã:kig&BÁx¬I÷®BV]çº&š%™-a_’ ±mÉ\‰PWbÝÁX­J‚RVpMÓ3$<>r¼Bô>&$Z« ;— ”ÕljmObÞVwíb“7/!E±‡£Á¦¶¨"vÈ¡#^*Q*+M+ÖW¬ÙØ4/Iˆš ÇÖM)&ØäU‹ALdf‰MŒ—""±ÁšøÐfáÃ#Ã)TÜšbxI +ÉHÌëÚj“xJ|R¡Eœ–4¤JÓ*Q,gIƒ7/š§~Jf1˜,&+ÆY +SRI¨¦0! åsI)¼t+B/6Û‚Ñ`‡˜"MJÛöP.'™Ayžì«ÆI± f!›H&§" +3õÅÞLæ&–Òx:Ú0%yY*Y<˜\±î Rx0Y AÊ—%ˆ"ÂÒ<ÁKu2 ƒ¨{E‡4ÐK’2˜;.R + .k=\×´€b£>¹Ö{•R—¬€5%³PµÕÂMkŽKpÓºMÏðèÞÔØô8Ì’XMôx¦5=#¢Ñ PF*@%"*¥¤µÉ¢øÞg$Búi*G4¾íi –•‚Ùö4£Âxµ¢"Z‘DLáÔ)…Í!,K…õSý' +Ë$ƒFÊ’ô’‰13Þã €GȳèÇê’E65åás~á=È¿¯ôT•ÊAþ$®qü=M¯f%1'™#ù‰I+˜—ÛÎ6GíÙ}sÔÂ7TKnÝpÅ[6“êbâ®.lPU%„…ðì2àmár›À3Á|†åóD"ð¿¡ðw~ç÷¯ÿùÝ߾†ZX)'äaùGr‚”(ÿòa ,¯üŽüsLþ¦ü˜ü¨ülÆ^\5þ»Š=‰Ť‚ÆèÔàä ˉš²x§µ¯‰²N$jUFéâÝ0ê†SntC¿þ˜šÝ°yóʧ?”p„ÝÕáLÚ -…Š9ár—œV„a»3\>—]5ûØFyî__?08·x]Ÿ|îß¹mGUÁ øûßÆò§‡äŽÓOæ)3ûø{L w=ÒºTšf°XtÙ,ërs&£)ÕëŒV;!š(q>è†òÑ +!…¬Í=ijÂÊ[¡ÈVU^®¤É/ª‚•Õv„A•‡`U¬ùêkÛªûÛùe­ î³÷lgn/™öê«c{×ð‹ÝÅÅ£¼{yg@Šž•®Gî +AîY"Ñ,ž±G¢Œ†ÜqC„òOeÞåß0¥¹8@wCŒ²SÍ2ÿA +ŠPPšódr~µ Ôlø­ö@²ÔŽÈü¨)’©#@"4!‰BÔ°€ñ”þ-j‡Ò6`g†3ÛB[C› ”&À´Ê<Á®SZæ°ã)šÆÈý7ÎïËiÜuðš±C7CHÛz÷ðK|uÃË«`ôé!‡iÌÅÿŽ+u—ȉ9«þúÞ˜üßEj_G°õØ×’Kn‘6z¬9Y«Ãç÷l”'àaL¬Çc²Ùœ‘¨7iÖDMÎa?$ü0è‡?ôû!"~ ~X„/Ée~ýÀûa”â!Rªû&ú.Ýc¤ÊjÞ²9ÕÞTƒv?`cÁÅ&*L€Ý˜WQܽÛç)+ûæ†3/þúè”ïêè†Û.…×mï‰ØŒó¥ïæãäöµpÿ#GŸ¸Gg3°Áwc[ídT"èt`29œZuÀX4ËØyÞ‰òVÉ€=jp4;!àÉ ª|ÑÁ¦Ð‡‘^!5äTjƒÓ”îq9ò*ç +Ø?®Efî.¾¨üæò¯Ë5{ö€M¿à¥ìI¹Ëë«ñ””xXÑS²«üREÖ@™í²‡Q‡æ¢¾šëå™\ƒÁNÐÙ¼ÄÂ[=k±Øl†Þ¨MËxÁ»; +n‰ò{„ò7F™®ÊSšPå[á«`«šà,’:*ç.b*©ÿâ³O<²l÷•ñâ`ÍS{ßxó’¡SÑVæñÛ¿ýµÿzÿ—oò¹SüýoÅvòøÊM”ö=(C ÍBâ'=RÏíÖ ,ëÕ³Ñå Ž^‚B„Ó>'wwÔ£ÕZz£qC¿±À`Ðz$ˆ#" Š8Œ¦ZmÞvu‡²žó¤ß3:ìuLú0¬ÞØ%:°°:^ÏÆ¢zÛG8"À>úh`ƒõ à@+À9þ,Ài~*ÀS<,ÀnŠÖ˜B{M€d–“F¨ \° @¨ÂÂÎÒ±U€ŠT3*Àˆ§ .€$@™ äã3à ij„"dÚNúiδ­ÍS¬ëóÛ“Ö†tD¦L–ÒÉUŠꄼò¹Ùa6© ™=/CÖ«­‹Û>{çØ1f&+ç³;¸ä½ØçäTÒqPŒ_6êC:ÈפvbB'Rp9Yýº(agY‡ä°E¢«I° +h˜vp.dŠ \ÀÄ]sAÄ’ †]pÁ Š.à]@\0J!ˆš‰9¹‰J»š)&t}Ž›ÿuÊ4%‡8(Ú&9ºÙ´º‡«¥’Y’4«D2|]ö î‡bî-5.}vQJÛ£|¡¯ÌümÐt•*òtö3š£3Íy¬ËåD½.ž5F¢:ÖÙ?â3!6"3Aœ Í„æ™°z&¤èE§¦ˆ +ùd¯R8­2ìBg¡²"¥ %×åPÜSê¹ü,ó›ãß­ÿvYÉì_úñ=ѶKË¿=°ý¾ÐÌÊž5ë/^uûÆê d}eÀg{÷†Ú‡¯ªðåÕn«¿æpॡHmÕªœòÒ%¨ž¬Æ~{TóñÂéw6§“õz]ÙΗëôz¼‘¨ÇAìÙè1²ÙVºFx}Àùàœ~àƒ}>èóA«Š}Iøåg}pÚ'|0äƒ#“Wdäù…o¢yìþb +Že5ú 6¿èo´ £>ȨªÂƒøpäø`ħ|0èƒ~Ä} ù@ôïƒòïÂ#%Ó™ùÜÉH™è©”YN°°ª*çNê(.;¬?>ôÐ7︸fvI~YuŧŸ¾(s‡Ø¦ÙÓjNd¿tµ#~ïýç?Î+)ÉÃñƒsÍÓ¨¯­ÄÍÒG‚ÅjålfÞdÒéxŽÍ¶›-‚%µ ¨´Τã¬`mŽÀvÎgípÚ'ì0d‡£v8b‡}vè³C«íPk‡ +;ØÁnÎÿSüª“!›£8Ãv`v´Ã€úí·CÄ’Êì Ú·ÃEš‚°ÚþyvEó$õ¹iÃdÝ–SØ=a:§²U¡m'¥ioÃF­lUZ1¥o ´Ø<4Nyð’¼ônøÅópæѱ_ í=‡þ ¿©TÌÚ'Ÿe)æ +n¯å:Æv©þ^mÜQä’aéZ’í6bW¹u>®'͵fcÄéFÔé°!&˯²üQ?œõà ? cÌù¡ +#GüÐç‡V?4ú¡Ö~(ðƒ—&£‡Îdúçè žòCÚuOÃ3yÑ|Ån%í¸vO°&s^B"zºè„%]_Å­Ìpƒ¡öâï]tÕ5=òå×®Y¿ñ†½òeW\&66«ê«ÆîT#Ó´®Ù7–¡#=r=û {ŒäÂÛÒ¸`Êv›Ü~c3g3úÜÙÚc´+Ñá,žä"Úý°›ë‡(‹Nûá§~xÊ7Sö¨““?”Sö ÷´~èøدùáÇ~xÜÈÙÛü°b·SfÖSì|?Ø(3ÏùáϹ?䇇Sø=~Øꇵ)æùÁ™ÂOÓ14¹ü)ø*5ó>¦ØijŽ¤J—.ɤ§€Ò£øý£Ôõ?•"èHªôVÚVµôsQ»<- +«ý`õCVj04O=ÍÿÃ1ÓóoñÕQUžÖÔB¡A +O8­ÙùIKµæ*[‡Î«¾ÀÂülÕÊP^`nEÓ²¹ò½1:"|;lÙ*ߺ8Ö'×Û^Œ¹ì¾›£ìxǺ™Ûñí8¿é›ËÕ1V¬L9pŒÍ†Ç9Òæææ‘éÓQ_šØpùìÒHt¶uz^®`*).‰DÖbNMôzûÚ¨žŸ¦ ºBeÐíÆ0Ì CAœaІáã0œ +Ãé0ü4 GÃpg¶†"a¨ +Cų‡ CÇh +q( }aÂPA“1í\΄a8 Zƾ0´†“E¨8| +íTN„á;a h—‡a~ÄTóÔ +à Ccª;Íy–æ<†~¬^*ÎH÷Ò¼g)L‚"ÄiõX«5œ–æ z[¾H¦Ê@ó$$’±®‘T(I‰HéWZ§Lhe]î¤j æ[ÝjšúHu»|¿\;z¥¼þ+ƒ9uuÕá¹æÐúõM7Ü"oÀIx6+¾¨¢ª¸Fþ[JûË2˜¹9‹ÓÊ(ê󤕕£ãoÕäUôMÝ’‘hµ&3«¿o›Mª“~!÷¥B¸²®¢¢®>®¿tvCÃìp}=–"ÉlÅy…ŒÒ5f“Q›¥mŽf±Ê<ª9ÊÚÌÐo†¸ZÍÐh†Z3ˆfàÍÀ™aÔ #f8m†fJ¥V˜¡À g3àGÍp$UH,…VFÑì´œùiì}fè£5©q´‚SfTfH˜a¡¹U*0MMÂâ3û½ùBÏTÙ˜:iHÏméÞÃáþÔ±±¿àüÀ}L +âÌ 2‡Î +–ãù]Í-$›®Ã­¶sFâñðïdó‘h¶C]~Óå¢ßÌ{0ãZeœ$K#tÍ­Œ®¶‘ÔâÛ…Wáz2Wx…äBÏä ¶:Ã×*‹½8­v-¤ëpØ  ¬BQPd~sÅ]òÞߟÞÑ­}jûäOä@ÿ¾+6F{äóõáÿpåí?ç.ùôO ¼ôü¦1ï +TƼØÆ7Ñæ9ÉR3±™9Noӻܚlg66ËiåžY5óN“>59é‚Àpjñ´j$c=•ÐØôºk"µžªBD7LôÏdC?ᤦ”'–YìJ “í¦¬Èy”ÖCÕà5;¾ +á=òYKŸ­ýøÁt,À¼ë)9¯§då´*°3ít ÙJ׉V’™ä&iÍt[a¡Ëe °Z‹…hIñ¬éÙ¶l[o4” +ÙÙA–øy?£gýþ`0§7Ô±ÆÞh\ׯc¬:ÐéX4 È,™ƒ³ 6 0šv¶ÓkFë_!u- Õ"[Ò¡KN•2–ŽŠBÊâL,Ž¡þ»Vç6ñÉÛÏ?j¬)™vxÑ×îù+eAÉ)<²ïf]ÖZ½¶ÿË®¦kf9‚üÔ¡oÚߢ2=ü¼fê=q‘•RHc'f»Ùíq9š£..u±¼½9ÊëbQÞF-´4&)µjÀÈj4îl·³9êFñr³Ù(hÙ¶Áé00ú§C|:Ħƒ4F¦Ãƒ‚Ñ…ˆÓá­é0L!e4J¦ÃE/Ód~:ŒÒ"Íyj: Ò²Ôœi=3a&™„äæ¤eÁn²3@·>ŠA@ÆeÓ€²¢Q­†¨¬ýâØtع¼Böù{¿ûò™‡îi{îåу÷çÑón”í62þÞ­7<ùSùŸãDnd?¹:.kúeç-7ŒýJ{ë;ªßut÷ùÙß½éG?ÓRyo@=uû#ìÿB²Sª² + 9Ñdòpì´¢Â|Cþš¨Û!hn¬B@`L,JM–Á©ãPQ;ˆ#%|ÿ4hžÒ4ÀÀæ‰Í)E®Q¥Z:e-;¹˜M,j%¡bT«šQåÐY°Ê†¼rï­»d9»çøß— +Þ}ËÒå­ëòç=䆛×n+gtÝ—Çö{J¶ô€{ËÕ‹Yîö–KC»^ +Ê~N³¥+p+2Ž.§œ!ôÒÅNk%<ï­9+Kë`s¼’7æe½h˜D G¼ÃÞ¯v!ïMxÞ[†€˜÷”wÔ«%Œ{>Œ]ë}z|ø‰èæú¾x½ú®¬¢o)¿xvƒÇ‰zoÎrd;»mÑq¬1Û¡¥‘ÞÔD%žqB1~mŠ†¸¢'©¿U¦©ËºzuÊ OªL·° ®ß ++wÉç ©]Þ»A–¯n•÷î9³á$<è-)qÉŒ}àB‡î8 ¤x~Æ]¢Œ±&œ‡¾Îy‘WD‚¤ñY¡Ë®ÍYä›G¦›Í¤(¨ñúrìúÅ5le$ê*.6h¼EAŽ5°QçG¢"/”G¢BîP + ÖÀ‘课h­Æ¨­Š(¨{ +p50R§k`¸ù(EÞ7YÅ$5p®ÎRä“‘[?WfU&êÑRfÝÜçÒUJG¬†§ÕŽÖHù +•§(• Ú¤Ú¤x +Äj Œ"Oö›¿`¢xYâ…3öQE„Ô~Ÿ:Y˜X–†º œ§ng©þøÜR4èIÇÜ5×¥s²8 ò”‘D7R©ÍW—DÙö?µ¶¾šm˜λoßõ§¯ÿ¢!Vµê~òla_àÍà¡%3ê—ÊGfV^Óÿ­'å'vnÚÒѹ5ÆÜðÐÃÖÿ¾¾Îû×ïÞY¹½.ûÒÊÇ—¿~ï#VCwñÀŠó;ª¤‚î² ++®av]»wÿ=ûö}I7£Ž9‡6¦DYveMóaš*õgÙgÎÄ Ì̶{QW۹ь„àT†C0J¿ËB †T£I9ô…ëÀÙ;bÚʉó JkýZ‡ºH|hq°ðɦ¯|má¶ëö_·máè«=¿8Ø~çw-ܶwÿÞm ?ÙñûõÐùd¨áðu +[—”ÎÛ°wóàSÅò_.ß[¼aá¬ÐüM7Ä~üjQžê× ^É£vÉM†¥~âÐ V‡5Ç£×Æ¢z½ÙfccQßµ±«ÙÚ5ÛçÀÞèÎPXsà­x!¤Õ9PMáãþ26S´y*Þ 4³šó1šm/Í ¬ ³sA”ž’$ÐçöÜUã™Ð'Š7d7ÞûÔÖŽo]^õêØ‹ƒOá½ÿþ+›øæWÇöß{N®IÍ_ä]¿~Àø¨ü ÇoAâôŒ8 ÏF`e@«aQuñœ(ÒÞNy8•Ïˆ¦–ˆ…¬•Bf. ´`Ž±òY kÙ%, FÜ„‡yˆñ€Ñ”\­®`**Tm”+Õ*!(äU*UÓ0væ±±G™Ã½OÉhdÞiòë0m?{÷ùžÃlùØfõ,ÄC8¾m¢½À„t¥‰›Vëö8¬÷mrðêtø´Nx`ÈG=°Ï}hõ:®e(ð€Ýœ5EêO%7z Ö§2r¢›Ëð@§w”z»Ôáy B ›¢Z.¤O2öE'veÓ³s!s¦~{]X™©—××—‡ëë*ÂuÉ{ó4NÛÃ!É=ÁkQ¦½¤Kª7ÙíàÁ©—ë3eǢͦnSb–˜x£×˜Lœ×kE½ÐõÚ8c,Ê1ÍQŽ¡{ qDèCŠÐ)P3Ý´L*·ÙeÕ@g\8hQ óæ†1”'䉊ÿ˜7ÿØ1öƒ1~ú \¤€|'d©ªÉþ앤ô½ðºeìÜ ÜúÐØ›ü'ò$ÙÍ!ږǤ.ƒÓ)è=F`|¹z7ú‰újýj=kdõz¢áY¬†Åªa=N!Ø ;±¥·O” +–tG%½árÎgiTEÂ&3§2š­® MtÛ•åé%÷ä¡mòqÔ` § +„¼ä[“ÊŒ™ÁxŽ1{”Õeaìæc©„±¿3VåýÙVeT2•c/z+U>hÿˆ|p“ë%›'¢@Ì&–ÍÊ2ÛØùéñO¤9zsƒÙ¨u z£r†ÉÂ8cd]66K›…Î?€CkÉS90œ‰¤š'%„aj©RMK +ĪLã•lY^&ô‹&šÆn ÊŽ!yî±cp' ÁЭâ®ÿì唊9ϱçSãf“tßmË&—HeÙ:­M¯·h-»†XÔ¸Y Îi,&œÏdëL6âÀÙ¥DŒ8`Щ™e8µ©BÒ~ªÚ™twÃüâXËù“I‚™Ç¹(ãmÜSŸÝ›¦7@RvB³it?ŽªEž÷š½Z§Ù.س– ˆ< +)$¯žÓ{Ðv蚣zV-§EAäl¼§Dˆ§Ž‹ô¤ön2uù$÷šÎøUý—&šžÑ)N£>­ëá‘Ç^}ð³äüèm×Ãå·Ê/ÈÀpǾsü‰»˜•2—jÉ£ÏÝø“¢±¿x+™•pí=×ýdrî¨9€v]Dë·}EÑ’¼|ÑëCkîóáÀ°ëjŽ²Ù»ó¡=êó¡(>·ÿÊ·¡|8šGòa_>Dò¡6*ò¡ ¸|¨Âç\>œÍ‡ïHF2ŸÌH>Äó!–詉ùª$N¸`™Z²9µ4Ÿqº&cž=q®19&M`“QÃõ}:@g±-°þÜÛK¼u?º|œ¼îÃƧˎÁ‡7ÔU@ –à³y<òðìJùeù§òëòËÓsáÚœ9sr_…¨[„r`‡Ò›6ÆÈd±§‰dáD;+K‚ª´`mTý[µ¬Nq N8섽NhvE +¿|Ô /;a¦Å°šßžpƒ4©›f“œPFˆÞ¢©ý^F!óÇi=j¶Ã4a5M¥ðDª5ƒHóŒÒ‚†i5ý4I ¥êø7+£[¦À/°Ø>ù\— ®l¥ÄUÊ3' +y´«Š!‡ù¯†Ç6{—p÷×zý¿üÒìWQpﲿó哯茟]î­TÇbú¢?A™õò%i©#?_ë3£ÜaPt‰}Q«+à‰®ËÅ ¶Þ¨r$M´°Ê¡4ƒŽÍ鲩HŒÁ`ÄŠ£iªïtbvŸ>Ä•!kiÿ*lÉ­påÃR+tÒu¼ýÉo~ö§¯{ûŽÛn­ æÅKnûFÖ7ŽVÞzåŽíñ›ï=ƒ¯¼â¶üwpÑÑà»7Û”“Á£~6öÖמZ¿üÔæ"T“E AæfEßð'°E›ËS­±UU•_ð<³FqÆÕÃŒ¥€üÔéæ3gÿü;åts +¬’¿VÞtÍ‚µ®½¡¥]ñ +ÊPõ<Î< ÿP?ÔáHòÊoË/0ß“¿)Wvܶ¨k Wcð†¶?ÌA3Ž%êÔÛ•±Dº¥:¢Ó¡r³š³ h«tÄÂr‚Uµ'gCq¬ŽÐ!I ï8ªØFR£cB`'~NOÍSÛ)•šš…Ó[ÿêدÊ3îbæÁõÐõ( ÝÎð²D7ßeÎRë|syrH1êÎû©M¾]Še›ÜZ“Ö“cÓ³ÕÜe¬¬Þº ›C+Ûš9P›9PöÊ£9p$öå@_ +ÎçbŸË´ÒÌ©”Žç@$i¦›?7S}žh`jaUµyv.(T&=>e“; >ù_çåÊÿR<Ø6ü’jûοõ÷Ñ¿¿ÉVÐðùö§žHù“3°.rNzØi³Ù4|Z»‘õ¸´xÍB·À”èR*SõAÐêõ|ʦºPõ–døÒu™Ïzà4…÷Q¯ùóö‘ ï¼1å ‹™úÙƇÑOx u2à &îS7x¾À£MÍ?Òöw’k ¼5ö£Ó^í¡ÀÂ…fãØÇéÙ”âϾ¢ø³Ê^ò°yhQú%è +èÎéyΞM 6CsÔj³éÑŽE5Yl晓ø…©dP9š:—‚‰¥§MNÑ'Ÿ?”¢žHA¼ªš>¡BR‡T§çWÒIŸ/T-®š¦~¡‘˜Ìøæ©v"¹0ió&5‹˜ IËàWz0o+3úé¿6êØ[ÇŒß÷áìùõÞó†-ÜÍößÀ +ŸítȇYeÆÿ¨»™ÚçÕ’hµ4vÓÁdÐ6™Ìf»Õ Ñiš£‚ŽµŠ×|“Œ,.»Õ œàt¢SuÂ'üÔ ;áN'´Ó¤z'ÌqBEèüØ vÂkNxÆ _v‚¢†°€³N8í„ï8á>'r&T=U8¡À vŠp CN8JqTåŨf¼J5ýè. 8§ SÔD'ha<Õ{iÈꔹÎìƒ4ÿ›§ö Ml¾à¦¸â?+žs8¥HÐ`‡C“®h‚zœ~'f8©35[*å£ò}•rí.†œ„jè,K¡ìxnW€½ÿ|«ÆLUÉjö¡ó[ØãTs¢Þÿ£F9m!¿’™Ž54#Ú«ÉÀÐî±èpR—ÝÌC€‡yxŒ‡½<¬æ¡š+ã<¼ÅC‚‡8]@ <̦quM!B¡e< ðÐσÈÃ(]q8•ÂQáñ L‘–2UU\ÈÛ¡r›¡m];­àÐM0hZ¥&qûØ;á±·îbüC8º[\™óé?’)dÏäT&Ïøóš[ˆž<$Å5Fƒ^‰ê‰²Ë‰²ŽÓF8a„!#5Â#ì3BŸZP`»8#ª?Š1`&n„˜"FŒ0l„„i”DZa„QE¼L´Í“[¦ +G¦hLøpS¶¿¡[95:õõéhPîŸ0UšzÂ’|ÉÆ‚†c8œÓi`Á bš¤#¢ož]æ +B¸µ~»Õ®Ùˆ9RçÊ$Ÿ”’íÒ|ß !Hk8£KkÔ†ÊXˬœYè»Íš%ÚíE½Q»N/öFõ© HŒ”Á`ÄÊ£™žÜÄ:ÙÄjcr9¾œ:qt7†î‘ÓµWõ˜læõ›ÌðÍ—oê¹öµ?Éý;/Ùùâð³/ºöÀ¾¾Ý_Þ¿wÆŽ—moÝïd?îºgúÌ'úŸ†ëö?6cúÝÝ?õäù—nþÖ·o<Ä–üòu_=tåÕŠ_Wƒm>†~ÛŒ~¬×H°eZ¢ +ØEÑïô÷E‰“w¢ët*±Þ¨Õ0‡ÌèÇšÍÊ&ú±:©HŒÀ`Ä +£ÿ»~lrjœ­´=?¤çš”X[¶²äùê=,ž©ùÓ¯ßyUþà“oÜ´8(î˜;xL÷׎¿ú¥ë®¿áJöè/ÿ ?%ÊÉ÷åÿeÀêëÃ8ä£÷ÜV a(zY9ø.{ §È§¥6­Ñf6ir²íÎëõ8Øl 3 +¹>ŸÔÒÚÀùì>¦ÀWá«õµúöùŽúNøNûÎúô +¼ +hg}ç|†*a +Ú„j (¶’ ñ)û8¾¼å-Í´º$0ÄWæcô¬ÇnC-Õ˜r²9½Ójõj9£Þ‰2zGæ™Ê´ßÔ3(.V÷sŠ37t’wê”aTwsô“N…é}WÞpíëòõò÷vB¥<Ú +^ûä©ëaíù¨,))qÁÅòqGI wíÊÑ0ù#à•£aò£r©jÓÞÓ<¼³“H~ƒÆj×ØNÕ¦¥,Z-š5iÑnHY4'žZjuÐnpN8G­zÍGœ°Ï }4µŒ"¥@ÕV)fè5eiÓ$¦¬:ܱ ‡[¤Öè… _¼™/¨Y’ªe²§pAË3ÙîSjÕ á$W9謹¼³\þA7¼pÿ[o7þéÕ{¡½ÃÎì;Â^EO×ígÚÆîb®WØH}u;Êß;¨g}äYéJb·{Ì‹Þ£÷|9‘¨Ø1âòD¢&—#›a4amTæîÄñê5¹z5.NâdžÔ ÐdõÖ\‰šT«U¹€mõ~€`_Œ؉‘¿`Eæ 8^ +½/‡pu6Ѥ +Šs†fû…#Î|´¢L†ñ3,lú¼l"ÁH鬌1Ñ<•—™{aõÌÓ”+tŸ¿CGn¨WæÐ…5¸™Þ›+™%îºmѺ7¯|þ‚[ œ¾Q÷éK?ù¥íg;s¯û +;LÏ–2d¹¼’=þŽºÜ¾ÿ2»%'[§c,L@|‘(|ŽÁ`2¹”ÛëŒN£C_Õ+‰ÐOoWEèÕãþÔíãáTXÓgSG3—à3BmV8åHÌMŸ¦gƒçÐÃÁlI}‡|Åõ†Ë¿.ï}ý•x·\¼wÿü^Ÿr8˜}ýÓg•cˆ i©_ïþÀ%¾0l73ï«çƒ7Ê+™ô·’+™ˆÞÂé9[¶™h¼©`úw4œ.G)0•6zsžoýWüô­ÎŽ?üüª%ð|^~ñôâÆÎÿ†5~«?¹¬±þŒü­£눤êÐ…XlÙB¦Ô‘]¹”¥í¢i•~°9쌶æŠ;ë— \õó?ttüA^Ù¸øU¨´Pp¦¾ñòÉÇ?ø@~ìuor%ÜÉĘÎPï•v°DÃy& +Ï•i @v +p8§³8­! +ÕÀ> +ôi VG4ЯA·‚N~#4€ÙD +à”¸jTÃÑÀ)Hh`¢Ç)Þ^MæH\àêKjõRõÙ8ÌW2v¸óž{Ùj‡G¸ûÒ¬#’T e4ÌÒ³Ìw•!*°8kÔi¿ +è@9œ,™ø o¾b²ì§zDy¸Àù¥ì3ç—2–öv¸·½]¹sÍÖÂ;T§?&]©ÅêŒF›¡ÀE|hƒS6¶ÁazØ #nƒjö;¼eƒ„ +öÚ ’¢Iˆ7ïe NF +Ø`Ô/Ø`€â(^æ‘™Égf2–nT2éNìñ΄˜j¨œdëácê‹$¤«¨'BlB¦çñRc‹Ó÷›]ê ²!?™´ÝØÖ)¶ûª›ÎŒ¿ +/)w?ˆÅãûÄlÖšL¼`f­0±VRÏϼF¯‰× 0'uY\½GþZêú¸zGüË(÷¸cô*w-½^@ïz+wÄGSwć3n•÷ É © œéKãéûç­Ap‚šº>ž¾;Þ/¤4aÆ~ò…øæIL¤'øpü +‡AõÉaÃl^J]šùóïmI]œá¾w¾Aõwö²—2Êo(cp\zBÑŽA–ƒ3®§ôð°:õÕà +=pzøXÖÃkzø¶îÑÃÍz¸RsôP¤§þª‡Ÿê¡OízX«ôP¦Qvšù¢a= éá¨úõ×C«õP ¢‡sz8«‡Ó4õMÂÌ43ŸHeabzˆèaµB4[š9˜mÉàÜÔdœ ¼´%½¿¨šä> 9¹h¹\ƒ_š…rþ(TK»æ•u‡~Ùl]ðO& þFç¯n÷5¤~½ŽzÝÍš‡Hú<Õ|º<¹Ž\’ ™ô¹X[…ÞÛÏH#{ YÅT;GÈ*|Æ#Ì£dV‹½B6ⳇQÓ”gŸÜÛd>æ)f}¤q«±%–[Œø¾ãÊãÅg+âÌÇwžfiÄg>ÖÓ€ñiø4q½äf|0}|ãӱ쇔:”<:ŸúVò(ô"¼PÉ£„ñqáSLó¾M¶ên!ŒÃü3ð!Iškð±!e‹Ò©´q.>[ñÙ€ð¦jü¤B+Ò¼Ÿ|Vr7v|ásŸ3l-ÙK9·œ ’¿ÀøÓÈ<Ä<Äö2ööqÓ¹vM¾æN¬ý±îÞ¬éú•†¸á6c™ñ!“Ýt¯iÔÜa~ÖÒaù½u¯ „G„lqÛkÙ³nϱßèð;FœMή×Ýî‹Üx†sêsŽåüÒ[ë}6·)÷SßþKý§ÏŠNñ¼š¼ÇóÎæ;óãùGƒ9Á‚ò‚ŸÓ¾˜,ÆQ¥Ž2ž„È¥ø ûS„)©~èJËÁ†´LbnH†‘íÉ0‹¾ÂÎd˜Cœ›’a +±»“a-±’‡“a¹Š<™ g;„’a=±À’dØ]°&6’\æ…ô/—2g’a3©dõÉ°…ä°‹ê9åL±MÉ0zz— 3ÄÂ$Ã,™Ã•'Ãât$Ã’ËÝ” k‰Ÿ;š ëÈ9îÇÉp™®y*Ö“\Í’aó†æÓdØHæe½– ›È¥zK2l&—é/K†-¤Bº¶s{g_çUm­bkK_‹¸­;~eOçöŽ>qú¶byÙì2qiw÷ömâ’îžxwOK_gwW©aÉT´rq-ÑÐÒ7K\Öµ­teçÖ6W\×ÖÓÙ¾¶mû®-=‹{·µuµ¶õˆ%âTŒ©ñ +m=½J¤¼´¬¬töDêTäÎ^±EìëiimÛÙÒs¹ØÝ>™±§m{go_[;»Äõ¥ëJÅHK_[WŸØÒÕ*6¦3®noïÜÖFÛÚzúZ¹»¯I½lWOgokç6¥¶ÞÒt 2ر®¯mw›xqK__[owWMK/Ö…”5vvu÷Î÷ttnë÷´ôŠ­m½Û»0që•âä<"¦¶`[ºººwc‘»Ûf!Ýí=m½]ÛÅ^¥ÉÉÜb_GKŸÒèm}=ÛZvì¸ûlgsmÅNÚÓÙ×ïlëWµí×vïléz´T%yÓŽL;wÆ{ºwSKz·õ´µuae-­-[;wtöai-=-ÛcȶÎm½”#È1ÞÒUR·«§;Þ†”^²tå"¨r³·{Çn¬YÁîjkkUjD²w·íÀLXñŽîîË•ö´w÷ ¡­}%”·wwõaÖn±¥µŽÜêÞ¶k§ÒOÈæ¾q-Ûzº1-¾£¥KÙÙ[ÚÑ׿(Ú³gOiK²k¶aÏ”bÉ¡—Öwe¼-Ù=J);w¬ÄîïRºní_¥ë–­WÇ‘?õHœ˜D˜%¦DsvéìdÈÆÎx_oioçŽÒîží¡Õõ+I-é$ÛñéÃç*ÒFZ‰ˆO Æ[0´t“8¹’ôP¬„Šd:Bgໜ”‘Ùøˆd)bucúÌ/’%îÁ\Êw -·›t‘Rb )ÿ¾´r ­MRÑ@sÏÂÐ2Ì¿ +KX‰ù¶bjf¹"YG!¨g•œÛÉ.¤£!‹I/æjCœVŠ!’|þSÿ)} +õ¦SÊ‘®2ü+Eê/”÷?•Ü‰e‰”×}4E¡u'¥ÿr„uc¾ÇñÚhÿõbJµÒR•²×#Æ:Š¡9^ôÑÚº(Vãj\5¶cþm´/S˜ÛhÙŠL¨%wc¸#ÉÕËã=”‚Vš/Õ¶^¬ùó}paéXG©ÛM뼘•x/M«Áxo²]*Ï)ÝUx±)Qêí áÊÏVš[‘²®dέ(wâ¿­GLæmIöK­cw’J%Ϭ$¿Ûéw/­· ë)}j/O®[¤|j¡\W{z'¦öQÜmßW&ÇÙNäŠZ×ÖäHÚCÇeG²Å;i¹"Y…ï=T*ºi¿uååÓ>žàŠ*7íIIiÞ8†»i+R|,¡}£´¤Rª„ZèØߊ9vкUÚ:¨t´Ð¾mKöumAŠ_­É–*TÇ)¤„ÔQ¹PF|[’§— ¦XyÁUfʦÒ';(½½ewQj[ÓmT¹­`íHÖ¤¶xÕH—§û§Ê›ÊÑVZZÉð¼ò¦/Yk7¥¨ÿÔWe«óî¢ý¡Ž'Ušû>ǹÊßîd¾8ÕK}IZvÒñÑA%0N.Bß2„Ô)¥T3GͶä˜)MÒúO¡+N9˜9>zÒ´ìDW&GWzÔíÊ¿©žX‡:h%Õñ¤üÔ'9'N)A5Sµælª/'·B•ÆNŒ÷Qzz)/Ki¶cúj¬a%õ£ÕyZÒtÏq}dñVh#°d“ÄÈ*h&ëa1Y¾%L«Á÷Œ+ïRXHúo!Âa|Âç£ò àw5>«ñ9Œ‡ŠQ†!|‡’ñŒÏÂ/ã7ÐGV#Ty/Çx¾—&ßõ¯Ãw]2¾ ãø&1Ð)?F¿_NzFÆàå1Ç`ïgù ú?øˆùûèŒÀc£/Œ2«?lþð±Ù²Áú!d‘÷ù÷#ïÇÞ¿?ø¾Ö`}Läo ¼=2/ðÖÂ7×ÿaáëɛز7ËÞŒ¼ÙÿfâMÍ›À®ƒuøaq¸l8>Ü?|jxdxt8«ÿùç™> +XŸ <ÇžXýÄÞ'ØØ#`}$ð¹/v3p?XïܺŸ½÷žÒÀ=Ký»îœ¹sôNF9q§Y¨VÃJ²y¸ê v<ðØb\ŒÍ²âwŸ>«ñéÆç0>8ïAô>!X)Íc›ïãmÞÛŠo»ú¶C·iâ7öß8p#Û¿`?óØîv3½‘î®â@×Ò™Oؽ^f×k±åøŲ­…ÓëcÍR ‘6m, l\:#¶­×`ƒ9D´²¶š]Ív³‡ÙX]ÖÚˆ?°Ÿ‘Èh„‘"zS½uu`uh5ûôøˆÔ¶"K[_Þ¿œ]V?#аt^Àº4°4´ôå¥o-ýp©¶y)<ˆÿõÕ¿PÏJõ3BõR½?¯>·Á»Þv¬Àºž[×3€&ëCÖq+cµ6[÷Z•ë¼„éw‚ž†ã늋W<­_»"‘Ù”€›…ë”oiÍÆ„ö¦Y¿qSÓq€¯F÷ßr ©ñ­H”¯kJÄ|щV HJ ¼ï¸“ÔD{{ûŠéŠ‹1¼ ¿Iñ®bnéU¡$NŠ{¡uT/ÍÅ +‚ü.VÒ ä̽¥—(_Jb±šIÉÝ›,ŽfV¿hÀ½åÿ ÿ· +endstream +endobj + +83 0 obj +15688 +endobj + +84 0 obj +<> +endobj + +85 0 obj +<> +stream +xœ]”ÍnÛ0„ïz +ÓC ñOŒÁ€cÇ€ýA>€,ÑŽ€Xdùà·/g‡ml ÉÙݹÅö°; ýRü˜Çö–üÜÝnã}nC~ +—~Ȕλ¾]ÒHþÛk3eEŒ=>nK¸†óX×Yñ3®Ý–ù‘?mºñ¾dÅ÷¹ s?\ò§_ÛcïÓô®aXò2[¯ó.œcž¯Íô­¹†B¢ž]\î—Çs ùgxL!×2VDiÇ.ܦ¦ +s3\BV—å:¯÷ûu†î¿5_1ätn?š9ZU´–¥æºÔ¢+mD{ m9/G­¡+jíé—ùѺ„^‰62¿¡ÿ+=[è-çÅ¿£VÐoÔzONøUɺ+hò{0«Ä_A“ß"JüoÐä÷›øwÐä×â!¿ù+œƒ"¿¿"¿‘ºä·â!¿Ç^ù­x?ÎA'~°iòW¯Ð‰ûÕäwˆÕäwÈ©Éïð-4ù +êjò› +tâ§&¿}&¿Å~5ù-ö«Éï„üVÈï$?ù +ÎÖßßßᬠùêštþâOü`3‰ù +ùxÈ_áûšt°G“îøMº?R‹ü^æÉï%'ù+™'¿—üä÷`°à×¥B-«¨q&6ñ#Ö’¿?ù=ökɯÅC~ +›îä!¿½b~ñl¨%6ÝÉIþøùñ`ÓËÄÓEoùÓòö>ϱH’>€ÐáošÆ Qòû +ûRb +endstream +endobj + +86 0 obj +<> +endobj + +87 0 obj +<> +stream +xœåy{xוø¹3zK¶^–üfFÈŒ-˶b°0¶lc˯ÄâiÙ’mm IÀ’n6mÀ<š”ÀB›ÀfÛ&¥ ÝBš6$MºÉnúK²I7¿MʆnÒm³%i¶mºý’"í¹W#chÒý¾ýö¿yfÎ9÷Üó¾ç^ɉØöè`xð ¢}+êZàebÚ‘÷­µ-Eø +÷ÃÑ‘ñ¿úî†ßÈÎ(ÏŒíþðÓï¿  Èé +‚E¡/U>2–Ž"áRê°qœ%£ã‰¿P“:Š +ß0 +Ô•€€xñªñÀ_Dp/òˆ?Ž¸8½Y›üâÏh¿Ä%ßÊKÌÒñh,ØßGü>´é0Ò~è¥CPAqŽ—ÉJ•Z£Õåäê +F“9Ïb…ÿ;—üX U¾ô‘¯wÜ8ÊŸ‚B8 +¾J±ì3õnª#ýÉÿ¦ª,ðu8Á?Ã$Ü >ÃÝH™}= /"ßNóÁ:xòsÅž‚ 8N/ À½Ô“ϼþjáMä9çgh/Á0P³­è'5Ä ¿³°Þ‚º5Ö~ŽÃ\.¤28F`˜Ãp‰{{FÞî1Xý‡ÐQñ1Z#4’'¢†ƒ3×ÿ‰}wÃ^|vÃ(ì€û%=|KÞÍiàœ9†„åp4ÁD¯½ÆÓ‚ì&ûð„¿‘¤Ü•©ŽÔ‡¸2[ù-Üßrܵ‡zç‚ÁsøU”‘s¥ +èÕóP•†ÔHªŸ¼Dþ £ç…_’Fh¤ŽÃòùqÇ‹ïƒRÆ—‚ú³F¹Å O}ÂդǗ€úÒeiéöôoùÀŸ“|ýR’ãlHÿ gÍž€uC§L’ûûÌë*˜o4‰Ë(†Êiv4H;F P€ˆn-ÏBoÒÓ„€' e¬yºÊ…3˜°pKfÒåˆ&ó3Ù¥f5‡{úÙiZ2ou†¤YIW3[WbóÔ@SÆ*ËÑÕÜé+Ó‹EÛ97,e¶®Æ*›ß<ÕN +¶ ®»a±ßfOzü˜a¿£?ä§e‡*»bcÅágµÒÛßÞãhïZ×_'’ âd¥Í7‰qôÛ2b°“ªR•ØÏÙx?2 zp4Öã3©,UámÀ€3*-ÜÆz±ŸØ Ëf$ËÄæP“ÄGñ„Êi9­nÍJSPå¬nµÙýöÌå¬àpX”ã  +jkvÛ¨°>W·2e-z±ßrø£bÒã맾Ñð°(KÁ`1—rÕ{6+X&°ãp¡ÁLzËm³ƒ›laø ÚzÓp[vXœR9Ú{¦¨p‡$Ðò¶$ÐöÔm¬ÐíÀÞ+pI³=5íñÐÅ<ºœ +q´§=ýõŒûÉݶ;¨.´“öÞFg¶¶ÆiÙÓ5í!{zÖõ_4à¹pOoÿYŽp«ýÓ%8ÖQÄMƒQ9J¥DŠˆ¡’ºQ1~ÛEÀ$•1Ç.`4U–F`è—¡2Šæ3EàpD–ñd¹eHSeh“ŒÆ®i !óhä•GíÑq9œmšPÒY¤<…{¼šÀ9É!¶iœÕÍÈÈä´ÚcËpL"‡'cáž¾ëªûÖõŸÓáîlcOTÔH/,—‚QL6n+ÍbÊ]þÑ©?]l`ÅÔàIÇJL“c%¢Ð%5ŽPcRëh¤ôJoÈД®Ä%V‚Ó'1÷¾$¡°¾ßŽKR,zÉ6eø€fÊMeÊðs'FìKxF¿Šç'3t{é4ƒÑÈ)U*žãò,:PEUœšW©Ô^ÍøÕ¼‘n³LÐPnw{ݮ͛6º&²ÌèF”~ð¯ºÊÝ@ÌŽyzâ0ÛyGíürÂç+“š~Åýw›=«ëd•uMšu/W¿òšf‰MöHÞkä–Ô ¯™>Ýj[ÂŽ+°"ý+þÿ<a.´xJ +Õse<~1ÕFA4r,>ŽA6G1§Û¯°òÐéç-hdmCˆÚ”5Š™Tš¯´×*óæ/Yl*q×ä׺••Ä1OÁYò¬îšZÞ²M•z·ø‰ý»:Jàð®­Î¥ß[ÐTüÆ@Ƕ/y ǧÏ?Cª¿µhÞN›å‘4ìÛ:¹ÚÚ‘¾Ê?‡çz3ˆ°Îã|^žËÅ\¤3ëìó VŸß`U«‹»ýLj+øæÏóÉÙŒ–᫪Ôž "å:ªšåµcµ™òÁÍž’™ÌhÓb–ç9ø Ÿk±Ìõù-Mn®²ËŸk}ÕA¶]/8,+p•ÏN,†%O&WÒ.­ÍÏ%™ì.Å‘•„Å%—ð›SÉÔÏe[ÃëŽ4oøñ†“g|²÷ί\ûê>\±Ü{ß÷‡=—Ìm»¿°bÁ¢µ½ßyâÄ~n[jþø¶ºÖØ%ŒK†¡DÞŠ'_—ÇŠÇ_…\®Ó*ÔJ¥Z)G—â~® k¢ÛeZ6³0r¬¸R³¼¶ÔÍYI®æšKCòŸM]ÑÓ‹}¶%XúÞÀ’¡qÙ›~—Sñ—@‹‘YèÉÓ™L PXôÇÖ[p[Ï?vC¸3âó2ÕLÝ5Ï‚ÉÍ‹7{Ýnï,°¡ºµµÚíõr$ý*L_åÞÁ\”B—§"D3˜ äò‚ù rDÞj-öù¡èd……V¯õùíŠCŠ +^¡à­€~n¤Æ¸éâgiY–IŠ)S´4+h΂Zwþ\,WÌÂJÂlËW:ÐbÅ%‡CÜùK?œ:Xæ4m®{c84xökÛŽ•ºrFº{·¼G­ü×½s*ÎݲÁ]½Ówß!ÇkcuíK»ë—Þ…õDÒ})/¿5 p‡Ç›Å£/.æ8™;W´Ëu:»þUî +Ç=ÎçžçxGxàˆAÆ‹æ"Z_s­•V^‡îšçÀÜN?V·jjf9‡iu¹Ú¼q#ö9B«sì6ͪy³ÝF–R'kݸ2•$—ËøŽEi®å,&pèWžEªõ¤±/ÞÛÑÕTê4.»ÿ°ó»QþÔµr8ÚUZ¡tæ/ì9Ýp0u$ +ôG+¬¡RÒ›€‹GÍɉŒÀS~ØhSÇ/±[ 21õ‡áaioºÊÿ}ÌÁŒTxòÁ¨,0Ì)¶hhãÊå}XV“³Ö«d·™¶©™¶džiUØÍ„7­ÿ›ðàú¿Þôƒ¯¿8õñQú ½÷?ðåk‡¦ð‘’ýä;'ˆé8>S§v¤÷¤:øçX/-ŸgQI8N¥œkTKç[ŠÐ«Îžkïöç´ªN¿VÏ)åÊN¿Ü³vÉ›÷V"hk­’–nâ´:–ÎÚrfï8ïk«S¥U»ÞQµù n‡S©G*‡ÈÊ-C'ýíK¬ãÖ¥~UàrÈ^/tÁ4™zíTN¬êËD¹7rn<n¡õÍöÏ;=^™‘ç±ù™ +Z³6Ï"×hô:E¯ëôëõF™A+Sš-&\)ïô+õxR¡›¼b!»-$b!›-¤ÓB,XAôš}R)p5˜ò—¹¥¤fVqÖa„¤í•>ô„˜±Mñ¸4Hùý*R}ŠœÚ¤"%ª®Ô[¿T]}ëá•_§ûÙëÈ£6§3?õ‹kç;É;ûR§X=A,ý<,ïÀ“K¯§ºÈfÓªÕ¢™çQ©ßìh_Ѿ£åAKÔZ­RE†"1³ +paãñÊüÙ•?ëd%A:ÀðŽ%ô#Ë`–67¯qßK}úûWÈÝ¿þ®sÕÊäÀwR?{ôµgco5µ®ZOý§™`%“»~ìN½}ºÜõlêkÿúæÏš–¼”za‘ mïÁ\8°¦Œxê*ÒçªÔj­FcâÌ9ÚNŽ^cÑËAÞí—]H_òhÔºV™ i3­õWy&Ø +4¦l³Á¸²ž?»ÓpoÔW”Ï÷}«e+k0¡ý"ÿ‚ê÷»ï^;Â:ßØv—ôË1ÿ:ÆÑžy6¥Eo!¤¸hÑõx2ÕëM&MÜoRrE¤h‡Ÿܘm _ÆÖ÷ª«ÊHYÉeê–žJ3%KôÄÎ/ùãËEoüôß·%¢µ»Ê<ÎgîyêÅ»®]yƒ{ò¡cÇÞùøàÖAÁú8áÊìýËßüâ«Ghˆ¡Ÿ¢mJLØÏ"Un.=-á5ÏbÔöø2vhÒgN¦. ,ÍÔBÏMÙƒÓ +»ù§§vóz’:JOR+=Î +§ÂéÁ# +qgP«»u¸Ÿʾ…Ðç©TX,ùyF}®Vk+ÊÍÏË÷ùÍfcž^.Ç#~—_elDo#¿¶‘Ý6ÚqgZnƒ›®ÈžéYk2Ç +zLΗ,3;8·Ò EATNG[§åÎ{:×kGïT}q¯§ôMÛÓi§s®ëöÛŠ;¹5Î?ùIïµ·7`ìö­çñl¯‡ +Xë)+ɱVx™ln±µØYi/ëò“R¢åKKí¶"µÏ_d0Ðo(~³uvÛÊž Ö ²I‚µ0‡{yæ?Q•Ü/%8–ài6çBߎ–ýý’`¢Ì(ÁèdÕÌÃRÙ + –A%æ&ËaŽì„+ Bö} VÂïdïK° +Ê/K°æ(ä¬á~ª°K°êT×$XÔK$8¶¨Ip.,VÚ 'Âw„‚b0ˆC‘è®Xxd4!.*kªª«Ä–Hdd,$®ŽÄ¢‘X ŽLTjVßÌV#v£ˆÖ@¢Bl›ªì†2¼bO(nKÆÂC«âC¡‰`(&:Å›nÆÅÌŒÛB±8¥ÕTVUUV_gb<ΠϬ©á¸±@04ˆm#Ã7Z%ÆB#áx"CbxBì«ì©}Dh"!&‚bïÌÄÎááðPˆ‡B±D™#‰Q4|ËöX8 QmñÊfŦ'Úo +$¡xd¢1G]hYox"¯wŽ†‡FŸ ÅÃ#88¸K¼qŽˆ£ôeb"²EîU ÝñP|4<1"ÆYt2³ÅÄh A%bá¡ÀØØ.Làxg +bÆv†£¨x<׆vŠÝ‘ñÀÄ“•S06Ã[1<Ev0ñ¡X(4ÊÁÀ`x,œ@i£X`#†a ÅYD0b40álÞ‹DChéí-×ÑÀL4㑱¨™rO„BAªÍÞÃI¨x,ÙJýŽÄÐÐ`bÔ9ËòáÈD§FÄ@0ˆŽc´"CÛÇiž0̉¬q¡XÇ¢cJWŽ&Ñå.×Î;+Rj†03•(ÙõçÆ»¢!)1*e|¬Ó?AS·å—:ÑÓÖ!vF1>^4N”*Äl…VWVK*0Œáh"^UFb#®No4AFðNà}„°A‹x 4ˆÂ.<P®Q¤Š°©eø®*¨Æ[„äŠàøÎa5Â1œEŸ&7P 6òç¥Õ Ô-YÑÊfW Ô†ó‡PBÎÄÑÙrE<Ú…˜Äaä£V!<« ŽÏrÙ¸ˆm]üo%üwãâ +:ncôø _ +ÚX…ŸJôä³$]—ã¼AÎgk +£d‘e!ÁF¨ãøŽÁV¤E˜5Ÿ+ùB,³q 1,ȤRÙ}ÈÑø|l&S‚i›`\½Ÿ¡±53{C³8‡˜lêKFráQ)â[`;ó7Žœt^Ö·8jþÓü|vÝô0ëv0·2:Åãl¬ñ¸äW&f½ÌŠRi,v¢%Tï(ƒ,žA6›Öß„4s+Rü³zDin@ÊËÓ±C²’Ωâ=Ìžq¦wuˆÌ¾líÌÖ-²8XÔ3™ÇÑãb•1Æì¢+p£’Ñ5(­±lÅŽJ3¹"uB8B«"Âò6aŸÇr|=*™º–êVds£G˜Ù8:Yn¨'!f)…¬+ âŒ1¦;cÛ(«ŽËmHÊu‚yWPò”Ze'4³º ½ $Åôvì!Ÿ)1ÁÙµIs2ÆìÏ’=Á¬ +Îø˜‰6å“4e<c½jëL~†Y½e"dÒœŸóa›„¤5Â, +â'“ñLmEpîv–ÌzÊTsâO"`ñHó¢8Buelgëc”U`–ãÔ…ÖÑO%«ÃÙ«fHZ3•’Í®ÿñ%¸@ôS™ðŸ¶´ð{ßBác_½ðÕ ‰™˜QÓŸAêß×¼ï¾.£ß—«.û.O^N^–«.#í§Èøÿ}s„7ñþ'¼âK /½¸Bx±³^øagj×¢Y¹e‚ë9ÒðÜÏqÏ æ $çl‹ _ºïžH ?ØT&è/GM¾÷íÅÂSßN T­ûbÉBïE_‰Ðð]ò·8é™óDfó™È™GÏÈ¢§'O?xšOWöœ~õô•ÓV|yž&F —Ãf8k«G¹žÊ2¾Oÿ×Äu’(¯¢o. 8¼›=Âf* ‡7Íõnh…õ몄u-eB1õ™Ñk9fO†‚õ¼À7ð|„€†Wªº»\BN¾âûÈÇé;…NW'ßÞâÖ`,ÚZê…Ö–:Aß"´¸Z^iy§å×-ŠG[02¶¾9­¶>«ÛÒg$ú>ƒ[ßÇLƒú\ú´žÓë7ëwëy=47i%rr<8ÝÛS^Þ~A™înOª}ë“dO²´‡>=]ë’Š=Iè[·¾šƒþ/8ÅíÉšžþä@±¿=DÀCI ÅÓVhôÇã‰òÌEâÛé ¶#aSœQ^~ý"|;òR`{†±Ç3£ñì”»â‹Ä¡œÁñŒTI®Ëݧb˜(’͆%ž8½Þ³-‰ÏÿÍî®á +endstream +endobj + +88 0 obj +6895 +endobj + +89 0 obj +<> +endobj + +90 0 obj +<> +stream +xœ]’Ïnƒ0 Æï> +endobj + +92 0 obj +<> +stream +xœåY{pçqß½øI€2I†|Љ”øÂQ‚Þ–E$@Ò¤(Š dG$ “€”¥$#¶±b¶b+N\7M“f&“h\u´ˆÎtlÅI<Ói<Ó©“6m­Fõ8É´¶Çnó˜4±„î÷á@RŠœt2ý¯Ýݾw¿ßîwÀQÙô|*adð„ç´T­Ù$À÷p}x!Ë>9üÀ~¢¯H?œNÍÌ}þòñŸ˜–J_˜™==ýî[/ÞP9K²/Ä¢ZäÙè!7@MÅØ#ÁÀÓ¥Ä{ˆß›Ë>ðu©±Žøñµ³É°öÙ%ÿñ•sÚ©ÓÒ5Ê_ó ñ,¡ÍEyðâ¿°î‘T2“ý6lÎ4vr}*MMïûê÷‰ûI†ôáG%‘%œ—dü>Ìç¡’æ»Áb\o:ägÀÏäßáÜêõÆ`þ×ÿ—U”‰+®G'|þÝ(ÁÇñ˜€$áãC÷Zk¼ I÷ xƒô 8¥ðÅÛEE'6cE˜vŸ€×àÍÛ¦ÿ(¼ïßœƒdOÂWà.G?Åú,~1B1xäAº¿](é$]£óºÎIhHߣóC8.½$½óF}ÕðöÐ}€*¼l€Ñß +ºLUTÀ œ†O‘·8ÌwðÏPžÿź¾E‚~øœ_ñøŠräWd÷‰Ò>ù¤ô +Iºþ1(îÐðŸ¨ÊóòÁÛâóò8Ta‹Üå·ÓJ;Àrã×Òöü{òf¨€ñüûEY~ ÿ3Yûßå(¹`š#oÈÿøÆÇnD̪¹í¸…:þð/žÞcÁÀøØèÈ‘áÃC‡îéïëõûzº½=]îÞ×¾½{vïÚ¹­Suu´oÝÒÜ´YÙät4ÔÖX-ÕUë*ÊËJKÌ&™ú×Ît ùt¹‰Õø5ŧh}íÌ×ëéh÷)þÎ4¦ÓÍÔ¬ôõ ‘¢é,ÄôfºikÄ!ÝC–Ó·Xz +–žK´²ý°Ÿ§P˜þZ–qâH€èó=Jéï +ú MÍ‚©"Æé$Q¯–ùtÿB,ç Q¸´®¢[éŽVt´ÃRÅ:"×¥oURK¸õ +BÚêÛ·$AYOK+õi}øHÀ×cw:ƒíýzµÒ#TÐ-Bê%Ýz©Éâ¼tx„-µ_É=ºl…©P[eD‰hǺ¬‘oNöåré5mz‹Ò£·œy«VÕÛ•ŸÞÆ£Œ¬äXM‰º¹Éª°Ü/€–£¼ûÎÍÍ”4YœÔ¥nGN~Øý„u.çW˜?ÊiËùÅ)…Y•ÜRee.å#¸a8@!–óß|Ä®û +êÖP ÷¥ûGô;Ž èR“ŸÅ4’п.ŹÇî¬Y±þ05,!ìtrYöÀ1úâ‘@g0ea?Ãs­‡óv´Ó£Í»¤àÃG–<øðèDàE+ý6|x,ðœ„RwÈ\ÚLºÀ‹ À#¤—r!ggx¤bÊ„½ýEÀ¢Ðš„@ðáe!++ÊÂËRAf-$j‰< ‘ÆTÐxŠÖ&’•d‹B&Ž%ày*Ìž2O¹§Rª’ìKÈEÏ‘ä›ôë¢áùJ¬Bûyñ2..•{ì‹E²ð*|x|5õøDàùJú†¶‹+%òòƒÆ¥!Fͦ¯‹ðAùx0– ùfƒzj +ýC•Ô&åRR©W(Q¯¾Nñry—wä%\^J#ŠõHî‹Ôûaù 8iK²;ÿÆž³¾Ë;¤‡JÎúãBl7}«?$:ðž¼¹¡¡±±Åb©€Í›[*ZTW{ëP°Ý²¹±ÁRѲ¥e(xgÕ–ºÒ;F‚æR«ì ‚l]PqJÅ1ý*îR±YÅu*þ\Å·Tü_Uñ«*þ™ŠŸR1«b¤hiSѤbì¿ÖØ}VM«¸WD))ª^!TqAøUq‡Š›U¬Wñ'*¾R4øO«=¢ÊQ®âŠò÷*âaøQ1$ÊèaVªý;=êwTÔUü+S"Y(óû*÷–H±(Ã*v©*–¸O“÷Ý÷Ñ•#]<&ÓiC_8>z››-Š&Ðånƒãân«7?ºÚjÖãÞ½5nñY/ˆm¸{—{û:m¸¡Î¹swÍŽfeSi}]ÍΠ·ìtâs=&/îyíü7:Æzï9ZQ ¼ãGot?Žsò„ÒwæÌ·¯?Ýàõ6Hê؉ÖÖÝ«Ì–ë~AþªÁ üíΑÿ©i?½µl€/zf*Ì`±Ôšklj‡‚ê¬%å%CÁõ幊Kýf³a­ +M6Üû}~džÚ0kÃaJvÚÐjÃ÷mx͆º +CBá°áÁþ¥ +S6Tm¸«Î«Àd7õ­³©´Da6$ jjëÝÛé[=¦n|pÏözâ©ã7žQú°N:Úà½~jìÄ&éåïÏë=Gz›öËVÈxüe¥¥uív (u–:GZGoÎV` W•@]k‹biØPpcƒU® +–Éõ–V¼ÔŠg[1ÙŠ“­x¸ÕV4z¿Züz ²yí“´*^½»¸¬-Q65o©qoøº·ïÚ¹£y‹ wîàP§©l*©«­'¥ôö·–/«Þf%}×½ã#¹ §_zræY/kŒ«}¾£ŸúÌlý‹/;×#<¨¨ûv{Û:¾^|ªñ?Mw¹wölíx‚Öꤵ~ÙôGP{=+ª«KeùŽ + +¦ªŠªÃÁrOi…¥ æHô]ÄÝw¾Æ wQ±ySóÎegºëÜuJúºjÄo<ôÄÇ.Ì?ùê«»ÚwúÈ…Ú3éþƒ[~ðƒØõ¯ôZÇë6‰¿Hïüùñ›´ìÿ…ä(¼³~ï‰Æ¾Õ7’üOK¢ +Ñx¡Ñ#(uÞð­¾}X=Ì%{é©÷4ì6eÀ!7Âéip +C†OIÕÒð0ƒË𔨩*û”NJ6…ô#˜X‰{t%’åÑ/L´ v8iÐ&zÿ?gÐf¨†Ït ÔÂEƒ.…3ð×]µ¸Ë Ë¡ï1è +L`À ×ÁFéÕ•¿´¸¤7 +º +vÊVƒ®†;e¯ÞÄߟ‘' +™Ö4½“˜Ú Z†]&·A› Õ7h3l4=aÐ%°ÕtÉ Káç¦4è2Øjþ[ƒ.‡æŸt…ôF‰Å ×Áž²· +ºŽ—+]'ËÏt5ì(ÿ÷žøL<?°ˆ–ÕX8™:ŽÏIJlk¸…mïÜÖÉz“É™Ù(ëN¦SÉ´–'®Šî[Ͷ³ +ѧeÛY"ìŒOE ¶l4šŽO{“³‘ƒ™p4‰¦Y»U}+ϸýÑh:Ã%Û]®m«&¢ƒ[¬q‹gèÍ5›Ö"Ñ9-}?KNß\KGgâ™l4MÂx‚»F]lXËFY¦%"llÅñðôt<Âp4ÕÈ8™QÑ'çÓñL$æÙ2®•µ¬Ae4]ˆ²CZ6Í$^-C¹¨²±x"™ig§bñpŒÒ2,ÍÄg¤œ:Ínöa¤Õh-‰DrB.DÛ©îét4‹'fXF SðfÙ˜–å‹ž‹fÓñ°6;{šZ7—"¯)êÕ©x6F‰ç¢6=ÅF’sZâiW¡Âfšeñ¹T:¹ jìÈ„ÓÑh‚’im*>ÏR´˜–Ö„Ág"Ki‰ß|:™ŠR¥÷ö®R43ÉÙÊÌ­Ñh„g¤²¢³äD‰g“Éûùz¦“i*4’u¬©|:™È’k’i‘-œÐJ†ççxŸæl±8-œN’.5«e)Ê\ÆËfSûTõÔ©S.ÍhM˜:ã¢ÈêïÒeO§¢F?Ò<ÊÜì µ?Á[7/úË1Ú?ȧ?Ç ƒvVœÏm®mF +‚1žÊf\™ø¬+™žQû¡â0Cg–Î3…}ƒE@#^#* IHÁiH «I}ù…¡…îÛ¡¶ÑÉ —¬’¤Ÿ%ÝD§É‹_57 zœVÍ¨£Š>áÝNT?ù‡) ùM‘vm\£B§Ç­—$³ä{2d%mDètÐùû¼Ÿž­Ä?*d™›íT['}\´‚ÛEYѱãöÙâ• ä³BÃ럣{î'YRTñáø0²‹ŠnfH\DDå±ÇÉbTX + OŽOVdK«±Ûd…Žf+I¾ó¢…ýT˜æìo!§ |“†_Š4—èŠâäÒ.’ò;ý’Ç>º÷w?É}t÷|?ñt–ò7mqýš<}xå:^ºŽp+Ôß ü«Þ¼¶Óñ#÷Õñu¿1W©Ö«W‡¯.^Õ¯š¯¢<þ†\ïH¾Ž“¯¿÷ºtøuìz¯üèi9Åó…+Uþá—C/§^–_êmuÀ2ª—'/?vùÒå]6'¿Ž–/HÉÐñüáçóÏËÏ>ãuX.ž½(]ºˆ©‹Øu­O±§:Ÿ’SOáŸ>¹Ñ¡~®ës’ý3xá\ÄqéÓøèa‡Î…ÎIŸCÇ9|ü“øÇ$‰- užÍKÙPÞ‘™Ì;R”8Ig¢7ï°¹ÆKÝòx‰œwð¿v¹ýW¦ðš†¡ÉŽIðzN”WùÏìø—ŽËÇ&ÚêÂDhBz|âý É1w¸×›iå&Šd‘r—|XNÊÉ/Ë¥e£÷8Ã&9tvè±!ùP¯â¸§—9,}èé[gñû©K¯£WÚØg¯w×× eÜ권KHMqøjÉ[$‹eÒrÖ"[  ¤ÇëÑŒËøøÒØh[ÛÀri~d@/>¦ãÃzÓ(¿zŽLè%ë0>q,°„øéà¹óçÁÛ8 o +è¡Æà€!ÂÉE"¬Kõà +f2Ù6q`¦­-Ût¶È>“'. mm™Œ° “˜lI!y†îDÓÎáQ2˜ÉÒC'‹mág–øyîÌÑàD†(r  +)ÛDX‘­À6Ð^ú- +9– +endstream +endobj + +93 0 obj +4711 +endobj + +94 0 obj +<> +endobj + +95 0 obj +<> +stream +xœ]PAjÃ0¼ë{LA¶ã¶# Ò–º}€,­]A-‰µ|ðï+Éi =HÌ0;Ãìòs{i­ ü•œê0À`¬&œÝB +¡ÇÑXVV  +w–5IÏxôvëpjíàš†ñ·¨ÍVØ´ëqÏø i$cGØ}œ»È»Åû/œÐ(˜ qˆ97éŸå„<»­Ž² ë!ZþÞWPe^nU”Ó8{©¤‘5E! ¹^C«ÿiõæèõ))N–q²(/"â*㧇„>&\o¸ÎywgJN«ÿ4µŶù>¹f*h,þžÐ;Ÿ\ù}¿[tt +endstream +endobj + +96 0 obj +<> +endobj + +97 0 obj +<> +stream +xœåY}l[×u?÷=~‹¢Ä/‘%ùÒOõA“”(Q²,+ú®©’"*ŠØ¦Ž(‰’ó $%ÛYAjBêºiþY‘AÐ?ŒN+8¯…e# „Àº¡X½¬[³,ÛŠ (Öü‘ƒ[ EMïÜûõe9óòï$Ü÷Î=÷ÞsÏÇïœ{Ÿ”ÏnÄÀW@„þåd4³Ðž€ŸËòfž®–ý»ä—øhYͬ%gÞúò¯#òrk‰Ë«íÿx¹@¼`¢ë±èÊÿC!`~ ç‡Ö‘¡/þ“ˆý°ß°žÌ_ZÕ·{°ÿì¯$ÒËÑÿß4X±ß‘Œ^Êüñ Øû4MÆB_üöQ ã?gÒ¹|;ì<8qg²±Œã›¿Ay' +ØŸgŠâ/ûaúiX_UjV§7ËM•f‹Õf¯r8áÿÏ +®Âu؆ÒƇA0’_QÐ`ëÃö2¶ëØ~Â<¶àØýÌÂ_r-²C~m†ënƒÄΟÞâ¥t$>\ ‹Ø¼Èhq#%zéhA<5:» EèÝ_Ù¢£t=ºRPâoˆmEü´á…8>çÜ…þˆkŒE"=(GÅ䨸œ­JxQ‘ð"—€à$µw‚ÄÆ™…g +W†]…þáˆËí¦#…Ý™…Âî°Ë‰à,Íž¦øþã¸SÑY‹:kZÐÉR …~W"[[rOr®lm¹¶Ð¥¿»GŽ2úz‚IOì+3|èŠäv1†ä–ܨgd÷Ö{' #¨©;r@ +“˜Oyá +Ì@=T€ì°ÆB1²€¿ë6ÆÍÜQc î‹Üûw@‹]0[Îà„ÊÛEÆ3+¼;(­DY÷(»BÚ¬n³û”ŸHÄú‘N­ÇL´ŽI¡éÁd®¦AÕP3Ød¹diš™%c³³ÂëÝ‹‹Ý¤±¡aqîF±@fnÜ@ýh|xŸ|Œbk@‚dI{3SÖ ú=ísPû; ÃYo3êm@½™;Pu›ÿ8˜Ý{v¹ø¸©zNé:T ÍqÒ'tv„º¥“­§Û«ìfÉ#™HW{¨«ÓDì¶w¤níÊuM¿«×ÓÛ™8M¿fTÕYí.SŸÏXÝÒ}b*RÑa·gèÉô? ¸Ü¯Z+†õ +ö`Å‚¶}móÃxÉ2'3Äy¬e·AÃc`®“ëïTt½¸Fö¼ãd£§«*Øêìð ŸØÙÑ' æ­H'í¶zÁQ/Úm&áç žÉáËQé:i­:Ýà¨ë÷öEÜ“®‡·¢y¾SŽÚÐŒ±‘¾Ø^Qa¨(7êôÕ +þ§z[ÍÕ«¶ªZƒÉX¦Õ9¥¶“Ò¹ÓÕhñá°`!÷¡¾P²ÇÈÔ7>j–٣店±úÁñcfµ‚[fäñR¬©Gׇž"bÐQOÁ>ò Š&ñÕ·¹^kÖI’NóîvoY¥^¥«Ð·94òŽZýŠ r9ªÈÇ»ÒHcÃhÃnÑ|:àà~ïA`U +¬‚}ùH>ìëic ›Œ(U;1˜æˆ#g ]†tÒŒDÇ€”…ãÇdÊʨ1wp™¥/gŸÞvÖ8©m›Üï­kM¥øSR 6Kq‡éGïá¦up¦¤Ÿ©c88XɲAÆùmÄ7Û]ÍÑ{ ö»Á¢Ëa"¤¶óùa÷éhç鱺sµ)êj¶7[#Fih©¯oiHªu¦L†¡3g†,¦Œ»x.¢^ÜoVD]çhÆÈ´búÕѪ^`(ô0œ6ÊÊgàK#ÍÍ#_ +"#--#‘€Çíö`ÛÓ©ôÞbz±†:¡b}Âf…†[ÝLŒa’£‰“Œ2?‹š ø­ +)5EµVb—¬\=¤Æ>í\km;Ýþ$Øjï¶ìÁð¹Þù.×ß’ù€×Û° +{ØêP6ÄJÚ¨ØæªG=dÝc(Y¢ÞcèC·>9?4(EÇ)=òtr¥ +šƒ]A­UòhíRÏ +ÕÖ›ïÜYé¸!ì¯ýà^ñ£›=—>„^Ä”Šü^ð°|#!”UÆõå|¸‹='-ÍG< ±2 Û4oy»»½ØŒ½^o/kL† e¼,lB5LÃWYB8Iz&IÿÔê+åŠÆ¨(gY…oÓ=9Ö=¼œ#R'¦¼=h—@X×6rÚ>8i»–Í68}­ÛXšðýàŠæ•W®þYË µøUä;f,,”lÔ0E4Ÿ“ƒ@Ä©r(»w0ÙÅÉn×>šìÛºšñý\vÞžw4JvžSä q-žoãOSì¼5ð*ÉË”°¢u{yFÉ3ÖÍk(sœUVŽœì:?ÒÔ<4ïëš +¹ÔBñß}-5m®îæec§®UÇ“î\t¸¡qp¡ÝѤ?-UT¬ÖÕ‘ÁºÖ“¨wÕùð¯èšŠýZðHCT€ÑUÝc通ÞãÈ•¬ Õ³½=ß +µ`#÷‹F¡=ÐØ`Çïòä=<[ôp ד5%dÁ=9H„÷Ô¸k—UêtÛÅ ÝÝôî +òò»w‹«ÏËÕç‹Ÿ^å5®kE¬Ta<^*íTΗØIËÚh9 å-jÜ^W.Þ¿J9¸2å„ +]ƒ”[ `£GÒJfVGª¥Ö^OÈŒ»¿Neºº­ªéw{Ç‚µRÏÄl½W’l'ÌÔèv‡ocΚ†Áógb# +¯uõ…*m;&ƒœˆ»&´Ó ­Grâ8£nc}Ø»™ƒfÌÃÂàôsïÙ†Šm«^­ÕØLÍFWûH‹ {ð_5áeNÉ=ò6ûðÚG÷#(±0†e¿ÚY9kË?’OÖÊÃ'«r²)çjíñÆRVkª6»ÎZðdúÕê7Dõ)ñn3Þ‘„Z<+´,é¢\{ÍG#ËËv~>0äpàHféÚÞ&¿¿~½¨‘ÏEv­r¹83û’Ë£ì1E^S˸Ùz?ƒ«  /áxEÂD½RîÛù‰dõH¨K)½÷ûÖ;ƒ}73ƒÛ¿ëxá -gß Kó-ôAñÃ…-[à™s£Ï×üû  +_îb­ž‡Ã&ïÇ£Š1ªá êU•,éZµ{×kV¼µ®Jtá!©Ã‚¾2K]¥[yÑXctÖÎÍmÚüÝRÈ,t¨Õ.Éxµø:I]Qk›Æ»ÝF\³™OwѧnøÊcOu7c¸e²ó¬tJÁº‡ ªææç »ù»•/•”ãVj•o•]¬1]»ð«EÂo—z±ŽHc;Kz¼Yb;¿ó¦Z£U¡™çg:T¢N£þŽ°Uü«§®®ÇE 6w«{Ÿêu¾ù‹_¼éD¢zW¶#„õD‡u« +ÂÿÛÙ³—g¬Æk”‚Áª»‰;™Ž÷d«Ì÷ØGС|ÄòŽÿ>y¿ùl£…:'ÌÛì¾9n¬ëœð“ŽâÇxì8É`Ñ8ØÐÂÿž!ß }ú—ßz¡¢÷· ÿƒ©ü³÷__ÜÿÈÇý.VyÌVž™²M ~PüÏ Gþ2P-ì¤à„Fr,B=…Qè!`‘û n*,˜м~èåí:˜ØÁ”P¡IÆñlo#¿œx¿#ëP%êpí „pŸ%¸GºÉkä#¡ ³ÂQ#ZÄñUñ}•OµªúŽÚ¤T]ýCAs^󞶒kZg—k èm`)Lr ÔØk"¿Ú³'³gÁoÛŒB ˜+_Shà5…VᜂB«¡~¬ÐXQ‰Z¡µ°Hœ +­ƒrI¡õ`$¯+tT“ï*t9ù6¹¥Ð&¨ŸVèJ¨WÚ j1'Óø0ŠŠLBÀ ¾ªÐ”‰×ZDúOo¥â÷˜å*v£ü¥øç +M Eõ +…À¤º¥Ð"Œ©~¬Ð*hQ—+´®¨»ZêÒ|-ìªÿE¡uСùS…ÖƒSów +]íš_+t¹Ø¨u)´ :  +] õ† +…6ƒÁðm™F#œE&Úk3üH¡¨2üµB‹Hÿ›BãÑløíP:s9_[ÏÓö@[ÀËžíüÙAVÒK1¾œËÇ’9:žZNg3él4[¡Mëù|¦Çï¿xñ¢/ʦù–ÓI³—^Œç×él,Ënâ´Ñt*O§¢Éõ„ÓÙå˜Ç'¿i8šÊÑ™lš&¢Ëfck‰h¶Ý‡*œ9+Oc³pÒi> ¦GŽ]?Ëæâé•Ì„éÆÙõt~9Ú¤m¾€¯«ûl2z!–ίúñ¥v_§/Ôv&8f7eŸxŽFi>]‰%£Ù 4½úY^‰§h~=FŸMÅY/œG&.O­øÓYšÆ‘,]No¤òÙx,ç{¼˜™èF‚ûèN=ÖÍùË™ØÜ:jÆÝN¯æ/F³\ÕD|9–ÊáÞ©Ü)Ÿ¤Ó™XJž<)Oðî9¨Í×æ+7”¸z¼R+ñš¼´Á|‚;FSÔ3¦ãa‡½ô¹ñ¹±égçès³³Ssã#a:=K‡¦§†ÇçƧ§°7J¦"tb|jØKcqîÉØ¥L6–ËQtm<™IÄc+>ŽÅo3]MËÉebËñÕø2MDSkÑ5ôF&–MÆsÌ!<^èˆd£ÇûkéÍX6O­ÑË º’ùGLõ=Þ3G0+ã+Í­£G^ŠeÓaOÁÄ@"›! +htŸ\ DzñUœ;Žõi,½—! qXƒuÈã1ÒŽ%¼ +›wn?@w 5+¸n ?Â)¼—!‡ëbÄ7Å‹h +–q4‹rÙ3ÊÇVp¤‰ËÏ#¿üø{‘ÿúpFIš¯LâX3ßñ"j•ÇUfq4‡- ›Š´Qœ™âúN¡„$×Ńڤag-c߃òö™®Q\ôœA^߃@Þ2\à;¬á\ÖÏ¢­>Å gÑÚaœ7‚ÔAi%Y²¤Ó$É+¦ùš'ßž[—C‹™]ô3¸’>fÆYôOý°Ì¹›Èoã|tA7Ž&Qþ\Éæ¬"7ë—øÚNl!œ}/ì'´í°=qnK[žGz…£€ùïòÒ¸ßçÅJœ[ÈbÏÖ=‹½øÞX)y¦¼{ +¹~¾žr+×¹Ÿ(—¼Á1ÂÐÍfû>—63H1\PŒªŸcŠÔ'GswÊ g×È>ÛGo˜û)k™ßö½Êâļœâ¸gvopKeÛJž £Ö“øžæòS‡$O’à=A )¬•óohÃýï¾éMlqŽ†%|Æåh”ï>Ïp:~¡G|”C™,ä±hä¸,÷öŽOãúIîãÿ‹§Vø[Žòz©„ÙÆ(zP¯0qi–wÜwaî—çšÃ¸N#ÒæxëÁ,>§°?Îó˜ùxŸCøžB$ŒóFËc£ëSÁ÷Ž°9LvLñ·\Bë³9®c–Û‘Dn‚£t…ÛF*ö¹âLÑGéCÉñ5Ë8k•Ï¤<~)^í¢ø”±‘á&¹/KÙÏ/In ‹íþøR›|mŠgíò.+U‚aVÖI®ù'ˆªïsaæ³ëìÁúŨ÷ ³ê%®yš×”,ÇvéL`4KÌ2¹0oÇ]cß*òÝ°´óS€V¸I¡•ÜÙó–HkªÌеÞR•(¸E|õU•Œ)4¬µó¦Z§m-€üïЉXœ](öÏϹð?PËq +endstream +endobj + +98 0 obj +4318 +endobj + +99 0 obj +<> +endobj + +100 0 obj +<> +stream +xœ]’Ënƒ@ E÷|Å,ÓEÄ+ä!!¤„‰E*é“ŽT†Ñ@ü}Ç6m¥.@ÇöµueOXÖçÚè)|sƒl`6ÊÁ8<œqƒ»6Aœ¥å´Dô—}kƒÐ÷6ó8A_›nÈó |÷µqr³XÕpƒ§ |u +œ6w±ú(7k¿ 3‰(( +¡ ósž[ûÒöR׺V¾¬§yí[þ×Ù‚H(ŽÙŠŒ¶•àZs‡ ¢BäUU`Ô¿Z’rË­“Ÿ­óÒØK£hžâ]Šœ27¬¹ g̤Ù'òŽóòž8£üó'ä#qzD>ñü +rÉš=ò™9C¾0“‡ŠõØGœOÿ%òâŸòì?Ãù1ûÏ(¿øß"³ÿÍ™ýï2ZÚ²\Þ÷ç,B>œó'¡G@·À+h¿ïÄ»èû}*¡ +endstream +endobj + +101 0 obj +<> +endobj + +102 0 obj +<> +endobj + +103 0 obj +<> +/ProcSet[/PDF/Text] +>> +endobj + +1 0 obj +<>/Contents 2 0 R>> +endobj + +5 0 obj +<>/Contents 6 0 R>> +endobj + +8 0 obj +<>/Contents 9 0 R>> +endobj + +11 0 obj +<>/Contents 12 0 R>> +endobj + +14 0 obj +<>/Contents 15 0 R>> +endobj + +17 0 obj +<>/Contents 18 0 R>> +endobj + +20 0 obj +<>/Contents 21 0 R>> +endobj + +23 0 obj +<>/Contents 24 0 R>> +endobj + +26 0 obj +<>/Contents 27 0 R>> +endobj + +29 0 obj +<>/Contents 30 0 R>> +endobj + +104 0 obj +<> +endobj + +105 0 obj +< +/Dest[5 0 R/XYZ 78.3 348 0]/Parent 104 0 R/Next 106 0 R>> +endobj + +106 0 obj +< +/Dest[5 0 R/XYZ 78.3 246.7 0]/Parent 104 0 R/Prev 105 0 R/Next 107 0 R>> +endobj + +107 0 obj +< +/Dest[8 0 R/XYZ 78.3 743.1 0]/Parent 104 0 R/Prev 106 0 R>> +endobj + +108 0 obj +< +/Dest[8 0 R/XYZ 85.5 706.1 0]/Parent 107 0 R/Next 109 0 R>> +endobj + +109 0 obj +< +/Dest[8 0 R/XYZ 85.5 409.3 0]/Parent 107 0 R/Prev 108 0 R/Next 110 0 R>> +endobj + +110 0 obj +< +/Dest[11 0 R/XYZ 85.5 743.1 0]/Parent 107 0 R/Prev 109 0 R/Next 111 0 R>> +endobj + +111 0 obj +< +/Dest[11 0 R/XYZ 85.5 262.6 0]/Parent 107 0 R/Prev 110 0 R/Next 119 0 R>> +endobj + +112 0 obj +< +/Dest[14 0 R/XYZ 56.7 387.2 0]/Parent 111 0 R/Next 113 0 R>> +endobj + +113 0 obj +< +/Dest[14 0 R/XYZ 56.7 301.5 0]/Parent 111 0 R/Prev 112 0 R/Next 114 0 R>> +endobj + +114 0 obj +< +/Dest[17 0 R/XYZ 56.7 743 0]/Parent 111 0 R/Prev 113 0 R/Next 115 0 R>> +endobj + +115 0 obj +< +/Dest[17 0 R/XYZ 56.7 624.2 0]/Parent 111 0 R/Prev 114 0 R/Next 116 0 R>> +endobj + +116 0 obj +< +/Dest[17 0 R/XYZ 56.7 505.3 0]/Parent 111 0 R/Prev 115 0 R/Next 117 0 R>> +endobj + +117 0 obj +< +/Dest[17 0 R/XYZ 56.7 124.2 0]/Parent 111 0 R/Prev 116 0 R/Next 118 0 R>> +endobj + +118 0 obj +< +/Dest[20 0 R/XYZ 56.7 629.7 0]/Parent 111 0 R/Prev 117 0 R>> +endobj + +119 0 obj +< +/Dest[20 0 R/XYZ 85.5 527.2 0]/Parent 107 0 R/Prev 111 0 R/Next 120 0 R>> +endobj + +120 0 obj +< +/Dest[20 0 R/XYZ 85.5 158.7 0]/Parent 107 0 R/Prev 119 0 R/Next 121 0 R>> +endobj + +121 0 obj +< +/Dest[23 0 R/XYZ 85.5 619.8 0]/Parent 107 0 R/Prev 120 0 R/Next 122 0 R>> +endobj + +122 0 obj +< +/Dest[23 0 R/XYZ 85.5 438.8 0]/Parent 107 0 R/Prev 121 0 R/Next 123 0 R>> +endobj + +123 0 obj +< +/Dest[23 0 R/XYZ 85.5 307.5 0]/Parent 107 0 R/Prev 122 0 R/Next 124 0 R>> +endobj + +124 0 obj +< +/Dest[29 0 R/XYZ 121 743.1 0]/Parent 107 0 R/Prev 123 0 R>> +endobj + +54 0 obj +<> +endobj + +32 0 obj +<> +endobj + +33 0 obj +<> +endobj + +34 0 obj +<> +endobj + +35 0 obj +<> +endobj + +36 0 obj +<> +endobj + +37 0 obj +<> +endobj + +38 0 obj +<> +endobj + +39 0 obj +<> +endobj + +40 0 obj +<> +endobj + +41 0 obj +<> +endobj + +42 0 obj +<> +endobj + +43 0 obj +<> +endobj + +44 0 obj +<> +endobj + +45 0 obj +<> +endobj + +46 0 obj +<> +endobj + +47 0 obj +<> +endobj + +48 0 obj +<> +endobj + +49 0 obj +<> +endobj + +50 0 obj +<> +endobj + +51 0 obj +<> +endobj + +52 0 obj +<> +endobj + +53 0 obj +<> +endobj + +125 0 obj +<> +/Outlines 104 0 R +/Lang(en-US) +>> +endobj + +126 0 obj +< +/Subject +/Creator +/Producer +/CreationDate(D:20171025163536-07'00')>> +endobj + +xref +0 127 +0000000000 65535 f +0000132366 00000 n +0000000019 00000 n +0000000745 00000 n +0000024187 00000 n +0000132511 00000 n +0000000765 00000 n +0000002866 00000 n +0000132807 00000 n +0000002887 00000 n +0000005399 00000 n +0000132970 00000 n +0000005421 00000 n +0000009774 00000 n +0000133117 00000 n +0000009796 00000 n +0000013794 00000 n +0000133264 00000 n +0000013816 00000 n +0000016661 00000 n +0000133411 00000 n +0000016683 00000 n +0000019371 00000 n +0000133576 00000 n +0000019393 00000 n +0000021872 00000 n +0000133723 00000 n +0000021894 00000 n +0000023161 00000 n +0000133870 00000 n +0000023183 00000 n +0000023969 00000 n +0000138229 00000 n +0000138343 00000 n +0000138460 00000 n +0000138577 00000 n +0000138694 00000 n +0000138809 00000 n +0000138924 00000 n +0000139043 00000 n +0000139162 00000 n +0000139281 00000 n +0000139398 00000 n +0000139513 00000 n +0000139632 00000 n +0000139751 00000 n +0000139868 00000 n +0000139983 00000 n +0000140097 00000 n +0000140213 00000 n +0000140329 00000 n +0000140445 00000 n +0000140557 00000 n +0000140677 00000 n +0000138066 00000 n +0000023990 00000 n +0000024167 00000 n +0000024340 00000 n +0000046503 00000 n +0000046526 00000 n +0000046723 00000 n +0000047270 00000 n +0000047664 00000 n +0000059111 00000 n +0000059134 00000 n +0000059330 00000 n +0000059704 00000 n +0000059936 00000 n +0000073533 00000 n +0000073556 00000 n +0000073747 00000 n +0000074150 00000 n +0000074401 00000 n +0000082437 00000 n +0000082459 00000 n +0000082654 00000 n +0000082997 00000 n +0000083199 00000 n +0000095253 00000 n +0000095276 00000 n +0000095479 00000 n +0000096026 00000 n +0000096425 00000 n +0000112200 00000 n +0000112223 00000 n +0000112420 00000 n +0000113039 00000 n +0000113506 00000 n +0000120488 00000 n +0000120510 00000 n +0000120717 00000 n +0000121110 00000 n +0000121368 00000 n +0000126165 00000 n +0000126187 00000 n +0000126391 00000 n +0000126701 00000 n +0000126884 00000 n +0000131288 00000 n +0000131310 00000 n +0000131513 00000 n +0000131910 00000 n +0000132171 00000 n +0000132287 00000 n +0000134017 00000 n +0000134077 00000 n +0000134252 00000 n +0000134422 00000 n +0000134640 00000 n +0000134797 00000 n +0000135035 00000 n +0000135214 00000 n +0000135421 00000 n +0000135623 00000 n +0000135826 00000 n +0000136027 00000 n +0000136230 00000 n +0000136453 00000 n +0000136672 00000 n +0000136878 00000 n +0000137121 00000 n +0000137344 00000 n +0000137531 00000 n +0000137718 00000 n +0000137905 00000 n +0000140788 00000 n +0000140950 00000 n +trailer +< + ] +/DocChecksum /5A2BB3940CE0D29350FDF70A35ABB5D2 +>> +startxref +141498 +%%EOF Index: rs232_syscon/trunk/verilog/b13c_environment.zip =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: rs232_syscon/trunk/verilog/b13c_environment.zip =================================================================== --- rs232_syscon/trunk/verilog/b13c_environment.zip (nonexistent) +++ rs232_syscon/trunk/verilog/b13c_environment.zip (revision 8)
rs232_syscon/trunk/verilog/b13c_environment.zip Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: rs232_syscon/trunk/verilog/rs232_syscon.v =================================================================== --- rs232_syscon/trunk/verilog/rs232_syscon.v (nonexistent) +++ rs232_syscon/trunk/verilog/rs232_syscon.v (revision 8) @@ -0,0 +1,1168 @@ +//------------------------------------------------------------------------------------- +// +// Author: John Clayton +// Date : June 25, 2001 +// Update: 6/25/01 copied this file from ps2_mouse.v (pared down). +// Update: 6/07/01 Finished initial coding efforts. +// Update: 7/19/01 First compilation. Added master_br_o and master_bg_i; +// Update: 7/25/01 Testing. Eliminated msg_active signal. Changed serial.v +// to reflect new handshaking (i.e. "load_request" is now a +// periodic pulse of tx_clk_1x from rs232_tx...) +// Update: 7/30/01 Began coding m2 state machine. Defined response codes. +// Update: 8/01/01 After some testing with m2, merged m2 into m1. Eliminated +// response codes. +// Update: 8/02/01 Tested & measured the single "combined" state machine's +// performance, and "it was found wanting." (The 49.152MHz +// clock frequency was too fast for it...) Created clk_s +// at 49.152/2 MHz, and this worked. +// Update: 8/03/01 Added counter loop to "execute" and "bus_granted" states +// so that multiple bus cycles are generated, at sequential +// addresses. However, the qty field is not cleared before +// being loaded with new characters, which causes problems. +// Update: 8/07/01 Finished debugging. The read print formatting is now +// correct, and the unit appears to operate correctly. +// Many hours were spent puzzling over how to make this work. +// Removed port "debug". +// Update: 8/24/01 Added "master_stb_i" and "master_we_i" inputs and logic. +// Update: 12/13/01 For memory_sizer.v, I lowered the frequency of clk_s down +// to 49.152/4 MHz, so I changed the CLOCK_FACTOR from 8 to 4 +// on the rs232 transciever, and this worked fine. +// Update: 9/09/02 Incorporated the "autobaud_with_tracking" module so that +// the serial clock is generated automatically, no matter +// what frequency clk_i is used. The user simply needs to +// press "enter" from the terminal program to synchronize +// the baud rate generator. Changing BAUD rates on the fly +// is also permitted, simply change to a new BAUD rate in the +// terminal program and hit enter. +// Update:11/26/02 Changed the string constants to binary representation +// (Just to eliminate warnings in XST.) +// +// +// +// +// +// Description +//------------------------------------------------------------------------------------- +// This is a state-machine driven rs232 serial port interface to a "Wishbone" +// type of bus. It is intended to be used as a "Wishbone system controller" +// for debugging purposes. Specifically, the unit allows the user to send +// text commands to the "rs232_syscon" unit, in order to generate read and +// write cycles on the Wishbone compatible bus. The command structure is +// quite terse and spartan in nature, this is for the sake of the logic itself. +// Because the menu-driven command structure is supported without the use of +// dedicated memory blocks (in order to maintain cross-platform portability +// as much as possible) the menus and command responses were kept as small +// as possible. In most cases, the responses from the unit to the user +// consist of a "newline" and one or two visible characters. The command +// structure consists of the following commands and responses: +// +// Command Syntax Purpose +// --------------- --------------------------------------- +// w aaaa dddd xx Write data "dddd" starting at address "aaaa" +// perform this "xx" times at sequential addresses. +// (The quantity field is optional, default is 1). +// r aaaa xx Read data starting from address "aaaa." +// Perform this "xx" times at sequential addresses. +// (The quantity field is optional, default is 1). +// i Send a reset pulse to the system. (initialize). +// +// Response from rs232_syscon Meaning +// -------------------------- --------------------------------------- +// OK Command received and performed. No errors. +// ? Command buffer full, without receiving "enter." +// C? Command not recognized. +// A? Address field syntax error. +// D? Data field syntax error. +// Q? Quantity field syntax error. +// ! No "ack_i", or else "err_i" received from bus. +// B! No "bg_i" received from master. +// +// NOTES on the operation of this unit: +// +// - The unit generates a command prompt which is "-> ". +// - Capitalization is not important. +// - Each command is terminated by the "enter" key (0x0d character). +// Commands are executed as soon as "enter" is received. +// - Trailing parameters need not be re-entered. Their values will +// remain the same as their previous settings. +// - Use of the backspace key is supported, so mistakes can be corrected. +// - The length of the command line is limited to a fixed number of +// characters, as configured by parameter. +// - Fields are separated by white space, including "tab" and/or "space" +// - All numerical fields are interpreted as hexadecimal numbers. +// Decimal is not supported. +// - Numerical field values are retained between commands. If a "r" is issued +// without any fields following it, the previous values will be used. A +// set of "quantity" reads will take place at sequential addresses. +// If a "w" is issued without any fields following it, the previous data +// value will be written "quantity" times at sequential addresses, starting +// from the next location beyond where the last command ended. +// - If the user does not wish to use "ack" functionality, simply tie the +// "ack_i" input to 1b'1, and then the ! response will never be generated. +// - The data which is read in by the "r" command is displayed using lines +// which begin with the address, followed by the data fields. The number +// of data fields displayed per line (following the address) is adjustable +// by setting a parameter. No other display format adjustments can be made. +// - There is currently only a single watchdog timer. It begins to count at +// the time a user hits "enter" to execute a command. If the bus is granted +// and the ack is received before the expiration of the timer, then the +// cycle will complete normally. Therefore, the watchdog timeout value +// needs to include time for the request and granting of the bus, in +// addition to the time needed for the actual bus cycle to complete. +// +// +// Currently, there is only a single indicator (stb_o) generated during bus +// output cycles which are generated from this unit. +// The user can easily implement decoding logic based upon adr_o and stb_o +// which would serve as multiple "stb_o" type signals for different cores +// which would be sharing the same bus. +// +// The dat_io bus supported by this module is a tri-state type of bus. The +// Wishbone spec. allows for this type of bus (see Wishbone spec. pg. 66). +// However, if separate dat_o and dat_i busses are desired, they can be added +// to the module without too much trouble. Supposedly the only difference +// between the two forms of data bus is that one of them avoids using tri-state +// at the cost of doubling the number of interconnects used to carry data back +// and forth... Some people say that tri-state should be avoided for use +// in internal busses in ASICs. Maybe they are right. +// But in FPGAs tri-state seems to work pretty well, even for internal busses. +// +// Parameters are provided to configure the width of the different command +// fields. To simplify the logic for binary to hexadecimal conversion, these +// parameters allow adjustment in units of 1 hex digit, not anything smaller. +// If your bus has 10 bits, for instance, simply set the address width to 3 +// which produces 12 bits, and then just don't use the 2 msbs of address +// output. +// +// No support for the optional Wishbone "retry" (rty_i) input is provided at +// this time. +// No support for "tagn_o" bits is provided at this time, although a register +// might be added external to this module in order to implement to tag bits. +// No BLOCK or RMW cycles are supported currently, so cyc_o is equivalent to +// stb_o... +// The output busses are not tri-stated. The user may add tri-state buffers +// external to the module, using "stb_o" to enable the buffer outputs. +// +//------------------------------------------------------------------------------------- + + +`define NIBBLE_SIZE 4 // Number of bits in one nibble + +// The command register has these values +`define CMD_0 0 // Unused command +`define CMD_I 1 // Initialize (or reset) +`define CMD_R 2 // Read +`define CMD_W 3 // Write + +module rs232_syscon ( + clk_i, + reset_i, + ack_i, + err_i, + master_bg_i, + master_adr_i, + master_stb_i, + master_we_i, + rs232_rxd_i, + dat_io, + rst_o, + master_br_o, + stb_o, + cyc_o, + adr_o, + we_o, + rs232_txd_o + ); + + +// Parameters + +// The timer value can be from [0 to (2^WATCHDOG_TIMER_BITS_PP)-1] inclusive. +// RD_FIELDS_PP can be from [0 to (2^RD_FIELD_CTR_BITS_PP)-1] inclusive. +// Ensure that (2^CHAR_COUNT_BITS_PP) >= CMD_BUFFER_SIZE_PP. +// The setting of CMD_BUFFER_SIZE_PP should be large enough to hold the +// largest command, obviously. +// Ensure that (2^RD_DIGIT_COUNT_BITS_PP) is greater than or equal to the +// larger of {ADR_DIGITS_PP,DAT_DIGITS_PP}. +parameter ADR_DIGITS_PP = 4; // # of hex digits for address. +parameter DAT_DIGITS_PP = 4; // # of hex digits for data. +parameter QTY_DIGITS_PP = 2; // # of hex digits for quantity. +parameter CMD_BUFFER_SIZE_PP = 32; // # of chars in the command buffer. +parameter CMD_PTR_BITS_PP = 4; // # of Bits in command buffer ptr. +parameter WATCHDOG_TIMER_VALUE_PP = 200; // # of sys_clks before ack expected. +parameter WATCHDOG_TIMER_BITS_PP = 8; // # of bits needed for timer. +parameter RD_FIELDS_PP = 8; // # of fields/line (when qty > 1). +parameter RD_FIELD_COUNT_BITS_PP = 3; // # of bits in the fields counter. +parameter RD_DIGIT_COUNT_BITS_PP = 2; // # of bits in the digits counter. + + +// State encodings, provided as parameters +// for flexibility to the one instantiating the module. +// In general, the default values need not be changed. + +// There is one state machines: m1. +// "default" state upon power-up and configuration is: +// "m1_initial_state" + +parameter m1_initial_state = 5'h00; +parameter m1_send_ok = 5'h01; // Sends OK +parameter m1_send_prompt = 5'h02; // Sends "-> " +parameter m1_check_received_char = 5'h03; +parameter m1_send_crlf = 5'h04; // Sends cr,lf +parameter m1_parse_error_indicator_crlf = 5'h05; // Sends cr,lf +parameter m1_parse_error_indicator = 5'h06; // Sends ? +parameter m1_ack_error_indicator = 5'h07; // Sends ! +parameter m1_bg_error_indicator = 5'h08; // Sends B! +parameter m1_cmd_error_indicator = 5'h09; // Sends C? +parameter m1_adr_error_indicator = 5'h0a; // Sends A? +parameter m1_dat_error_indicator = 5'h0b; // Sends D? +parameter m1_qty_error_indicator = 5'h0c; // Sends Q? +parameter m1_scan_command = 5'h10; +parameter m1_scan_adr_whitespace = 5'h11; +parameter m1_get_adr_field = 5'h12; +parameter m1_scan_dat_whitespace = 5'h13; +parameter m1_get_dat_field = 5'h14; +parameter m1_scan_qty_whitespace = 5'h15; +parameter m1_get_qty_field = 5'h16; +parameter m1_start_execution = 5'h17; +parameter m1_request_bus = 5'h18; +parameter m1_bus_granted = 5'h19; +parameter m1_execute = 5'h1a; +parameter m1_rd_send_adr_sr = 5'h1b; +parameter m1_rd_send_separator = 5'h1c; +parameter m1_rd_send_dat_sr = 5'h1d; +parameter m1_rd_send_space = 5'h1e; +parameter m1_rd_send_crlf = 5'h1f; + +// I/O declarations +input clk_i; // System clock input +input reset_i; // Reset signal for this module +input ack_i; // Ack input from Wishbone "slaves" +input err_i; // Err input from Wishbone "slaves" +input master_bg_i; // Bus Grant (grants this module the bus) + // Address bus input from "normal" Wishbone + // master (i.e. from processor) +input [`NIBBLE_SIZE*ADR_DIGITS_PP-1:0] master_adr_i; +input master_stb_i; // bus cycle signal from "normal" bus master +input master_we_i; // write enable from "normal" bus master +input rs232_rxd_i; // Serial data from debug host terminal. + // Data bus (tri-state, to save interconnect) +inout [`NIBBLE_SIZE*DAT_DIGITS_PP-1:0] dat_io; + +output rst_o; // Rst output to Wishbone "slaves" +output master_br_o; // Bus request to normal master device. +output stb_o; // Bus cycle indicator to Wishbone "slaves" +output cyc_o; // Bus cycle indicator to Wishbone "slaves" + // Address bus output to Wishbone "slaves" +output [`NIBBLE_SIZE*ADR_DIGITS_PP-1:0] adr_o; +output we_o; // Write enable to Wishbone "slaves" +output rs232_txd_o; // Serial transmit data to debug host terminal + +reg rst_o; +reg master_br_o; + +// Internal signal declarations +wire watchdog_timer_done; // High when watchdog timer is expired +wire rd_addr_field_done; // High when displayed addr field is complete +wire rd_data_field_done; // High when displayed data field is complete +wire rd_line_done; // High when displayed line is complete +wire char_is_enter; // High when cmd_buffer[char_count] is enter. +wire char_is_whitespace; // High when cmd_buffer[char_count] is whitespace. +wire char_is_num; // High when cmd_buffer[char_count] is 0..9 +wire char_is_a_f; // High when cmd_buffer[char_count] is a..f +wire char_is_hex; // High when cmd_buffer[char_count] is a hex char. +wire char_is_r; // High when cmd_buffer[char_count] is r. +wire char_is_w; // High when cmd_buffer[char_count] is w. +wire char_is_i; // High when cmd_buffer[char_count] is i. +wire rx_char_is_enter; // High when rs232_rx_char is enter. +wire rx_char_is_backspace; // High when rs232_rx_char is backspace. +wire [4:0] msg_pointer; // Determines message position or address. +wire [3:0] hex_digit; // This is the digit to be stored. + +reg rs232_echo; // High == echo char's received. +reg [7:0] msg_char; // Selected response message character. +reg [4:0] msg_base; // Added to msg_offset to form msg_pointer. +reg [4:0] msg_offset; // Offset from start of message. +reg reset_msg_offset; // High == set message offset to zero +reg incr_msg_offset; // Used for output messages. +reg cmd_i; // Sets command. +reg cmd_r; // Sets command. +reg cmd_w; // Sets command. +reg shift_rd_adr; // Shifts the rd_adr_sr by one character. +reg store_adr; // Allows adr_sr to store hex_digit. +reg store_dat; // Allows dat_sr to store hex_digit. +reg store_qty; // Allows qty_sr to store hex_digit. +reg reset_adr; // Clears adr_sr +reg reset_dat; // Clears dat_sr +reg reset_qty; // Clears qty_sr +reg init_qty; // Sets qty_sr to 1 +reg capture_dat; // Puts dat_io into dat_sr for later display. + + // For the buses +wire [`NIBBLE_SIZE*ADR_DIGITS_PP-1:0] adr_ptr; // = adr_sr + adr_offset + +reg stb_l; // "local" stb signal (to distinguish from stb_o) +reg we_l; // "local" we signal (to distinguish from we_o) + +reg [`NIBBLE_SIZE*ADR_DIGITS_PP-1:0] rd_adr_sr; // sr for printing addresses +reg [`NIBBLE_SIZE*ADR_DIGITS_PP-1:0] adr_sr; // "nibble" shift register +reg [`NIBBLE_SIZE*DAT_DIGITS_PP-1:0] dat_sr; // "nibble" shift register +reg [`NIBBLE_SIZE*QTY_DIGITS_PP-1:0] qty_sr; // "nibble" shift register +reg [1:0] command; +reg [`NIBBLE_SIZE*QTY_DIGITS_PP-1:0] adr_offset; // counts from 0 to qty_sr +reg reset_adr_offset; +reg incr_adr_offset; + + // For the command buffer +reg [CMD_PTR_BITS_PP-1:0] cmd_ptr; // Offset from start of command. +reg reset_cmd_ptr; // High == set command pointer to zero. +reg incr_cmd_ptr; // Used for "write port" side of the command buffer +reg decr_cmd_ptr; // Used for "write port" side of the command buffer +reg cmd_buffer_write; +reg [7:0] cmd_buffer [0:CMD_BUFFER_SIZE_PP-1]; +wire [7:0] cmd_char; +wire [7:0] lc_cmd_char; // Lowercase version of cmd_char + + // For the state machine +reg [4:0] m1_state; +reg [4:0] m1_next_state; + + // For various counters +reg reset_rd_field_count; +reg reset_rd_digit_count; +reg incr_rd_field_count; +reg incr_rd_digit_count; +reg [RD_FIELD_COUNT_BITS_PP-1:0] rd_field_count; // "fields displayed" +reg [RD_DIGIT_COUNT_BITS_PP-1:0] rd_digit_count; // "digits displayed" +reg [WATCHDOG_TIMER_BITS_PP-1:0] watchdog_timer_count; +reg reset_watchdog; + + // For the rs232 interface +wire serial_clk; +wire [2:0] rs232_rx_error; +wire rs232_tx_load; +wire rs232_tx_load_request; +wire rs232_rx_data_ready; +wire [7:0] rs232_rx_char; +wire [7:0] rs232_tx_char; // Either rs232_rx_char or msg_char + +//-------------------------------------------------------------------------- +// Instantiations +//-------------------------------------------------------------------------- + + +// These defines are for the rs232 interface +`define START_BITS 1 +`define DATA_BITS 8 +`define STOP_BITS 1 +`define CLOCK_FACTOR 8 + +// This module generates a serial BAUD clock automatically. +// The unit synchronizes on the carriage return character, so the user +// only needs to press the "enter" key for serial communications to start +// working, no matter what BAUD rate and clk_i frequency are used! +auto_baud_with_tracking #( + `CLOCK_FACTOR, // CLOCK_FACTOR_PP + 16 // LOG2_MAX_COUNT_PP + ) + clock_unit_2 + ( + .clk_i(clk_i), + .reset_i(reset_i), + .serial_dat_i(rs232_rxd_i), + .auto_baud_locked_o(), + .baud_clk_o(serial_clk) + ); + +// A transmitter, which asserts load_request at the end of the currently +// transmitted word. The tx_clk must be a "clock enable" (narrow positive +// pulse) which occurs at 16x the desired transmit rate. If load_request +// is connected directly to load, the unit will transmit continuously. +rs232tx #( + `START_BITS, // start_bits + `DATA_BITS, // data_bits + `STOP_BITS, // stop_bits (add intercharacter delay...) + `CLOCK_FACTOR // clock_factor + ) + rs232_tx_block // instance name + ( + .clk(clk_i), + .tx_clk(serial_clk), + .reset(reset_i), + .load(rs232_tx_load), + .data(rs232_tx_char), + .load_request(rs232_tx_load_request), + .txd(rs232_txd_o) + ); + +// A receiver, which asserts "word_ready" to indicate a received word. +// Asserting "read_word" will cause "word_ready" to go low again if it was high. +// The character is held in the output register, during the time the next +// character is coming in. +rs232rx #( + `START_BITS, // start_bits + `DATA_BITS, // data_bits + `STOP_BITS, // stop_bits + `CLOCK_FACTOR // clock_factor + ) + rs232_rx_block // instance name + ( + .clk(clk_i), + .rx_clk(serial_clk), + .reset(reset_i || (| rs232_rx_error)), + .rxd(rs232_rxd_i), + .read(rs232_tx_load), + .data(rs232_rx_char), + .data_ready(rs232_rx_data_ready), + .error_over_run(rs232_rx_error[0]), + .error_under_run(rs232_rx_error[1]), + .error_all_low(rs232_rx_error[2]) + ); + +//`undef START_BITS +//`undef DATA_BITS +//`undef STOP_BITS +//`undef CLOCK_FACTOR + + +//-------------------------------------------------------------------------- +// Module code +//-------------------------------------------------------------------------- + +assign adr_o = master_bg_i?adr_ptr:master_adr_i; +assign we_o = master_bg_i?we_l:master_we_i; +assign stb_o = master_bg_i?stb_l:master_stb_i; + + +assign dat_io = (master_bg_i && we_l && stb_l)? + dat_sr:{`NIBBLE_SIZE*DAT_DIGITS_PP{1'bZ}}; + +// Temporary +assign cyc_o = stb_o; // Separate cyc_o is not yet supported! + + +// This is the adress offset counter +always @(posedge clk_i) +begin + if (reset_i || reset_adr_offset) adr_offset <= 0; + else if (incr_adr_offset) adr_offset <= adr_offset + 1; +end +// This forms the adress pointer which is used on the bus. +assign adr_ptr = adr_sr + adr_offset; + + +// This is the ROM for the ASCII characters to be transmitted. +always @(msg_pointer) +begin + case (msg_pointer) // synthesis parallel_case + 5'b00000 : msg_char <= 8'h30; // "0"; // Hexadecimal characters + 5'b00001 : msg_char <= 8'h31; // "1"; + 5'b00010 : msg_char <= 8'h32; // "2"; + 5'b00011 : msg_char <= 8'h33; // "3"; + 5'b00100 : msg_char <= 8'h34; // "4"; + 5'b00101 : msg_char <= 8'h35; // "5"; + 5'b00110 : msg_char <= 8'h36; // "6"; + 5'b00111 : msg_char <= 8'h37; // "7"; + 5'b01000 : msg_char <= 8'h38; // "8"; + 5'b01001 : msg_char <= 8'h39; // "9"; + 5'b01010 : msg_char <= 8'h41; // "A"; // Address error indication + 5'b01011 : msg_char <= 8'h42; // "B"; + 5'b01100 : msg_char <= 8'h43; // "C"; // Command error indication + 5'b01101 : msg_char <= 8'h44; // "D"; // Data error indication + 5'b01110 : msg_char <= 8'h45; // "E"; + 5'b01111 : msg_char <= 8'h46; // "F"; + 5'b10000 : msg_char <= 8'h20; // " "; // Space + 5'b10001 : msg_char <= 8'h3A; // ":"; // Colon + 5'b10010 : msg_char <= 8'h20; // " "; // Space + 5'b10011 : msg_char <= 8'h3F; // "?"; // Parse error indication + 5'b10100 : msg_char <= 8'h21; // "!"; // ack_i/err_i error indication + 5'b10101 : msg_char <= 8'h4F; // "O"; // "All is well" message + 5'b10110 : msg_char <= 8'h4B; // "K"; + 5'b10111 : msg_char <= 8'h0D; // Carriage return & line feed + 5'b11000 : msg_char <= 8'h0A; + 5'b11001 : msg_char <= 8'h2D; // "-"; // Command Prompt + 5'b11010 : msg_char <= 8'h3E; // ">"; + 5'b11011 : msg_char <= 8'h20; // " "; + 5'b11100 : msg_char <= 8'h51; // "Q"; // Quantity error indication + default : msg_char <= 8'h3D; // "="; + endcase +end + +// This logic determines when to load a transmit character. +assign rs232_tx_load = rs232_echo? + (rs232_rx_data_ready && rs232_tx_load_request):rs232_tx_load_request; + +// This is the counter for incrementing, decrementing or resetting the +// message pointer. +always @(posedge clk_i) +begin + if (reset_i || reset_msg_offset) msg_offset <= 0; + else if (incr_msg_offset) msg_offset <= msg_offset + 1; +end +assign msg_pointer = msg_offset + msg_base; + + + +// This is the mux which selects whether to echo back the characters +// received (as during the entering of a command) or to send back response +// characters. +assign rs232_tx_char = (rs232_echo)?rs232_rx_char:msg_char; + + +// These assigments are for detecting whether the received rs232 character is +// anything of special interest. +assign rx_char_is_enter = (rs232_rx_char == 8'h0d); +assign rx_char_is_backspace = (rs232_rx_char == 8'h08); + + + +// This is state machine m1. It handles receiving the command line, including +// backspaces, and prints error/response messages. It also parses and +// executes the commands. + +// State register +always @(posedge clk_i) +begin : m1_state_register + if (reset_i) m1_state <= m1_initial_state; // perform reset for rest of system + else m1_state <= m1_next_state; +end + +// State transition logic +always @(m1_state + or rx_char_is_enter + or rx_char_is_backspace + or msg_offset + or cmd_ptr + or rs232_tx_load + or char_is_whitespace + or char_is_hex + or char_is_enter + or char_is_i + or char_is_r + or char_is_w + or command + or master_bg_i + or watchdog_timer_done + or err_i + or ack_i + or adr_offset + or qty_sr + or dat_sr + or rd_adr_sr + or rd_field_count + or rd_digit_count + ) +begin : m1_state_logic + + // Default values for outputs. The individual states can override these. + msg_base <= 5'b0; + reset_msg_offset <= 0; + incr_msg_offset <= 0; + rs232_echo <= 0; + rst_o <= 0; + we_l <= 0; + stb_l <= 0; + cmd_buffer_write <= 0; + reset_cmd_ptr <= 0; + incr_cmd_ptr <= 0; + decr_cmd_ptr <= 0; + master_br_o <= 0; + cmd_r <= 0; + cmd_w <= 0; + cmd_i <= 0; + shift_rd_adr <= 0; + store_adr <= 0; // enables storing hex chars in adr_sr (shift) + store_dat <= 0; // enables storing hex chars in dat_sr (shift) + store_qty <= 0; // enables storing hex chars in qty_sr (shift) + reset_adr <= 0; + reset_dat <= 0; + reset_qty <= 0; + init_qty <= 0; + capture_dat <= 0; // enables capturing bus data in dat_sr (load) + incr_adr_offset <= 0; + reset_adr_offset <= 0; + reset_watchdog <= 0; + incr_rd_field_count <= 0; + incr_rd_digit_count <= 0; + reset_rd_field_count <= 0; + reset_rd_digit_count <= 0; + + case (m1_state) // synthesis parallel_case + + m1_initial_state : + begin + incr_msg_offset <= rs232_tx_load; + if ((msg_offset == 15) && rs232_tx_load) begin + m1_next_state <= m1_send_prompt; + reset_msg_offset <= 1; + end + else m1_next_state <= m1_initial_state; + end + + m1_send_ok : + begin + msg_base <= 5'b10101; // Address of the OK message + incr_msg_offset <= rs232_tx_load; + if ((msg_offset == 1) && rs232_tx_load) begin + m1_next_state <= m1_send_prompt; + reset_msg_offset <= 1; + end + else m1_next_state <= m1_send_ok; + end + + m1_send_prompt : + begin + msg_base <= 5'b10111; // Address of the cr,lf,prompt message + incr_msg_offset <= rs232_tx_load; + if ((msg_offset == 4) && rs232_tx_load) begin + m1_next_state <= m1_check_received_char; + reset_cmd_ptr <= 1; + end + else m1_next_state <= m1_send_prompt; + end + + // This state always leads to activating the parser... + m1_send_crlf : + begin + msg_base <= 5'b10111; // Address of the cr/lf message + incr_msg_offset <= rs232_tx_load; + if ((msg_offset == 1) && rs232_tx_load) begin + m1_next_state <= m1_scan_command; + reset_cmd_ptr <= 1; + end + else m1_next_state <= m1_send_crlf; + end + + m1_check_received_char : + begin + rs232_echo <= 1; // Allow echoing of characters + if (rx_char_is_backspace && rs232_tx_load) + begin + m1_next_state <= m1_check_received_char; + decr_cmd_ptr <= 1; // This effectively eliminates the last char + end + else if (rx_char_is_enter && rs232_tx_load) + begin + m1_next_state <= m1_send_crlf; + cmd_buffer_write <= 1; // Store the enter as "marker" for parsing + reset_msg_offset <= 1; + end + else if (rs232_tx_load && (cmd_ptr == CMD_BUFFER_SIZE_PP-1)) + begin + m1_next_state <= m1_parse_error_indicator_crlf; + reset_msg_offset <= 1; + reset_cmd_ptr <= 1; + end + else if (rs232_tx_load) + begin + incr_cmd_ptr <= 1; + cmd_buffer_write <= 1; + m1_next_state <= m1_check_received_char; + end + else m1_next_state <= m1_check_received_char; + end + + m1_bg_error_indicator : + begin + msg_base <= 5'b01011; // Address of the B character + incr_msg_offset <= rs232_tx_load; + if ((msg_offset == 0) && rs232_tx_load) begin + m1_next_state <= m1_ack_error_indicator; + reset_msg_offset <= 1; + end + else m1_next_state <= m1_bg_error_indicator; + end + + m1_ack_error_indicator : + begin + msg_base <= 5'b10100; // Address of the ! error message + incr_msg_offset <= rs232_tx_load; + if ((msg_offset == 0) && rs232_tx_load) begin + m1_next_state <= m1_send_prompt; + reset_msg_offset <= 1; + end + else m1_next_state <= m1_ack_error_indicator; + end + + // This state is used when the line is too long... + m1_parse_error_indicator_crlf : + begin + msg_base <= 5'b10111; // Address of the cr,lf message. + incr_msg_offset <= rs232_tx_load; + if ((msg_offset == 1) && rs232_tx_load) begin + m1_next_state <= m1_parse_error_indicator; + reset_msg_offset <= 1; + end + else m1_next_state <= m1_parse_error_indicator_crlf; + end + + m1_parse_error_indicator : + begin + msg_base <= 5'b10011; // Address of the ? message. + incr_msg_offset <= rs232_tx_load; + if ((msg_offset == 0) && rs232_tx_load) begin + m1_next_state <= m1_send_prompt; + reset_msg_offset <= 1; + end + else m1_next_state <= m1_parse_error_indicator; + end + + m1_cmd_error_indicator : + begin + msg_base <= 5'b01100; // Address of 'C' + incr_msg_offset <= rs232_tx_load; + if ((msg_offset == 0) && rs232_tx_load) begin + m1_next_state <= m1_parse_error_indicator; + reset_msg_offset <= 1; + end + else m1_next_state <= m1_cmd_error_indicator; + end + + m1_adr_error_indicator : + begin + msg_base <= 5'b01010; // Address of 'A' + incr_msg_offset <= rs232_tx_load; + if ((msg_offset == 0) && rs232_tx_load) + begin + m1_next_state <= m1_parse_error_indicator; + reset_msg_offset <= 1; + end + else m1_next_state <= m1_adr_error_indicator; + end + + m1_dat_error_indicator : + begin + msg_base <= 5'b01101; // Address of 'D' + incr_msg_offset <= rs232_tx_load; + if ((msg_offset == 0) && rs232_tx_load) + begin + m1_next_state <= m1_parse_error_indicator; + reset_msg_offset <= 1; + end + else m1_next_state <= m1_dat_error_indicator; + end + + m1_qty_error_indicator : + begin + msg_base <= 5'b11100; // Address of 'Q' + incr_msg_offset <= rs232_tx_load; + if ((msg_offset == 0) && rs232_tx_load) + begin + m1_next_state <= m1_parse_error_indicator; + reset_msg_offset <= 1; + end + else m1_next_state <= m1_qty_error_indicator; + end + + // The following states are for parsing and executing the command. + + // This state takes care of leading whitespace before the command + m1_scan_command : + begin + rs232_echo <= 1; // Don't send message characters + reset_msg_offset <= 1; // This one reset should cover all of the + // parse/exec. states. With rs232_echo + // on, and no receive characters arrive, + // then the msg_offset will remain reset. + // This means the watchdog timer can take + // a long time, if need be, during exec. + // (NOTE: It might be better to disable + // the echoing of rx chars during these + // states.) + init_qty <= 1; // Set qty = 1 by default. That can be + // overridden later, if the command has + // a different qty field. + if (char_is_whitespace) begin + m1_next_state <= m1_scan_command; + incr_cmd_ptr <= 1; + end + else if (char_is_r) begin + m1_next_state <= m1_scan_adr_whitespace; + incr_cmd_ptr <= 1; + cmd_r <= 1; + end + else if (char_is_w) begin + m1_next_state <= m1_scan_adr_whitespace; + incr_cmd_ptr <= 1; + cmd_w <= 1; + end + else if (char_is_i) begin + m1_next_state <= m1_start_execution; + cmd_i <= 1; + end + else m1_next_state <= m1_cmd_error_indicator; + end + + // The only way to determine the end of a valid field is to find + // whitespace. Therefore, char_is_whitespace must be used as an exit + // condition from the "get_xxx_field" states. So, this state is used to + // scan through any leading whitespace prior to it. + m1_scan_adr_whitespace : + begin + rs232_echo <= 1; // Don't send message characters + if (char_is_whitespace) begin + m1_next_state <= m1_scan_adr_whitespace; + incr_cmd_ptr <= 1; + end + else if (char_is_enter) m1_next_state <= m1_start_execution; + else begin + m1_next_state <= m1_get_adr_field; + reset_adr <= 1; + end + end + + m1_get_adr_field : + begin + rs232_echo <= 1; // Don't send message characters + if (char_is_hex) begin + m1_next_state <= m1_get_adr_field; + store_adr <= 1; + incr_cmd_ptr <= 1; + end + else if (char_is_whitespace) begin // Normal exit + m1_next_state <= m1_scan_dat_whitespace; + end + else if (char_is_enter) m1_next_state <= m1_start_execution; + else m1_next_state <= m1_adr_error_indicator; + end + + m1_scan_dat_whitespace : + begin + rs232_echo <= 1; // Don't send message characters + // There is no DAT field for reads, so skip it. + if (command == `CMD_R) m1_next_state <= m1_scan_qty_whitespace; + else if (char_is_whitespace) begin + m1_next_state <= m1_scan_dat_whitespace; + incr_cmd_ptr <= 1; + end + else if (char_is_enter) m1_next_state <= m1_start_execution; + else begin + m1_next_state <= m1_get_dat_field; + reset_dat <= 1; + end + end + + m1_get_dat_field : + begin + rs232_echo <= 1; // Don't send message characters + if (char_is_hex) begin + m1_next_state <= m1_get_dat_field; + store_dat <= 1; + incr_cmd_ptr <= 1; + end + else if (char_is_whitespace) begin // Normal exit + m1_next_state <= m1_scan_qty_whitespace; + end + else if (char_is_enter) m1_next_state <= m1_start_execution; + else m1_next_state <= m1_dat_error_indicator; + end + + m1_scan_qty_whitespace : + begin + rs232_echo <= 1; // Don't send message characters + if (char_is_whitespace) begin + m1_next_state <= m1_scan_qty_whitespace; + incr_cmd_ptr <= 1; + end + else if (char_is_enter) m1_next_state <= m1_start_execution; + else begin + m1_next_state <= m1_get_qty_field; + reset_qty <= 1; + end + end + + m1_get_qty_field : + begin + rs232_echo <= 1; // Don't send message characters + if (char_is_hex) begin + m1_next_state <= m1_get_qty_field; + store_qty <= 1; + incr_cmd_ptr <= 1; + end + else if (char_is_whitespace || char_is_enter) begin // Normal exit + m1_next_state <= m1_start_execution; + end + else m1_next_state <= m1_qty_error_indicator; + end + + // This state seeks to obtain master_bg_i, which grants the bus to + // rs232_syscon. + m1_start_execution : + begin + rs232_echo <= 1; // Don't send message characters + reset_watchdog <= 1; // Reset the timer. + reset_adr_offset <= 1; // Reset the address offset. + reset_rd_field_count <= 1; // Reset the rd_field_count. + m1_next_state <= m1_request_bus; + end + + m1_request_bus : + begin + rs232_echo <= 1; // Don't send message characters + master_br_o <= 1; // Request the bus. + if (master_bg_i) m1_next_state <= m1_bus_granted; + else if (watchdog_timer_done) begin + m1_next_state <= m1_bg_error_indicator; + end + else m1_next_state <= m1_request_bus; + end + + m1_bus_granted : + begin + rs232_echo <= 1; // Don't send message characters + master_br_o <= 1; // Keep holding the bus + reset_watchdog <= 1; // Reset the timer. + if (adr_offset != qty_sr) m1_next_state <= m1_execute; + else m1_next_state <= m1_send_ok; + end + + // This single state does reset/write/read depending upon the value + // contained in "command"! + m1_execute : + begin + rs232_echo <= 1; // Don't send message characters + master_br_o <= 1; // Keep holding the bus + stb_l <= 1'b1; // Show that a bus cycle is happening + case (command) // Assert the appropriate signals + `CMD_I : rst_o <= 1; + `CMD_R : capture_dat <= ack_i; + `CMD_W : we_l <= 1; + default: ; + endcase + if (watchdog_timer_done || err_i) begin + m1_next_state <= m1_ack_error_indicator; + end + else if (ack_i + && (command == `CMD_R) + && (rd_field_count == 0) + ) + begin + m1_next_state <= m1_rd_send_adr_sr; // Leads to a new address line. + reset_rd_digit_count <= 1; + incr_adr_offset <= 1; // move to the next address + end + else if (ack_i && (command == `CMD_R)) begin + m1_next_state <= m1_rd_send_dat_sr; // Leads to a new data field. + reset_rd_digit_count <= 1; + reset_msg_offset <= 1; + incr_adr_offset <= 1; // move to the next address + end + else if (ack_i) begin + m1_next_state <= m1_bus_granted; // continue to the next cycle + incr_adr_offset <= 1; // move to the next address + end + else m1_next_state <= m1_execute; + end + + m1_rd_send_adr_sr : + begin + msg_base <= {1'b0,rd_adr_sr[`NIBBLE_SIZE*ADR_DIGITS_PP-1: + `NIBBLE_SIZE*(ADR_DIGITS_PP-1)]}; + if ((rd_digit_count == ADR_DIGITS_PP-1) && rs232_tx_load) begin + m1_next_state <= m1_rd_send_separator; + reset_msg_offset <= 1; + end + else if (rs232_tx_load) begin + shift_rd_adr <= 1; + incr_rd_digit_count <= 1; + m1_next_state <= m1_rd_send_adr_sr; + end + else m1_next_state <= m1_rd_send_adr_sr; + end + + m1_rd_send_separator : + begin + msg_base <= 5'b10000; // Address of the separator message + incr_msg_offset <= rs232_tx_load; + if ((msg_offset == 2) && rs232_tx_load) + begin + m1_next_state <= m1_rd_send_dat_sr; + reset_rd_digit_count <= 1; + reset_msg_offset <= 1; + end + else m1_next_state <= m1_rd_send_separator; + end + + m1_rd_send_dat_sr : + begin + msg_base <= {1'b0,dat_sr[`NIBBLE_SIZE*DAT_DIGITS_PP-1: + `NIBBLE_SIZE*(DAT_DIGITS_PP-1)]}; + if ( + (rd_digit_count == DAT_DIGITS_PP-1) + && (rd_field_count == RD_FIELDS_PP-1) + && rs232_tx_load + ) + begin + m1_next_state <= m1_rd_send_crlf; + reset_rd_field_count <= 1; + end + else if ((rd_digit_count == DAT_DIGITS_PP-1) && rs232_tx_load) begin + m1_next_state <= m1_rd_send_space; + incr_rd_field_count <= 1; + end + else if (rs232_tx_load) begin + store_dat <= 1; + incr_rd_digit_count <= 1; + m1_next_state <= m1_rd_send_dat_sr; + end + else m1_next_state <= m1_rd_send_dat_sr; + end + + m1_rd_send_space : + begin + msg_base <= 5'b10000; // Address of the space + incr_msg_offset <= rs232_tx_load; + if ((msg_offset == 0) && rs232_tx_load) begin + m1_next_state <= m1_bus_granted; + reset_msg_offset <= 1; + end + else m1_next_state <= m1_rd_send_space; + end + + m1_rd_send_crlf : + begin + msg_base <= 5'b10111; // Address of the cr/lf message + incr_msg_offset <= rs232_tx_load; + if ((msg_offset == 1) && rs232_tx_load) begin + m1_next_state <= m1_bus_granted; + reset_msg_offset <= 1; + end + else m1_next_state <= m1_rd_send_crlf; + end + + default : m1_next_state <= m1_initial_state; + endcase +end + + +// This is the counter for incrementing or loading the cmd_ptr +always @(posedge clk_i) +begin + if (reset_i || reset_cmd_ptr) cmd_ptr <= 0; + else if (decr_cmd_ptr) cmd_ptr <= cmd_ptr - 1; + else if (incr_cmd_ptr) cmd_ptr <= cmd_ptr + 1; +end + + +// This is the command buffer writing section +always @(posedge clk_i) +begin + if (rs232_echo && cmd_buffer_write) cmd_buffer[cmd_ptr] <= rs232_rx_char; +end +// This is the command buffer reading section +assign cmd_char = cmd_buffer[cmd_ptr]; +assign lc_cmd_char = (cmd_buffer[cmd_ptr] | 8'h20); // lowercase + + + +// These assigments are for detecting whether the cmd_char is +// anything of special interest. +assign char_is_enter = (cmd_char == 8'h0d); // enter +assign char_is_whitespace = ( + (cmd_char == 8'h20) // space + || (cmd_char == 8'h09) // tab + ); +assign char_is_num = ((cmd_char>=8'h30)&&(cmd_char<=8'h39)); +assign char_is_a_f = ((lc_cmd_char>=8'h61)&&(lc_cmd_char<=8'h66)); +assign char_is_hex = ( char_is_num || char_is_a_f ); +assign char_is_r = (lc_cmd_char == 8'h72); // "r" +assign char_is_w = (lc_cmd_char == 8'h77); // "w" +assign char_is_i = (lc_cmd_char == 8'h69); // "i" + +assign hex_digit = char_is_num?cmd_char[3:0]:(cmd_char[3:0]+9); + +// This is the command register. It stores the type of command to execute. +// This is so that the state machine can parse address, data and qty +// into "generic" storage locations, and then when it executes the command, +// it refers back to this register in order to determine what type of +// operation to perform. + +always @(posedge clk_i) +begin + if (reset_i) command <= `CMD_0; + else if (cmd_i) command <= `CMD_I; + else if (cmd_r) command <= `CMD_R; + else if (cmd_w) command <= `CMD_W; +end + +// This is the "nibble" shift register for the address which is sent character +// by character to the user. It is loaded each time the adr_offset is +// incremented, in order to save the previous address for use in printing +// to the user. +always @(posedge clk_i) +begin + if (reset_i || reset_adr) rd_adr_sr <= 0; + else if (incr_adr_offset) rd_adr_sr <= adr_ptr; + else if (shift_rd_adr) begin + rd_adr_sr[`NIBBLE_SIZE*ADR_DIGITS_PP-1:`NIBBLE_SIZE] <= + rd_adr_sr[`NIBBLE_SIZE*(ADR_DIGITS_PP-1)-1:0]; + rd_adr_sr[`NIBBLE_SIZE-1:0] <= {`NIBBLE_SIZE{1'b0}}; + end +end + +// These are the "nibble" shift registers. They handle loading the +// hexadecimal digits from the command line. +always @(posedge clk_i) +begin + if (reset_i || reset_adr) adr_sr <= 0; + else if (store_adr) begin + adr_sr[`NIBBLE_SIZE*ADR_DIGITS_PP-1:`NIBBLE_SIZE] <= + adr_sr[`NIBBLE_SIZE*(ADR_DIGITS_PP-1)-1:0]; + adr_sr[`NIBBLE_SIZE-1:0] <= hex_digit; + end +end + +always @(posedge clk_i) +begin + if (reset_i || reset_dat) dat_sr <= 0; + else if (capture_dat) dat_sr <= dat_io; + else if (store_dat) begin + dat_sr[`NIBBLE_SIZE*DAT_DIGITS_PP-1:`NIBBLE_SIZE] <= + dat_sr[`NIBBLE_SIZE*(DAT_DIGITS_PP-1)-1:0]; + dat_sr[`NIBBLE_SIZE-1:0] <= hex_digit; + end +end + +always @(posedge clk_i) +begin + if (reset_i || reset_qty) qty_sr <= 0; + else if (init_qty) qty_sr <= 1; + else if (store_qty) begin + qty_sr[`NIBBLE_SIZE*QTY_DIGITS_PP-1:`NIBBLE_SIZE] <= + qty_sr[`NIBBLE_SIZE*(QTY_DIGITS_PP-1)-1:0]; + qty_sr[`NIBBLE_SIZE-1:0] <= hex_digit; + end +end + +// This is the rd_digit_count counter. It is used for counting digits +// displayed of both the adr_sr and dat_sr, so it must be able to count up +// to the extent of the larger of the two... +always @(posedge clk_i) +begin + if (reset_i || reset_rd_digit_count) rd_digit_count <= 0; + else if (incr_rd_digit_count) rd_digit_count <= rd_digit_count + 1; +end + +// This is the rd_field_count counter. It is used for counting dat_sr fields +// displayed per line. +always @(posedge clk_i) +begin + if (reset_i || reset_rd_field_count) rd_field_count <= 0; + else if (incr_rd_field_count) rd_field_count <= rd_field_count + 1; +end + + +// This is the watchdog timer counter +// The watchdog timer is always "enabled" to operate. +always @(posedge clk_i) +begin + if (reset_i || reset_watchdog) watchdog_timer_count <= 0; + else if (~watchdog_timer_done) + watchdog_timer_count <= watchdog_timer_count + 1; +end +assign watchdog_timer_done = (watchdog_timer_count==WATCHDOG_TIMER_VALUE_PP); + + +endmodule + + Index: rs232_syscon/trunk/verilog_doc/rs232_syscon.doc =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: rs232_syscon/trunk/verilog_doc/rs232_syscon.doc =================================================================== --- rs232_syscon/trunk/verilog_doc/rs232_syscon.doc (nonexistent) +++ rs232_syscon/trunk/verilog_doc/rs232_syscon.doc (revision 8)
rs232_syscon/trunk/verilog_doc/rs232_syscon.doc Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.