Subversion Repositories svn.mios

Compare Revisions

Ignore whitespace Rev 1224 → Rev 1225

/playground/Antichambre/djo_mb_dr55/setup_DR55_easyPIC.hex
New file
0,0 → 1,253
:020000040000FA
:10300000DAEF19F0EFEF19F0F6EF19F0FBEF19F026
:10301000FCEF19F0FDEF19F00EEF1AF00FEF1AF0B8
:103020000CEF1AF00DEF1AF010EF1AF005EF1AF08E
:1030300002EF1AF0FEEF19F001EF1AF01200000093
:1030400012000000120000001200000009EF1AF048
:1030500008EF1AF012000000120000001200000039
:103060001200000012000000120000001200000018
:0C3070001200000012000000120000001E
:06308000FFFF000000004C
:02328000FFFF4E
:10330000036E0F0EC16ED00E921603500F0B921269
:1033100003B8928AF80E96160338E830070B961217
:103320001200036E8950D00B046E03500F0B041073
:1033300003B82009896E8D50F80B046E0338E8300D
:10334000070B04108D6E1200E8B41AD0E8B20CD04E
:10335000E8B005D003B0898003A08990120003B0C3
:10336000898203A089921200E8B005D003B0898455
:1033700003A08994120003B0898603A089961200E5
:10338000E8B20CD0E8B005D003B0898A03A0899ACE
:10339000120003B08D8003A08D901200E8B005D01C
:1033A00003B08D8203A08D92120003B08D8403A020
:1033B0008D94120004EC16F0116E106A46EC1AF0AF
:1033C000000E80EC19F070EC1EF0C40E036E090EB6
:1033D000046E000EBCEC16F0BEEC16F01200D4EC3D
:1033E0001BF08FEC1EF0CEEC1AF01200AFEC1BF0CD
:1033F0007BEC1EF0120012001200120074EF1CF0A1
:103400001200120046EF1DF012004DEF1DF01200E9
:1034100012002EEC1CF0120012001200120012001A
:1034200012001200180E086E096A0A6A180E086E59
:10343000F334F436F5360A360936F33607500A5EA9
:103440000650D8A0063C095ED8B0F380F3B003D094
:10345000092607500A26082EEBD7120064C1E8FFA0
:10346000100DF350E126F450E222120011EE00F0AC
:10347000F5D711EE02F0F2D711EE01F0EFD711EE11
:1034800002F0ECD711EE04F0E9D71200A96AAA6A9B
:1034900001EE00F0500E066EB0EC16F0EE6E062E49
:1034A000FBD70101B0EC16F0626FB0EC16F0746F50
:1034B000B0EC16F0766FB0EC16F0756FB0EC16F05D
:1034C000886F01011200F29E0101A96AAA6A01EE49
:1034D00000F0500E066EEE50B2EC16F0062EFBD742
:1034E00001016251B2EC16F001017451B2EC16F018
:1034F00001017651B2EC16F001017551B2EC16F0F3
:1035000001018851B2EC16F00101F28E120095D83B
:103510000450F60FD8B0F60E0A0FC8EC16F009D01A
:1035200009D00CD011D017D01CD021D026D02CD04F
:1035300031D0120003507F0BE76E2FD0C00EE7167C
:1035400003503F0BE71229D0080E036026D003502A
:10355000070BE76E22D0F00EE71603500F0BE712B1
:103560001CD00F0EE7160338F00BE71216D0FC0E36
:10357000E7160350030BE71210D0F30EE7160334DF
:10358000E8340C0BE71209D0CF0EE7160338300BE6
:10359000E71203D027EC1CF000D0120061A112004A
:1035A0006191066A0650ECEC1AF0076E045010E0C8
:1035B00007BE0ED062C1E8FFB00924EC16F0065039
:1035C00024EC16F0075024EC16F0080ECEEC16F0A2
:1035D000062A06AEE7D7120030D80450F60FD8B04E
:1035E000F60E0A0FC8EC16F009D009D00BD00DD09A
:1035F0000FD011D013D015D018D01AD01200E75028
:103600007F0B1200E7503F0B1200E750070B120030
:10361000E7500F0B1200E7380F0B1200E750030BB7
:103620001200E730E830030B1200E738030B1200FA
:10363000E738E830E830030B1200010111EE00F02A
:10364000D890E8345C0FF66EF76A360EF722090060
:10365000F5CF04F00900F5CFE1FF120000000000F3
:10366000000000000000000000000000000000005A
:10367000000000000000000000000000000000004A
:10368000000000000000000000000000000000003A
:10369000000000000000000000000000000000002A
:1036A000000000000000000000000000000000001A
:1036B000000000000000000000000000000000000A
:1036C00000000000000000000000010001100120C7
:1036D0000130014000000000000000000000010176
:1036E0000111012101310141000000000000000032
:1036F0000000017400000000000000000000000055
:103700000000000000000175000000000000000043
:103710000000000000000000000001760000000032
:10372000000000000388000000000000000000000E
:103730000000000000000000000000000000000089
:103740000000000000000000000000000000000079
:10375000000000000900000000000000120001014C
:10376000505105E0552F03D05007040E556F5151AD
:1037700005E0562F03D05107040E566F525105E055
:10378000572F03D05207040E576F535105E0582F9F
:1037900003D05307040E586F545105E0592F03D03E
:1037A0005407040E596F1200010121EE50F0646BB2
:1037B00064510EE174510CE011EE01F0E7502EE07F
:1037C0006451DB502BE142EC1AF0010EE76E26D07B
:1037D0003FEC1AF0E75022E06451DB501FE17451D6
:1037E00019E011EE01F0E75015E16451E804C6EC70
:1037F00016F0066E765105E0775106180BE1776BEF
:1038000005D0775106187717775104E111EE04F0CF
:10381000010EE76E42EC1AF0010EE76E42EC1AF070
:103820006451E7B009D0E7A20DD0E76AE8B4E82810
:10383000C6EC16F0891206D0E76AE8B4E828C4ECB2
:1038400016F08916642B040E6465B2D712000101CC
:103850008990899289948996899A12000B6E010148
:10386000F80E0B620CD08551866F856B835104086E
:103870008227836B8631E8303F0B846F1200FA0E8B
:103880000B6206D0210E8013826B030E836F05D06E
:10389000FB0E0B6204D0220E801380951200FC0EEA
:1038A0000B6203D0240E80131200F80E0B601BD0A5
:1038B0000BBE8C6B8C5104E0FF0F09E0FF0F0AE098
:1038C000F20E0B6202D08C2B0ED08C6B0CD00BC086
:1038D0008EF1F9D70BB08E8FD8900B308D6F826B35
:1038E000030E836F808712000338070BC8EC16F0B5
:1038F00083D006D0CAD0B9D0C6D0C6D0B5D01200B9
:1039000001010550D8B478D0646B625103180F0BD5
:103910006EE1645119E174516AE136EC1AF0E75036
:10392000041865E13CEC1AF021EE50F06451E7CF49
:10393000DBFFE7CF06F03FEC1AF006C0E7FF42ECF2
:103940001AF0E72AE72A53D036EC1AF0E7500418A9
:103950004EE13CEC1AF0E75009E021EE50F06451E2
:10396000E7CFDBFF3FEC1AF0E76804D03FEC1AF03A
:10397000E76A00D042EC1AF0020EE76E745137E0AD
:103980007551056434D011EE01F0E75004E011EEFA
:1039900001F0E75014E13CEC1AF0E75010E111EEB1
:1039A00002F0E76A6451E804C6EC16F0066E765140
:1039B00003E00650776F16D00650771313D021EE30
:1039C00050F0DF6E11EE02F0E7686451E804C6ECD7
:1039D00016F0066E765103E00650776F03D006505E
:1039E000771300D011EE04F0020EE76E00D0642BC6
:1039F000040E64658AD712000101646B62510318DA
:103A00000F0B2DE1645102E1745129E136EC1AF0FB
:103A1000E750041824E13FEC1AF0E75020E174511C
:103A200019E011EE01F0E75015E16451E804C6EC2D
:103A300016F0066E765105E0775106180BE1776BAC
:103A400005D0775106187717775104E111EE04F08D
:103A5000010EE76E42EC1AF0010EE76E00D0642B07
:103A6000040E6465CBD7120012000101045001E17D
:103A70001200625103180F0B05E105C003F004505A
:103A800087EC1AF012001200120012000101906B74
:103A9000916B926B2AEC16F017D001010350936FD3
:103AA000F80E9361120090BF1AD090510ED8936314
:103AB0000AD0902B9051070B060A06E1800E906FFA
:103AC00028EC16F001D0E2DF1200070BC8EC16F06C
:103AD000F00C000C000C7E0C4C0C1150120090BD30
:103AE00004D0908D93C192F1EFD793AF04D0F70E2D
:103AF0009363CCD7908B9251F00FD8B0F00E100F8B
:103B0000C8EC16F0C3D767D086D08CD073D068D0FD
:103B1000BDD7BCD7BBD7BAD7B9D7B8D7B7D7B6D721
:103B2000B5D787D090BB16D091B104D09181935175
:103B3000030BCAD791B304D0918393C196F1C4D734
:103B400091B507D09351956F96B1958FD8909631D6
:103B5000BBD7BAD791A59AD778D8060E24EC16F021
:103B60000101000E24EC16F00101D890963195BFAA
:103B7000010924EC16F0010195517F0B24EC16F09D
:103B800001019BD801017F0B24EC16F0010E70D8C7
:103B90007DD790BB1BD091B104D091819351030B81
:103BA00093D791B304D0918393C196F18DD791B5FA
:103BB00007D09351956F96B1958FD890963184D751
:103BC00061D80101952BD8B4962B7ED791A55ED7ED
:103BD0001FEC1EF05BD790BB01D076D7618156D722
:103BE00090BB03D093C195F16FD7010195C162F1EC
:103BF00006D84CD790BB01D067D701D847D725D876
:103C00000101925124EC16F0010162510F0B24ECDA
:103C100016F0010E2DD090BB02D064EC1DF036DC06
:103C20000ED834D790BB02D064EC1DF04CDC07D822
:103C30002DD790BB02D064EC1DF001D827D705D852
:103C40000F0E24EC16F0010E13D090AF07D012EC3B
:103C500016F0010B03E0050E066E01D0066A065051
:103C600034DF24EC16F0062A060E0662F8D712009E
:103C7000E8B005D012EC16F0010BD8B41200F70E24
:103C800024EF16F001019651FC0BD8A4120011EE9E
:103C900000F096319531E1269631010BE22695B17F
:103CA00006D0F00EE71693510F0BE71212000F0E1D
:103CB000E7169339F00BE712120001019651FC0B45
:103CC0000DE111EE00F096319531E1269631010BB0
:103CD000E226E75095B1E8380F0B1200000E1200F3
:103CE00093908A9093928A828A6B93948A848B6B46
:103CF00093968A8612000101852B840709E183517E
:103D0000030A06E0832B822B8631E8303F0B846F59
:103D10008A5101E08A078B5101E08B0712000101F3
:103D200080A102D0809123D8010180A302D080938A
:103D30002BD8010180A502D080952ED8010180A743
:103D400003D08097F6EC1EF00101825106E0820755
:103D500081A103D081B301D027D801018251CBE1E9
:103D60008A5101E18A828B5101E18A8412000101AA
:103D70008A92500E8A6F8A9601018181010181A188
:103D8000120001018181120001018A92500E8A6F96
:103D9000806B81818193120001018A94500E8B6F98
:103DA000806B81918A901200010181B103D0876BF1
:103DB000896B0FD087510CE188A58A80892B8851A7
:103DC000E8B4030B010FC6EC16F0FF0F876F03D0AA
:103DD000870788A58A90030E8961896B88A505D01D
:103DE000895102E18A8001D08A90120001018D512F
:083DF0008E1101E18A86120028
:0200000400F00A
:10000000340A0000000000000000000000000000B2
:10001000300A0000000000000000000000000000A6
:10002000320A000000000000000000000000000094
:10003000310A000000000000000000000000000085
:10004000330A000000000000000000000000000073
:1000500009007F64060000000000000000000000AE
:100060000000000000000000000000000000000090
:100070000000000000000000000000000000000080
:100080000000000000000000000000000000000070
:100090000000000000000000000000000000000060
:1000A0000000000000000000000000000000000050
:1000B0000000000000000000000000000000000040
:1000C0000000000000000000000000000000000030
:1000D0000000000000000000000000000000000020
:1000E0000000000000000000000000000000000010
:1000F0000000000000000000000000000000000000
:1001000000000000000000000000000000000000EF
:1001100000000000000000000000000000000000DF
:1001200000000000000000000000000000000000CF
:1001300000000000000000000000000000000000BF
:1001400000000000000000000000000000000000AF
:10015000000000000000000000000000000000009F
:10016000000000000000000000000000000000008F
:10017000000000000000000000000000000000007F
:10018000000000000000000000000000000000006F
:10019000000000000000000000000000000000005F
:1001A000000000000000000000000000000000004F
:1001B000000000000000000000000000000000003F
:1001C000000000000000000000000000000000002F
:1001D000000000000000000000000000000000001F
:1001E000000000000000000000000000000000000F
:1001F00000000000000000000000000000000000FF
:1002000000000000000000000000000000000000EE
:1002100000000000000000000000000000000000DE
:1002200000000000000000000000000000000000CE
:1002300000000000000000000000000000000000BE
:1002400000000000000000000000000000000000AE
:10025000000000000000000000000000000000009E
:10026000000000000000000000000000000000008E
:10027000000000000000000000000000000000007E
:10028000000000000000000000000000000000006E
:10029000000000000000000000000000000000005E
:1002A000000000000000000000000000000000004E
:1002B000000000000000000000000000000000003E
:1002C000000000000000000000000000000000002E
:1002D000000000000000000000000000000000001E
:1002E000000000000000000000000000000000000E
:1002F00000000000000000000000000000000000FE
:1003000000000000000000000000000000000000ED
:1003100000000000000000000000000000000000DD
:1003200000000000000000000000000000000000CD
:1003300000000000000000000000000000000000BD
:1003400000000000000000000000000000000000AD
:10035000000000000000000000000000000000009D
:10036000000000000000000000000000000000008D
:10037000000000000000000000000000000000007D
:10038000000000000000000000000000000000006D
:10039000000000000000000000000000000000005D
:1003A000000000000000000000000000000000004D
:1003B000000000000000000000000000000000003D
:1003C000000000000000000000000000000000002D
:1003D000000000000000000000000000000000001D
:1003E000000000000000000000000000000000000D
:1003F00000000000000000000000000000000000FD
:00000001FF
/playground/Antichambre/djo_mb_dr55/setup_DR55.lst
New file
0,0 → 1,6979
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 1
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00001 ;$Id: setup_808_default.asm 826 2009-10-04 10:42:59Z tk $
00002 LIST R=DEC
00003 ;
00004 ; Default setup File for DR55
00005 ;
00006 ; Detailed infos for customization can be found at http://www.ucapps.de/midibox_DR55_options.html
00007 ; and http://www.ucapps.de/midibox_808.html
00008 ;
00009
00010 ; Optional channels for configuration via CC (1-16, select 0 to disable)
0000 00011 #define DEFAULT_MIDI_CHANNEL 10
00012
00013
00014 ;; --------------------------------------------------------------------------
00015 ;;
00016 ;; SYNC Parameters
00017 ;;
00018 ;; --------------------------------------------------------------------------
00019 ;; define the pin which should be used as external Clock output here
00020 ;; this external pin is disabled with DEFAULT_EXT_CLK_LAT == 0
00021 ;; default setting: RD2
0000 00022 #define DEFAULT_EXT_CLK_TRIS TRISD
0000 00023 #define DEFAULT_EXT_CLK_LAT LATD
0000 00024 #define DEFAULT_EXT_CLK_PIN 2
00025 ;; define clock frequency
0000 00026 #define DEFAULT_EXT_CLK_DIV 6
00027 ;; Can be change by CC
00028 ;; EXT_CLK @ 48ppqn -> DEFAULT_EXT_CLK_DIV 0
00029 ;; EXT_CLK @ 24ppqn -> DEFAULT_EXT_CLK_DIV 1
00030 ;; EXT_CLK @ 12ppqn -> DEFAULT_EXT_CLK_DIV 2
00031 ;; EXT_CLK @ 6ppqn -> DEFAULT_EXT_CLK_DIV 3
00032 ;; EXT_CLK @ 16ppqn -> DEFAULT_EXT_CLK_DIV 4
00033 ;; EXT_CLK @ 8ppqn -> DEFAULT_EXT_CLK_DIV 5
00034 ;; EXT_CLK @ 4ppqn -> DEFAULT_EXT_CLK_DIV 6
00035 ;; EXT_CLK @ 2ppqn -> DEFAULT_EXT_CLK_DIV 7
00036 ;; MIDI clock (24ppqn)
00037
00038 ;; define the pin which should be used as external Start output here
00039 ;; this external pin is disabled with DEFAULT_EXT_START_LAT == 0
00040 ;; default setting: RC4
0000 00041 #define DEFAULT_EXT_START_TRIS TRISC
0000 00042 #define DEFAULT_EXT_START_LAT LATC
0000 00043 #define DEFAULT_EXT_START_PIN 4
00044
00045 ;; define the pin which should be used as external Stop output here
00046 ;; this external pin is disabled with DEFAULT_EXT_STOP_LAT == 0
00047 ;; default setting: RC5
0000 00048 #define DEFAULT_EXT_STOP_TRIS TRISC
0000 00049 #define DEFAULT_EXT_STOP_LAT LATC
0000 00050 #define DEFAULT_EXT_STOP_PIN 5
00051
00052 ;; define start and stop pulse duration, DEFAULT_EXT_PULS_DELAY*0,25ms, Default 20ms
0000 00053 #define DEFAULT_EXT_PULS_DELAY 80
00054
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 2
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00055 ;; define the pin which should be used as external Reset output here
00056 ;; to reset internal counter of DR55
00057 ;; this external pin is disabled with DEFAULT_EXT_STOP_LAT == 0
00058 ;; default setting: RD3
0000 00059 #define DEFAULT_EXT_RESET_TRIS TRISD
0000 00060 #define DEFAULT_EXT_RESET_LAT LATD
0000 00061 #define DEFAULT_EXT_RESET_PIN 3
00062 ;; reset option
0000 00063 #define DEFAULT_EXT_RESET_OPT 0
00064 ;; On Song Position Pointer Reset -> DEFAULT_EXT_RESET_OPT 0
00065 ;; On Stop, don't use Continue! -> DEFAULT_EXT_RESET_OPT 1
00066
00067
3082 00068 org 0x3082 ; never change the origin!
00069 ; ==========================================================================
00070 ; In this table all button functions are mapped to the DIN pins
00071 ;
00072 ; The function name can be found on the left, the shift register and pin
00073 ; number on the right side.
00074 ;
00075 ; SR/pin numbers:
00076 ; SR = 1 for the first DIN shift register
00077 ; SR = 2 for the second DIN shift register
00078 ; ...
00079 ; SR = 16 for the last DIN shift register
00080 ;
00081 ; Pin = 0 for the D0 input pin of the shift register
00082 ; Pin = 1 for the D1 input pin of the shift register
00083 ; ...
00084 ; Pin = 7 for the last input pin (D7) of the shift register
00085 ;
00086 ; Set the SR and pin number to 0 if a button function should not be used
00087 ;
00088 ; The table must end with DIN_ENTRY_EOT!
00089 ; ==========================================================================
00090
00091 DIN_ENTRY MACRO function, sr, pin
00092 dw function, (pin + 8*((sr-1)&0xff))
00093 ENDM
00094
00095 DIN_ENTRY_EOT MACRO
00096 dw 0x0000, 0x0000
00097 ENDM
00098
3082 00099 DR55_IO_TABLE_DIN
00100 ;; Function name SR# Pin#
00101 ;; NOTE: the pins of the 16 general purpose buttons are assigned above, search for DEFAULT_GP_DIN_SR_L (and _R)
00102 DIN_ENTRY_EOT
3082 0000 0000 M dw 0x0000, 0x0000
00103
00104
00105 ;; --------------------------------------------------------------------------
00106 ;; In this table DIN pins have to be assigned to rotary encoders for the
00107 ;; MIOS_ENC driver
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 3
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00108 ;;
00109 ;; up to 64 entries are provided, for MIDIbox DR55 17 entries are expected
00110 ;;
00111 ;; The table must be terminated with an ENC_EOT entry. Unused entries should
00112 ;; be filled with ENC_EOT
00113 ;;
00114 ;; ENC_ENTRY provides following parameters
00115 ;; o first parameter: number of shift register - 1, 2, 3, ... 16
00116 ;; o second parameter: number of pin; since two pins are necessary
00117 ;; for each encoder, an even number is expected: 0, 2, 4 or 6
00118 ;; o the third parameter contains the encoder mode:
00119 ;; either MIOS_ENC_MODE_NON_DETENTED
00120 ;; or MIOS_ENC_MODE_DETENTED1
00121 ;; or MIOS_ENC_MODE_DETENTED2 (prefered for Encoders from Voti and SmashTV!)
00122 ;; or MIOS_ENC_MODE_DETENTED3
00123 ;; or MIOS_ENC_MODE_DETENTED4
00124 ;; see also http://www.midibox.org/dokuwiki/doku.php?id=encoder_types
00125 ;;
00126 ;; Configuration Examples:
00127 ;; ENC_ENTRY 1, 0, MIOS_ENC_MODE_NON_DETENTED ; non-detented encoder at pin 0 and 1 of SR 1
00128 ;; ENC_ENTRY 1, 2, MIOS_ENC_MODE_DETENTED ; detented encoder at pin 2 and 3 of SR 1
00129 ;; ENC_ENTRY 9, 6, MIOS_ENC_MODE_NON_DETENTED ; non-detented encoder at pin 6 and 7 of SR 9
00130 ;; --------------------------------------------------------------------------
3280 00131 org 0x3280 ; never change the origin!
00132 ;; encoder entry structure
00133 ENC_ENTRY MACRO sr, din_0, mode
00134 dw (mode << 8) | (din_0 + 8*(sr-1))
00135 ENDM
00136 ENC_EOT MACRO
00137 dw 0xffff
00138 ENDM
00139
3280 00140 MIOS_ENC_PIN_TABLE
00141 ;; SR Pin Mode
00142 ;; don't remove this "end-of-table" entry!
00143 ENC_EOT
3280 FFFF M dw 0xffff
00144
00145
00146 ;; include the rest of the application
00147 #include "main.inc"
00001 ; $Id: main.inc 2011-07-12 bd (Antichambre)
00002 ; bdupeyron@gmail.com for Djo'Boss DR-55
00003 ;
00004 ; MIOS Application
00005 ; MIDIbox DR55 V1
00006 ;
00007 ; ==========================================================================
00008 ;
00009 ; Hardware related setup is located in setup_DR55.asm
00010 ; Please make your customisations there
00011 ;
00012 ; Copyright 1998-2006 Thorsten Klose (tk@midibox.org)
00013 ; Licensed for personal non-commercial use only.
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 4
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00014 ; All other rights reserved.
00015 ;
00016 ; ==========================================================================
00017
00018 ;; ---[ MIOS header file ]---
00019 #include <mios.h>
00001 ; $Id: mios.h 822 2009-09-17 18:39:53Z tk $
00002 ;
00003 ; MIOS Definitions file
00004 ;
00005 ; ==========================================================================
00006 ;
00007 ; Copyright 1998-2008 Thorsten Klose (tk@midibox.org)
00008 ; Licensed for personal non-commercial use only.
00009 ; All other rights reserved.
00010 ;
00011 ; ==========================================================================
00012
00013
00014 ;; ==========================================================================
00015 ;; Include basic defines which characterize the derivative to
00016 ;; simplify dependencies within MIOS source code
00017 ;; ==========================================================================
00018 #include <hw_flags.h>
00001
00002 #ifndef _HW_FLAGS_H
3282 00003 #define _HW_FLAGS_H
00004
00005 #ifdef __18F452
00006 #define PIC_DERIVATIVE_CODE_SIZE 0x08000
00007 #define PIC_DERIVATIVE_RAM_SIZE 0x600
00008 #define PIC_DERIVATIVE_EEPROM_SIZE 0x100
00009 #define PIC_DERIVATIVE_IRQ_WORKAROUND 0
00010 #define PIC_DERIVATIVE_NEW_ADC 0
00011 #define PIC_DERIVATIVE_CMCON_INIT 0
00012 #define PIC_DERIVATIVE_T08BIT_INVERTED 0
00013 #define PIC_DERIVATIVE_SET_LCD_4BIT 0
00014 #endif
00015
00016 #ifdef __18F4620
3282 00017 #define PIC_DERIVATIVE_CODE_SIZE 0x10000
3282 00018 #define PIC_DERIVATIVE_RAM_SIZE 0xf80
3282 00019 #define PIC_DERIVATIVE_EEPROM_SIZE 0x400
3282 00020 #define PIC_DERIVATIVE_IRQ_WORKAROUND 1
3282 00021 #define PIC_DERIVATIVE_NEW_ADC 1
3282 00022 #define PIC_DERIVATIVE_CMCON_INIT 1
3282 00023 #define PIC_DERIVATIVE_T08BIT_INVERTED 1
3282 00024 #define PIC_DERIVATIVE_SET_LCD_4BIT 0
00025 #endif
00026
00027 #ifdef __18F4520
00028 #define PIC_DERIVATIVE_CODE_SIZE 0x08000
00029 #define PIC_DERIVATIVE_RAM_SIZE 0x600
00030 #define PIC_DERIVATIVE_EEPROM_SIZE 0x100
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 5
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00031 #define PIC_DERIVATIVE_IRQ_WORKAROUND 1
00032 #define PIC_DERIVATIVE_NEW_ADC 1
00033 #define PIC_DERIVATIVE_CMCON_INIT 1
00034 #define PIC_DERIVATIVE_T08BIT_INVERTED 0
00035 #define PIC_DERIVATIVE_SET_LCD_4BIT 0
00036 #endif
00037
00038 #ifdef __18F4682
00039 #define PIC_DERIVATIVE_CODE_SIZE 0x14000
00040 #define PIC_DERIVATIVE_RAM_SIZE 0xd00
00041 #define PIC_DERIVATIVE_EEPROM_SIZE 0x400
00042 #define PIC_DERIVATIVE_IRQ_WORKAROUND 0
00043 #define PIC_DERIVATIVE_NEW_ADC 1
00044 #define PIC_DERIVATIVE_CMCON_INIT 1
00045 #define PIC_DERIVATIVE_T08BIT_INVERTED 0
00046 #define PIC_DERIVATIVE_SET_LCD_4BIT 1
00047 #endif
00048
00049 #ifdef __18F4685
00050 #define PIC_DERIVATIVE_CODE_SIZE 0x18000
00051 #define PIC_DERIVATIVE_RAM_SIZE 0xd00
00052 #define PIC_DERIVATIVE_EEPROM_SIZE 0x400
00053 #define PIC_DERIVATIVE_IRQ_WORKAROUND 0
00054 #define PIC_DERIVATIVE_NEW_ADC 1
00055 #define PIC_DERIVATIVE_CMCON_INIT 1
00056 #define PIC_DERIVATIVE_T08BIT_INVERTED 0
00057 #define PIC_DERIVATIVE_SET_LCD_4BIT 1
00058 #endif
00059
00060 #endif
00019
00020 ;; ==========================================================================
00021 ;; Assembler directives & device specific include file
00022 ;;
00023 ;; Natively supported devices are listed here.
00024 ;; ==========================================================================
00025
00026 #ifdef __18F452
00027 LIST R=DEC
00028 #include <p18f452.inc>
00029 #endif
00030
00031 #ifdef __18F4620
00032 LIST R=DEC
00033 #include <p18f4620.inc>
00001 LIST
00002
00003 ;==========================================================================
00004 ; MPASM PIC18F4620 processor include
00005 ;
00006 ; (c) Copyright 1999-2007 Microchip Technology, All rights reserved
00007 ;==========================================================================
00008
01331 LIST
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 6
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00034 #endif
00035
00036 #ifdef __18F4520
00037 LIST R=DEC
00038 #include <p18f4520.inc>
00039 #endif
00040
00041 #ifdef __18F4682
00042 LIST R=DEC
00043 #include <p18f4682.inc>
00044 #endif
00045
00046 #ifdef __18F4685
00047 LIST R=DEC
00048 #include <p18f4685.inc>
00049 #endif
00050
00051
00052 ;; ==========================================================================
00053 ;; General constants
00054 ;; ==========================================================================
00055
00056 ;; used by MIOS_MIDI_Interface*
00000000 00057 MIOS_MIDI_INTERFACE_COMMON EQU 0x00
00000001 00058 MIOS_MIDI_INTERFACE_TO_HOST EQU 0x01
00059
00060 ;; used by MIOS_MIDI_Merger*
00000000 00061 MIOS_MIDI_MERGER_DISABLED EQU 0x00
00000001 00062 MIOS_MIDI_MERGER_ENABLED EQU 0x01
00000002 00063 MIOS_MIDI_MERGER_MBLINK_EP EQU 0x02
00000003 00064 MIOS_MIDI_MERGER_MBLINK_FP EQU 0x03
00065
00066 ;; used by MIOS_ENC_PIN_TABLE
00067 #ifdef MIOS_OLD_ENCODER_MODES
00068 MIOS_ENC_MODE_NON_DETENTED EQU 0x00
00069 MIOS_ENC_MODE_DETENTED EQU 0x80
00070 MIOS_ENC_MODE_DETENTED1 EQU 0x80
00071 MIOS_ENC_MODE_DETENTED2 EQU 0x81
00072 MIOS_ENC_MODE_DETENTED3 EQU 0x82
00073 #else
00074 ;; new encoder modes: each bit of MIOS_ENC_MODE_xx tells, if an INC / DEC is
00075 ;; being triggered on the corresponding edge.
00076 ;; Bit 7 6 5 4
00077 ;; DEC <- <- <- <-
00078 ;; Pin A ___|-------|_______
00079 ;; Pin B _______|-------|___
00080 ;; INC -> -> -> ->
00081 ;; Bit 0 1 2 3
00082 ;; Ex.: Bit 76543210
00083 ;; DETENTED2 = 0b00100010 = 0x22
00084 ;; -> INC will be triggered on edge 1, DEC on edge 5
000000FF 00085 MIOS_ENC_MODE_NON_DETENTED EQU 0xff
000000AA 00086 MIOS_ENC_MODE_DETENTED EQU 0xaa
000000AA 00087 MIOS_ENC_MODE_DETENTED1 EQU 0xaa
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 7
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00000022 00088 MIOS_ENC_MODE_DETENTED2 EQU 0x22
00000088 00089 MIOS_ENC_MODE_DETENTED3 EQU 0x88
000000A5 00090 MIOS_ENC_MODE_DETENTED4 EQU 0xa5
0000005A 00091 MIOS_ENC_MODE_DETENTED5 EQU 0x5a
00092 #endif
00093
00094 ;; used by MIOS_ENC_Speed*
00000000 00095 MIOS_ENC_SPEED_SLOW EQU 0
00000001 00096 MIOS_ENC_SPEED_NORMAL EQU 1
00000002 00097 MIOS_ENC_SPEED_FAST EQU 2
00098
00099 ;; used by MIOS_LCD_Type*
00000000 00100 MIOS_LCD_TYPE_CLCD EQU 0x00
00000001 00101 MIOS_LCD_TYPE_GLCD0 EQU 0x01
00000002 00102 MIOS_LCD_TYPE_GLCD1 EQU 0x02
00000003 00103 MIOS_LCD_TYPE_GLCD2 EQU 0x03
00000004 00104 MIOS_LCD_TYPE_GLCD3 EQU 0x04
00000005 00105 MIOS_LCD_TYPE_GLCD4 EQU 0x05
00000006 00106 MIOS_LCD_TYPE_MLCD EQU 0x06
00000007 00107 MIOS_LCD_TYPE_GLCD_CUSTOM EQU 0x07
00108
00109 ;; location of default 5x8 font for graphical displays
00007CFC 00110 MIOS_GLCD_FONT EQU 0x7cfc
00111
00112 ;; general config flags (never overwrite this flags directly!!!)
00000000 00113 MIOS_BOX_CFG0_LCD_TYPE0 EQU 0 ; selects LCD type, bit 0
00000001 00114 MIOS_BOX_CFG0_LCD_TYPE1 EQU 1 ; selects LCD type, bit 1
00000002 00115 MIOS_BOX_CFG0_LCD_TYPE2 EQU 2 ; selects LCD type, bit 2
00000003 00116 MIOS_BOX_CFG0_USE_GLCD EQU 3 ; if 1, graphical LCD is connected
00000004 00117 MIOS_BOX_CFG0_MERGER EQU 4 ; if 1, MIDI merger is enabled
00000005 00118 MIOS_BOX_CFG0_MBLINK EQU 5 ; if 1, MIDIbox Link is enabled
00000006 00119 MIOS_BOX_CFG0_TO_HOST EQU 6 ; if 1, MIDI interface will run with 38400 baud instead of 31250
00000007 00120 MIOS_BOX_CFG0_20MHz EQU 7 ; if 1, it is assumed that box is running with 20 MHz, else with 40 MHz
00121
00000000 00122 MIOS_BOX_CFG1_BS_A0 EQU 0 ; A0 of BankStick (never change the bit position)
00000001 00123 MIOS_BOX_CFG1_BS_A1 EQU 1 ; A1 of BankStick (never change the bit position)
00000002 00124 MIOS_BOX_CFG1_BS_A2 EQU 2 ; A2 of BankStick (never change the bit position)
00000003 00125 MIOS_BOX_CFG1_BS_DIS_VERIFY EQU 3 ; if 1, writes to the BankStick will not be verified
00000004 00126 MIOS_BOX_CFG1_IIC_STRETCH_CLK EQU 4 ; if 1, IIC clock stretching enabled
00127
00128 ;; general status flags (never overwrite this flags directly!!!)
00000000 00129 MIOS_BOX_STAT_BS_AVAILABLE EQU 0 ; if 1, BankStick is available
00000001 00130 MIOS_BOX_STAT_MBLINK_TUNNEL_PASS EQU 1 ; if 1, a MBLinked event will be tunnled
00000002 00131 MIOS_BOX_STAT_SUSPEND_ALL EQU 2 ; if 1, all system and user tasks are suspended
00000003 00132 MIOS_BOX_STAT_SUSPEND_USER EQU 3 ; if 1, all user tasks are suspended
00000004 00133 MIOS_BOX_STAT_AUTOREPEAT EQU 4 ; if 1, start the auto-repeat handler
00000005 00134 MIOS_BOX_STAT_MLCD_TRANSFER EQU 5 ; if 1, a transfer to the MLCD has been started
00000006 00135 MIOS_BOX_STAT_FERR EQU 6 ; if 1, a frame error happened during MIDI receive
00136
00137 ;; ==========================================================================
00138 ;; MIOS Special Function Registers
00139 ;; ==========================================================================
00140
00000000 00141 MIOS_BOX_CFG0 EQU 0x000
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 8
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00000001 00142 MIOS_BOX_CFG1 EQU 0x001
00000002 00143 MIOS_BOX_STAT EQU 0x002
00000003 00144 MIOS_PARAMETER1 EQU 0x003
00000004 00145 MIOS_PARAMETER2 EQU 0x004
00000005 00146 MIOS_PARAMETER3 EQU 0x005
00147
00148 ;; ==========================================================================
00149 ;; temporary registers for main programs
00150 ;; ==========================================================================
00000006 00151 TMP1 EQU 0x006
00000007 00152 TMP2 EQU 0x007
00000008 00153 TMP3 EQU 0x008
00000009 00154 TMP4 EQU 0x009
0000000A 00155 TMP5 EQU 0x00a
00156
00157 ;; ==========================================================================
00158 ;; temporary registers for IRQs
00159 ;; ==========================================================================
0000000B 00160 IRQ_TMP1 EQU 0x00b
0000000C 00161 IRQ_TMP2 EQU 0x00c
0000000D 00162 IRQ_TMP3 EQU 0x00d
0000000E 00163 IRQ_TMP4 EQU 0x00e
0000000F 00164 IRQ_TMP5 EQU 0x00f
00165
00166 ;; ==========================================================================
00167 ;; free memory space for user application:
00168 ;; ==========================================================================
00169 ;; 0x010-0x37f
00170
00171 ;; ==========================================================================
00172 ;; MIOS System Registers -- not defined here --
00173 ;; never use these memory locations!
00174 ;; ==========================================================================
00175 ;; 0x380-0x6ff
00176
00177 ;; ==========================================================================
00178 ;; MIOS System Registers for custom LCD driver
00179 ;; ==========================================================================
00000570 00180 MIOS_GLCD_BUFFER EQU 0x570 ; note: the buffer must be located at ...0-...7
00000578 00181 MIOS_LCD_OPTION1 EQU 0x578 ; contains the first LCD option given by MIOS_LCD_TypeSet
00000579 00182 MIOS_LCD_OPTION2 EQU 0x579 ; contains the second LCD option given by MIOS_LCD_TypeSet
0000057A 00183 MIOS_LCD_CURSOR_POS EQU 0x57a ; the current cursor pos of characters (GLCD: multiplied by width)
0000057B 00184 MIOS_GLCD_GCURSOR_X EQU 0x57b ; for GLCDs: the current X position of graphical cursor
0000057C 00185 MIOS_GLCD_GCURSOR_Y EQU 0x57c ; for GLCDs: the current Y position of graphical cursor
0000057D 00186 MIOS_GLCD_FONT_WIDTH EQU 0x57d ; for GLCDs: the fontwidth given by MIOS_GLCD_FontInit
0000057E 00187 MIOS_GLCD_FONT_HEIGHT EQU 0x57e ; for GLCDs: the fontheight given by MIOS_GLCD_FontInit
0000057F 00188 MIOS_GLCD_FONT_X0 EQU 0x57f ; for GLCDs: the first byte within a char entry
00000580 00189 MIOS_GLCD_FONT_OFFSET EQU 0x580 ; for GLCDs: the byte offset between the characters
00000581 00190 MIOS_GLCD_FONT_PTRL EQU 0x581 ; for GLCDs: pointer to the character table, low-byte
00000582 00191 MIOS_GLCD_FONT_PTRH EQU 0x582 ; for GLCDs: pointer to the character table, high-byte
00000583 00192 MIOS_LCD_TIMEOUT0 EQU 0x583 ; can be used for timeout loops
00000584 00193 MIOS_LCD_TIMEOUT1 EQU 0x584 ; can be used for timeout loops
00000585 00194 MIOS_GLCD_TMP1 EQU 0x585 ; can be used as temporary buffer
00000586 00195 MIOS_GLCD_TMP2 EQU 0x586 ; can be used as temporary buffer
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 9
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00000587 00196 MIOS_GLCD_TMP3 EQU 0x587 ; can be used as temporary buffer
00000588 00197 MIOS_GLCD_TMP4 EQU 0x588 ; can be used as temporary buffer
00000589 00198 MIOS_LCD_Y0_OFFSET EQU 0x589 ; Y0 offset of LCD
0000058A 00199 MIOS_LCD_Y1_OFFSET EQU 0x58a ; Y1 offset of LCD
0000058B 00200 MIOS_LCD_Y2_OFFSET EQU 0x58b ; Y2 offset of LCD
0000058C 00201 MIOS_LCD_Y3_OFFSET EQU 0x58c ; Y3 offset of LCD
0000058D 00202 MIOS_LCD_CURSOR_POS_REAL EQU 0x58d ; unmapped cursor position which has been set with MIOS_LCD_CursorSet
0000058E 00203 MIOS_GLCD_FONT_PTRU EQU 0x58e ; for GLCDs: pointer to the character table, upper-byte (>64k flash derivatives only)
00020
00021 ;; ---[ useful macros ]---
00022 #include <macros.h>
00001 ; $Id: macros.h 49 2008-01-30 21:47:31Z tk $
00002 ;
00003 ; Macro Definitions
00004 ;
00005 ; ==========================================================================
00006 ;
00007 ; Copyright 1998-2006 Thorsten Klose (tk@midibox.org)
00008 ; Licensed for personal non-commercial use only.
00009 ; All other rights reserved.
00010 ;
00011 ; ==========================================================================
00012
00013 BRA_IFSET MACRO reg, bit, reg_a, label
00014 btfsc reg, bit, reg_a
00015 bra label
00016 ENDM
00017
00018
00019 BRA_IFCLR MACRO reg, bit, reg_a, label
00020 btfss reg, bit, reg_a
00021 bra label
00022 ENDM
00023
00024 GOTO_IFSET MACRO reg, bit, reg_a, label
00025 btfsc reg, bit, reg_a
00026 goto label
00027 ENDM
00028
00029
00030 GOTO_IFCLR MACRO reg, bit, reg_a, label
00031 btfss reg, bit, reg_a
00032 goto label
00033 ENDM
00034
00035 CALL_IFSET MACRO reg, bit, reg_a, label
00036 btfsc reg, bit, reg_a
00037 call label
00038 ENDM
00039
00040
00041 CALL_IFCLR MACRO reg, bit, reg_a, label
00042 btfss reg, bit, reg_a
00043 call label
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 10
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00044 ENDM
00045
00046 RCALL_IFSET MACRO reg, bit, reg_a, label
00047 btfsc reg, bit, reg_a
00048 rcall label
00049 ENDM
00050
00051
00052 RCALL_IFCLR MACRO reg, bit, reg_a, label
00053 btfss reg, bit, reg_a
00054 rcall label
00055 ENDM
00056
00057 ;; ==========================================================================
00058
00059 IRQ_DISABLE MACRO
00060 bcf INTCON, GIE
00061 ENDM
00062
00063 IRQ_ENABLE MACRO
00064 bsf INTCON, GIE
00065 ENDM
00066
00067 ;; ==========================================================================
00068
00069 TABLE_ADDR_FULL MACRO addr
00070 movlw LOW(addr) ; store Lo Byte
00071 movwf TBLPTRL
00072 movlw HIGH(addr) ; store Hi Byte
00073 movwf TBLPTRH
00074 movlw UPPER(addr) ; store upper Byte
00075 movwf TBLPTRU
00076 ENDM
00077
00078 TABLE_ADDR MACRO addr
00079 movlw LOW(addr) ; store Lo Byte
00080 movwf TBLPTRL
00081 movlw HIGH(addr) ; store Hi Byte
00082 movwf TBLPTRH
00083 #if PIC_DERIVATIVE_CODE_SIZE > 0x10000
00084 movlw UPPER(addr) ; store Upper Byte
00085 movwf TBLPTRU
00086 #endif
00087 ENDM
00088
00089 TABLE_H MACRO addr
00090 movlw HIGH(addr) ; store Hi Byte
00091 movwf TBLPTRH
00092 ENDM
00093
00094 TABLE_L MACRO addr
00095 movlw LOW(addr) ; store Lo Byte
00096 movwf TBLPTRL
00097 ENDM
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 11
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00098
00099 TABLE_ADD_W MACRO
00100 addwf TBLPTRL, F
00101 movlw 0x00
00102 addwfc TBLPTRH, F
00103 #if PIC_DERIVATIVE_CODE_SIZE > 0x10000
00104 movlw 0x00
00105 addwfc TBLPTRU, F
00106 #endif
00107 ENDM
00108
00109 TABLE_ADDR_MUL_W MACRO addr, multiplicator
00110 mullw multiplicator
00111 movlw LOW(addr)
00112 addwf PRODL, W
00113 movwf TBLPTRL
00114 movlw HIGH(addr)
00115 addwfc PRODH, W
00116 movwf TBLPTRH
00117 #if PIC_DERIVATIVE_CODE_SIZE > 0x10000
00118 clrf TBLPTRU
00119 movlw UPPER(addr)
00120 addwfc TBLPTRU, F
00121 #endif
00122 ENDM
00123
00124 ;; ==========================================================================
00125
00126 JUMPTABLE_2BYTES MACRO max_value
00127 addlw -(max_value) ; ensure that jump index is not greater than (max_value-1)
00128 skpnc
00129 movlw -(max_value)
00130 addlw max_value
00131 call MIOS_HLP_GetIndex_2bytes
00132 ENDM
00133
00134 JUMPTABLE_2BYTES_UNSECURE MACRO
00135 call MIOS_HLP_GetIndex_2bytes
00136 ENDM
00137
00138 JUMPTABLE_4BYTES MACRO max_value
00139 addlw -(max_value) ; ensure that jump index is not greater than (max_value-1)
00140 skpnc
00141 return
00142 addlw (max_value)
00143 call MIOS_HLP_GetIndex_4bytes
00144 ENDM
00145
00146 JUMPTABLE_4BYTES_UNSECURE MACRO
00147 call MIOS_HLP_GetIndex_4bytes
00148 ENDM
00149
00150 ;; ==========================================================================
00151
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 12
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00152 TWOBYTE_ENTRY MACRO low_byte, high_byte
00153 dw (high_byte << 8) | (low_byte)
00154 ENDM
00155
00156 ;; ==========================================================================
00157
3282 00158 #define skpnz btfsc STATUS, Z
3282 00159 #define skpz btfss STATUS, Z
3282 00160 #define skpndc btfsc STATUS, DC
3282 00161 #define skpdc btfss STATUS, DC
3282 00162 #define skpnc btfsc STATUS, C
3282 00163 #define skpc btfss STATUS, C
3282 00164 #define clrc bcf STATUS, C
3282 00165 #define setc bsf STATUS, C
3282 00166 #define clrz bcf STATUS, Z
3282 00167 #define setz bsf STATUS, Z
3282 00168 #define rrf rrcf
3282 00169 #define rlf rlcf
00170
00171 rgoto MACRO label
00172 bra label
00173 ENDM
00174
00175 SET_BSR MACRO reg
00176 movlb HIGH(reg)
00177 ENDM
00178
00179 ;; ==========================================================================
00180
00181 FONT_ENTRY MACRO width, height, x0, char_offset
00182 dw ((height) << 8) | (width), ((char_offset) << 8) | (x0)
00183 ENDM
00184
00185 ;; ==========================================================================
00186
00187 STRING MACRO length, pos, str
00188 da ((length) << 8) | (pos), str
00189 ENDM
00190
00191 ;; ==========================================================================
00023
00024 ;; ---[ vectors to MIOS functions (never change!) ]---
00025 #include <mios_vectors.inc>
00001 ; $Id: mios_vectors.inc 49 2008-01-30 21:47:31Z tk $
00002
00002C00 00003 MIOS_MIDI_BeginStream EQU 0x2c00
00002C04 00004 MIOS_MIDI_DeviceIDAutoSet EQU 0x2c04
00002C08 00005 MIOS_MIDI_DeviceIDGet EQU 0x2c08
00002C0C 00006 MIOS_MIDI_DeviceIDSet EQU 0x2c0c
00002C10 00007 MIOS_MIDI_EndStream EQU 0x2c10
00002C14 00008 MIOS_MIDI_Init EQU 0x2c14
00002C18 00009 MIOS_MIDI_InterfaceAutoSet EQU 0x2c18
00002C1C 00010 MIOS_MIDI_InterfaceGet EQU 0x2c1c
00002C20 00011 MIOS_MIDI_InterfaceSet EQU 0x2c20
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 13
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00002C24 00012 MIOS_MIDI_MergerGet EQU 0x2c24
00002C28 00013 MIOS_MIDI_MergerSet EQU 0x2c28
00002C2C 00014 MIOS_MIDI_RxBufferFree EQU 0x2c2c
00002C30 00015 MIOS_MIDI_RxBufferGet EQU 0x2c30
00002C34 00016 MIOS_MIDI_RxBufferPut EQU 0x2c34
00002C38 00017 MIOS_MIDI_RxBufferUsed EQU 0x2c38
00002C3C 00018 MIOS_MIDI_TxBufferFlush EQU 0x2c3c
00002C40 00019 MIOS_MIDI_TxBufferFree EQU 0x2c40
00002C44 00020 MIOS_MIDI_TxBufferGet EQU 0x2c44
00002C48 00021 MIOS_MIDI_TxBufferPut EQU 0x2c48
00002C4C 00022 MIOS_MIDI_TxBufferUsed EQU 0x2c4c
00002C50 00023 MIOS_MPROC_MergerDisable EQU 0x2c50
00002C54 00024 MIOS_MPROC_MergerEnable EQU 0x2c54
00002C58 00025 MIOS_MPROC_MergerGet EQU 0x2c58
00002C5C 00026 MIOS_AIN_DeadbandGet EQU 0x2c5c
00002C60 00027 MIOS_AIN_DeadbandSet EQU 0x2c60
00002C64 00028 MIOS_AIN_Muxed EQU 0x2c64
00002C68 00029 MIOS_AIN_NumberGet EQU 0x2c68
00002C6C 00030 MIOS_AIN_NumberSet EQU 0x2c6c
00002C70 00031 MIOS_AIN_Pin7bitGet EQU 0x2c70
00002C74 00032 MIOS_AIN_PinGet EQU 0x2c74
00002C78 00033 MIOS_AIN_PinLSBGet EQU 0x2c78
00002C7C 00034 MIOS_AIN_PinMSBGet EQU 0x2c7c
00002C80 00035 MIOS_AIN_UnMuxed EQU 0x2c80
00002C84 00036 MIOS_MF_PWM_DutyCycleDownGet EQU 0x2c84
00002C88 00037 MIOS_MF_PWM_DutyCycleDownSet EQU 0x2c88
00002C8C 00038 MIOS_MF_PWM_DutyCycleUpGet EQU 0x2c8c
00002C90 00039 MIOS_MF_PWM_DutyCycleUpSet EQU 0x2c90
00002C94 00040 MIOS_MF_DeadbandGet EQU 0x2c94
00002C98 00041 MIOS_MF_DeadbandSet EQU 0x2c98
00002C9C 00042 MIOS_MF_Disable EQU 0x2c9c
00002CA0 00043 MIOS_MF_Enable EQU 0x2ca0
00002CA4 00044 MIOS_MF_FaderMove EQU 0x2ca4
00002CA8 00045 MIOS_MF_SuspendDisable EQU 0x2ca8
00002CAC 00046 MIOS_MF_SuspendEnable EQU 0x2cac
00002CB0 00047 MIOS_MF_SuspendGet EQU 0x2cb0
00002CB4 00048 MIOS_DIN_PinGet EQU 0x2cb4
00002CB8 00049 MIOS_DIN_SRGet EQU 0x2cb8
00002CBC 00050 MIOS_DOUT_PinGet EQU 0x2cbc
00002CC0 00051 MIOS_DOUT_PinSet EQU 0x2cc0
00002CC4 00052 MIOS_DOUT_PinSet0 EQU 0x2cc4
00002CC8 00053 MIOS_DOUT_PinSet1 EQU 0x2cc8
00002CCC 00054 MIOS_DOUT_SRGet EQU 0x2ccc
00002CD0 00055 MIOS_DOUT_SRSet EQU 0x2cd0
00002CD4 00056 MIOS_ENC_Abs7bitAdd EQU 0x2cd4
00002CD8 00057 MIOS_ENC_Abs7bitGet EQU 0x2cd8
00002CDC 00058 MIOS_ENC_Abs7bitSet EQU 0x2cdc
00002CE0 00059 MIOS_ENC_NumberGet EQU 0x2ce0
00002CE4 00060 MIOS_ENC_SpeedGet EQU 0x2ce4
00002CE8 00061 MIOS_ENC_SpeedSet EQU 0x2ce8
00002CEC 00062 MIOS_SRIO_NumberGet EQU 0x2cec
00002CF0 00063 MIOS_SRIO_NumberSet EQU 0x2cf0
00002CF4 00064 MIOS_SRIO_TS_SensitivityGet EQU 0x2cf4
00002CF8 00065 MIOS_SRIO_TS_SensitivitySet EQU 0x2cf8
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 14
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00002CFC 00066 MIOS_SRIO_UpdateFrqGet EQU 0x2cfc
00002D00 00067 MIOS_SRIO_UpdateFrqSet EQU 0x2d00
00002D04 00068 MIOS_LCD_Clear EQU 0x2d04
00002D08 00069 MIOS_LCD_Cmd EQU 0x2d08
00002D0C 00070 MIOS_LCD_CursorGet EQU 0x2d0c
00002D10 00071 MIOS_LCD_CursorSet EQU 0x2d10
00002D14 00072 MIOS_LCD_Data EQU 0x2d14
00002D18 00073 MIOS_LCD_Init EQU 0x2d18
00002D1C 00074 MIOS_LCD_PrintBCD1 EQU 0x2d1c
00002D20 00075 MIOS_LCD_PrintBCD2 EQU 0x2d20
00002D24 00076 MIOS_LCD_PrintBCD3 EQU 0x2d24
00002D28 00077 MIOS_LCD_PrintChar EQU 0x2d28
00002D2C 00078 MIOS_LCD_PrintHex1 EQU 0x2d2c
00002D30 00079 MIOS_LCD_PrintHex2 EQU 0x2d30
00002D34 00080 MIOS_LCD_PrintMessage EQU 0x2d34
00002D38 00081 MIOS_LCD_PrintPreconfString EQU 0x2d38
00002D3C 00082 MIOS_LCD_PrintString EQU 0x2d3c
00002D40 00083 MIOS_LCD_TypeAutoSet EQU 0x2d40
00002D44 00084 MIOS_LCD_TypeGet EQU 0x2d44
00002D48 00085 MIOS_LCD_TypeSet EQU 0x2d48
00002D4C 00086 MIOS_LCD_YAddressGet EQU 0x2d4c
00002D50 00087 MIOS_LCD_YAddressSet EQU 0x2d50
00002D54 00088 MIOS_GLCD_FontInit EQU 0x2d54
00002D58 00089 MIOS_GLCD_GCursorGet EQU 0x2d58
00002D5C 00090 MIOS_GLCD_GCursorSet EQU 0x2d5c
00002D60 00091 MIOS_EEPROM_Read EQU 0x2d60
00002D64 00092 MIOS_EEPROM_Write EQU 0x2d64
00002D68 00093 MIOS_FLASH_Read EQU 0x2d68
00002D6C 00094 MIOS_FLASH_Write EQU 0x2d6c
00002D70 00095 MIOS_BANKSTICK_Read EQU 0x2d70
00002D74 00096 MIOS_BANKSTICK_Write EQU 0x2d74
00002D78 00097 MIOS_TIMER_Init EQU 0x2d78
00002D7C 00098 MIOS_TIMER_Start EQU 0x2d7c
00002D80 00099 MIOS_TIMER_Stop EQU 0x2d80
00002D84 00100 MIOS_HLP_AddressFromTable EQU 0x2d84
00002D88 00101 MIOS_HLP_GetBitANDMask EQU 0x2d88
00002D8C 00102 MIOS_HLP_GetBitORMask EQU 0x2d8c
00002D90 00103 MIOS_HLP_GetIndex_2bytes EQU 0x2d90
00002D94 00104 MIOS_HLP_GetIndex_4bytes EQU 0x2d94
00002D98 00105 MIOS_HLP_IndirectJump EQU 0x2d98
00002D9C 00106 MIOS_Delay EQU 0x2d9c
00002DA0 00107 MIOS_GPCounterGet EQU 0x2da0
00002DA4 00108 MIOS_Reset EQU 0x2da4
00002DA8 00109 MIOS_SystemResume EQU 0x2da8
00002DAC 00110 MIOS_SystemSuspend EQU 0x2dac
00002DB0 00111 MIOS_UserResume EQU 0x2db0
00002DB4 00112 MIOS_UserSuspend EQU 0x2db4
00002DB8 00113 MIOS_HLP_16bitAddSaturate EQU 0x2db8
00002DBC 00114 MIOS_DIN_PinAutoRepeatEnable EQU 0x2dbc
00002DC0 00115 MIOS_DIN_PinAutoRepeatDisable EQU 0x2dc0
00002DC4 00116 MIOS_DIN_PinAutoRepeatGet EQU 0x2dc4
00002DC8 00117 MIOS_CLCD_SpecialCharInit EQU 0x2dc8
00002DCC 00118 MIOS_CLCD_SpecialCharsInit EQU 0x2dcc
00002DD0 00119 MIOS_AIN_DynamicPrioSet EQU 0x2dd0
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 15
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00002DD4 00120 MIOS_AIN_DynamicPrioGet EQU 0x2dd4
00002DD8 00121 MIOS_AIN_LastPinsGet EQU 0x2dd8
00002DDC 00122 MIOS_BANKSTICK_CtrlSet EQU 0x2ddc
00002DE0 00123 MIOS_BANKSTICK_CtrlGet EQU 0x2de0
00002DE4 00124 MIOS_BANKSTICK_WritePage EQU 0x2de4
00002DE8 00125 MIOS_HLP_Dec2BCD EQU 0x2de8
00002DEC 00126 MIOS_LCD_PrintBCD4 EQU 0x2dec
00002DF0 00127 MIOS_LCD_PrintBCD5 EQU 0x2df0
00002DF4 00128 MIOS_LCD_MessageStart EQU 0x2df4
00002DF8 00129 MIOS_LCD_MessageStop EQU 0x2df8
00002DFC 00130 MIOS_MF_PWM_PeriodGet EQU 0x2dfc
00002E00 00131 MIOS_MF_PWM_PeriodSet EQU 0x2e00
00002E04 00132 MIOS_IIC_Start EQU 0x2e04
00002E08 00133 MIOS_IIC_Stop EQU 0x2e08
00002E0C 00134 MIOS_IIC_ByteSend EQU 0x2e0c
00002E10 00135 MIOS_IIC_ByteReceive EQU 0x2e10
00002E14 00136 MIOS_IIC_AckSend EQU 0x2e14
00002E18 00137 MIOS_IIC_NakSend EQU 0x2e18
00002E1C 00138 MIOS_IIC_CtrlSet EQU 0x2e1c
00002E20 00139 MIOS_IIC_CtrlGet EQU 0x2e20
00002E24 00140 MIOS_SRIO_DebounceSet EQU 0x2e24
00002E28 00141 MIOS_SRIO_DebounceGet EQU 0x2e28
00002E2C 00142 MIOS_MF_TouchDetectionReset EQU 0x2e2c
00002E30 00143 MIOS_BANKSTICK_ReadPage EQU 0x2e30
00002E34 00144 MIOS_EEPROM_ReadPage EQU 0x2e34
00002E38 00145 MIOS_EEPROM_WritePage EQU 0x2e38
00002E3C 00146 MIOS_TIMER_ReInit EQU 0x2e3c
00002E40 00147 MIOS_RESERVED_144 EQU 0x2e40
00002E44 00148 MIOS_RESERVED_145 EQU 0x2e44
00002E48 00149 MIOS_RESERVED_146 EQU 0x2e48
00002E4C 00150 MIOS_RESERVED_147 EQU 0x2e4c
00002E50 00151 MIOS_RESERVED_148 EQU 0x2e50
00002E54 00152 MIOS_RESERVED_149 EQU 0x2e54
00002E58 00153 MIOS_RESERVED_150 EQU 0x2e58
00002E5C 00154 MIOS_RESERVED_151 EQU 0x2e5c
00002E60 00155 MIOS_RESERVED_152 EQU 0x2e60
00002E64 00156 MIOS_RESERVED_153 EQU 0x2e64
00002E68 00157 MIOS_RESERVED_154 EQU 0x2e68
00002E6C 00158 MIOS_RESERVED_155 EQU 0x2e6c
00002E70 00159 MIOS_RESERVED_156 EQU 0x2e70
00002E74 00160 MIOS_RESERVED_157 EQU 0x2e74
00002E78 00161 MIOS_RESERVED_158 EQU 0x2e78
00002E7C 00162 MIOS_RESERVED_159 EQU 0x2e7c
00002E80 00163 MIOS_RESERVED_160 EQU 0x2e80
00002E84 00164 MIOS_RESERVED_161 EQU 0x2e84
00002E88 00165 MIOS_RESERVED_162 EQU 0x2e88
00002E8C 00166 MIOS_RESERVED_163 EQU 0x2e8c
00002E90 00167 MIOS_RESERVED_164 EQU 0x2e90
00002E94 00168 MIOS_RESERVED_165 EQU 0x2e94
00002E98 00169 MIOS_RESERVED_166 EQU 0x2e98
00002E9C 00170 MIOS_RESERVED_167 EQU 0x2e9c
00002EA0 00171 MIOS_RESERVED_168 EQU 0x2ea0
00002EA4 00172 MIOS_RESERVED_169 EQU 0x2ea4
00002EA8 00173 MIOS_RESERVED_170 EQU 0x2ea8
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 16
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00002EAC 00174 MIOS_RESERVED_171 EQU 0x2eac
00002EB0 00175 MIOS_RESERVED_172 EQU 0x2eb0
00002EB4 00176 MIOS_RESERVED_173 EQU 0x2eb4
00002EB8 00177 MIOS_RESERVED_174 EQU 0x2eb8
00002EBC 00178 MIOS_RESERVED_175 EQU 0x2ebc
00002EC0 00179 MIOS_RESERVED_176 EQU 0x2ec0
00002EC4 00180 MIOS_RESERVED_177 EQU 0x2ec4
00002EC8 00181 MIOS_RESERVED_178 EQU 0x2ec8
00002ECC 00182 MIOS_RESERVED_179 EQU 0x2ecc
00002ED0 00183 MIOS_RESERVED_180 EQU 0x2ed0
00002ED4 00184 MIOS_RESERVED_181 EQU 0x2ed4
00002ED8 00185 MIOS_RESERVED_182 EQU 0x2ed8
00002EDC 00186 MIOS_RESERVED_183 EQU 0x2edc
00002EE0 00187 MIOS_RESERVED_184 EQU 0x2ee0
00002EE4 00188 MIOS_RESERVED_185 EQU 0x2ee4
00002EE8 00189 MIOS_RESERVED_186 EQU 0x2ee8
00002EEC 00190 MIOS_RESERVED_187 EQU 0x2eec
00002EF0 00191 MIOS_RESERVED_188 EQU 0x2ef0
00002EF4 00192 MIOS_RESERVED_189 EQU 0x2ef4
00002EF8 00193 MIOS_RESERVED_190 EQU 0x2ef8
00002EFC 00194 MIOS_RESERVED_191 EQU 0x2efc
00002F00 00195 MIOS_RESERVED_192 EQU 0x2f00
00002F04 00196 MIOS_RESERVED_193 EQU 0x2f04
00002F08 00197 MIOS_RESERVED_194 EQU 0x2f08
00002F0C 00198 MIOS_RESERVED_195 EQU 0x2f0c
00002F10 00199 MIOS_RESERVED_196 EQU 0x2f10
00002F14 00200 MIOS_RESERVED_197 EQU 0x2f14
00002F18 00201 MIOS_RESERVED_198 EQU 0x2f18
00002F1C 00202 MIOS_RESERVED_199 EQU 0x2f1c
00002F20 00203 MIOS_RESERVED_200 EQU 0x2f20
00002F24 00204 MIOS_RESERVED_201 EQU 0x2f24
00002F28 00205 MIOS_RESERVED_202 EQU 0x2f28
00002F2C 00206 MIOS_RESERVED_203 EQU 0x2f2c
00002F30 00207 MIOS_RESERVED_204 EQU 0x2f30
00002F34 00208 MIOS_RESERVED_205 EQU 0x2f34
00002F38 00209 MIOS_RESERVED_206 EQU 0x2f38
00002F3C 00210 MIOS_RESERVED_207 EQU 0x2f3c
00002F40 00211 MIOS_RESERVED_208 EQU 0x2f40
00002F44 00212 MIOS_RESERVED_209 EQU 0x2f44
00002F48 00213 MIOS_RESERVED_210 EQU 0x2f48
00002F4C 00214 MIOS_RESERVED_211 EQU 0x2f4c
00002F50 00215 MIOS_RESERVED_212 EQU 0x2f50
00002F54 00216 MIOS_RESERVED_213 EQU 0x2f54
00002F58 00217 MIOS_RESERVED_214 EQU 0x2f58
00002F5C 00218 MIOS_RESERVED_215 EQU 0x2f5c
00002F60 00219 MIOS_RESERVED_216 EQU 0x2f60
00002F64 00220 MIOS_RESERVED_217 EQU 0x2f64
00002F68 00221 MIOS_RESERVED_218 EQU 0x2f68
00002F6C 00222 MIOS_RESERVED_219 EQU 0x2f6c
00002F70 00223 MIOS_RESERVED_220 EQU 0x2f70
00002F74 00224 MIOS_RESERVED_221 EQU 0x2f74
00002F78 00225 MIOS_RESERVED_222 EQU 0x2f78
00002F7C 00226 MIOS_RESERVED_223 EQU 0x2f7c
00002F80 00227 MIOS_RESERVED_224 EQU 0x2f80
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 17
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00002F84 00228 MIOS_RESERVED_225 EQU 0x2f84
00002F88 00229 MIOS_RESERVED_226 EQU 0x2f88
00002F8C 00230 MIOS_RESERVED_227 EQU 0x2f8c
00002F90 00231 MIOS_RESERVED_228 EQU 0x2f90
00002F94 00232 MIOS_RESERVED_229 EQU 0x2f94
00002F98 00233 MIOS_RESERVED_230 EQU 0x2f98
00002F9C 00234 MIOS_RESERVED_231 EQU 0x2f9c
00002FA0 00235 MIOS_RESERVED_232 EQU 0x2fa0
00002FA4 00236 MIOS_RESERVED_233 EQU 0x2fa4
00002FA8 00237 MIOS_RESERVED_234 EQU 0x2fa8
00002FAC 00238 MIOS_RESERVED_235 EQU 0x2fac
00002FB0 00239 MIOS_RESERVED_236 EQU 0x2fb0
00002FB4 00240 MIOS_RESERVED_237 EQU 0x2fb4
00002FB8 00241 MIOS_RESERVED_238 EQU 0x2fb8
00002FBC 00242 MIOS_RESERVED_239 EQU 0x2fbc
00002FC0 00243 MIOS_RESERVED_240 EQU 0x2fc0
00002FC4 00244 MIOS_RESERVED_241 EQU 0x2fc4
00002FC8 00245 MIOS_RESERVED_242 EQU 0x2fc8
00002FCC 00246 MIOS_RESERVED_243 EQU 0x2fcc
00002FD0 00247 MIOS_RESERVED_244 EQU 0x2fd0
00002FD4 00248 MIOS_RESERVED_245 EQU 0x2fd4
00002FD8 00249 MIOS_RESERVED_246 EQU 0x2fd8
00002FDC 00250 MIOS_RESERVED_247 EQU 0x2fdc
00002FE0 00251 MIOS_RESERVED_248 EQU 0x2fe0
00002FE4 00252 MIOS_RESERVED_249 EQU 0x2fe4
00002FE8 00253 MIOS_RESERVED_250 EQU 0x2fe8
00002FEC 00254 MIOS_RESERVED_251 EQU 0x2fec
00002FF0 00255 MIOS_RESERVED_252 EQU 0x2ff0
00002FF4 00256 MIOS_RESERVED_253 EQU 0x2ff4
00002FF8 00257 MIOS_RESERVED_254 EQU 0x2ff8
00002FFC 00258 MIOS_RESERVED_255 EQU 0x2ffc
00026
00027 ;; ---[ user hooks (never change!) ]---
00028 #include <user_vectors.inc>
00001 ; $Id: user_vectors.inc 49 2008-01-30 21:47:31Z tk $
00002 ;
00003 ; User vectortable - contains user hooks to MIOS
00004 ;
00005 ; ==========================================================================
00006 ;
00007 ; Copyright 1998-2006 Thorsten Klose (tk@midibox.org)
00008 ; Licensed for personal non-commercial use only.
00009 ; All other rights reserved.
00010 ;
00011 ; ==========================================================================
00012
00013 ;; never change the origin or the order of entries!
3000 00014 org 0x3000
3000 00015 _User_Init
3000 EFDA F019 00016 goto USER_Init
3004 00017 _USER_Tick
3004 EFEF F019 00018 goto USER_Tick
3008 00019 _USER_Timer
3008 EFF6 F019 00020 goto USER_Timer
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 18
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
300C 00021 _USER_MPROC_DebugTrigger
300C EFFB F019 00022 goto USER_MPROC_DebugTrigger
3010 00023 _USER_DISPLAY_Init
3010 EFFC F019 00024 goto USER_DISPLAY_Init
3014 00025 _USER_DISPLAY_Tick
3014 EFFD F019 00026 goto USER_DISPLAY_Tick
3018 00027 _USER_SR_Service_Prepare
3018 EF0E F01A 00028 goto USER_SR_Service_Prepare
301C 00029 _USER_SR_Service_Finish
301C EF0F F01A 00030 goto USER_SR_Service_Finish
3020 00031 _USER_DIN_NotifyToggle
3020 EF0C F01A 00032 goto USER_DIN_NotifyToggle
3024 00033 _USER_ENC_NotifyChange
3024 EF0D F01A 00034 goto USER_ENC_NotifyChange
3028 00035 _USER_AIN_NotifyChange
3028 EF10 F01A 00036 goto USER_AIN_NotifyChange
302C 00037 _USER_MPROC_NotifyReceivedByte
302C EF05 F01A 00038 goto USER_MPROC_NotifyReceivedByte
3030 00039 _USER_MPROC_NotifyTimeout
3030 EF02 F01A 00040 goto USER_MPROC_NotifyTimeout
3034 00041 _USER_MPROC_NotifyReceivedEvent
3034 EFFE F019 00042 goto USER_MPROC_NotifyReceivedEvent
3038 00043 _USER_MPROC_NotifyFoundEvent
3038 EF01 F01A 00044 goto USER_MPROC_NotifyFoundEvent
303C 00045 _USER_LCD_Init
00046 ;;goto USER_LCD_Init
303C 0012 00047 return
303E 0000 00048 nop
3040 00049 _USER_LCD_Clear
00050 ;;goto USER_LCD_Clear
3040 0012 00051 return
3042 0000 00052 nop
3044 00053 _USER_LCD_CursorSet
00054 ;;goto USER_LCD_CursorSet
3044 0012 00055 return
3046 0000 00056 nop
3048 00057 _USER_LCD_PrintChar
00058 ;;goto USER_LCD_PrintChar
3048 0012 00059 return
304A 0000 00060 nop
304C 00061 _USER_MIDI_NotifyRx
304C EF09 F01A 00062 goto USER_MIDI_NotifyRx
3050 00063 _USER_MIDI_NotifyTx
3050 EF08 F01A 00064 goto USER_MIDI_NotifyTx
3054 00065 _USER_LCD_Data
00066 ;;goto USER_LCD_Data
3054 0012 00067 return
3056 0000 00068 nop
3058 00069 _USER_LCD_Cmd
00070 ;;goto USER_LCD_Cmd
3058 0012 00071 return
305A 0000 00072 nop
305C 00073 _USER_LCD_SpecialCharInit
00074 ;;goto USER_LCD_SpecialCharInit
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 19
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
305C 00075 USER_RESERVED_25
305C 0012 00076 return
305E 0000 00077 nop
3060 00078 USER_RESERVED_26
3060 0012 00079 return
3062 0000 00080 nop
3064 00081 USER_RESERVED_27
3064 0012 00082 return
3066 0000 00083 nop
3068 00084 USER_RESERVED_28
3068 0012 00085 return
306A 0000 00086 nop
306C 00087 USER_RESERVED_29
306C 0012 00088 return
306E 0000 00089 nop
3070 00090 USER_RESERVED_30
3070 0012 00091 return
3072 0000 00092 nop
3074 00093 USER_RESERVED_31
3074 0012 00094 return
3076 0000 00095 nop
3078 00096 USER_RESERVED_32
3078 0012 00097 return
307A 0000 00098 nop
00029
00030 ;; ==========================================================================
00031 ;; General Application Settings
00032 ;; ==========================================================================
00033
00034 ;; ==========================================================================
00035 ;; Control surface settings
00036 ;; ==========================================================================
00037
00038 ;; ---[ variables used by application ]---
00039 #include "app_defines.h"
00001 ; $Id: app_defines.h 2011-07-12 bd (Antichambre)
00002 ; bdupeyron@gmail.com 4 Djo'Boss DR-55
00003 ;
00004 ; Specific Defines and variables of MIOS Application
00005 ;
00006 ; ===========================================================================
00007 ;
00008 ; Copyright 1998-2006 Thorsten Klose (tk@midibox.org)
00009 ; Licensed for personal non-commercial use only.
00010 ; All other rights reserved.
00011 ;
00012 ; ===========================================================================
00013
00014 ;; disable message "Operand of HIGH operator was larger than H'FFFF'"
00015 errorlevel -311
00016
00017 ;; ==========================================================================
00018
00019 ;; free memory for user applications:
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 20
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00020 ;; 0x010-0x37f
00021 ;; 0x600-0xf7f (PIC18F4620 only!)
00022 ; ==========================================================================
00023
307C 00024 #define DR55_STAT_CC_DUMP_REQ 0 ; if set, a CC dump will be sent
00025
00026
00027 ;; ==========================================================================
00028 ;; General MB DR55 Control Variables in ACCESS page
00029 ;; ==========================================================================
00000010 00030 MB_STAT EQU 0x010
00000011 00031 MIDI_DEVICE_ID EQU 0x011
00032
00033 ;; free: 0x12-0x7f
00034
00035 ;; ==========================================================================
00036
00037 ;; this 64 byte buffer is used by DR55_BANK_Copy, DR55_DUMP_Restore* and DR55_DUMP_Store* for fast data transfers
00000080 00038 DR55_DATA_BUFFER EQU 0x080
00039 ;; ...
000000BF 00040 DR55_DATA_BUFFER_END EQU 0x0bf
00041
00042 ;; ==========================================================================
00043
00044 ;; free: 0xc0-0xdf
00045
00046 ;; ==========================================================================
00047
00000100 00048 DR55_BASE EQU 0x100
00049
00000100 00050 DR55_INSTRUMENT_BUFFER EQU 0x100
00051
00052 ;; -----------------------------------
00053 ;; Instrument record structure
00054 ;; -----------------------------------
00055
00000000 00056 DR55_INSTNOTEx EQU 0x00 ; assigned MIDI note
00000001 00057 DR55_INSTTIMEx EQU 0x01 ; trig time (0=NoteOff, 1-127ms)
00000002 00058 DR55_INSTVELx EQU 0x02 ; vel future use
00000002 00059 DR55_INSTMODEx EQU 0x02 ; mode shadow
00000004 00060 DR55_TRIGREQx EQU 0x04 ; trig request
00000005 00061 DR55_SPARE5 EQU 0x05 ;
00000006 00062 DR55_SPARE6 EQU 0x06 ;
00000007 00063 DR55_SPARE7 EQU 0x07 ;
00000008 00064 DR55_SPARE8 EQU 0x08 ;
00000009 00065 DR55_SPARE9 EQU 0x09 ;
0000000A 00066 DR55_SPAREA EQU 0x0a ;
0000000B 00067 DR55_SPAREB EQU 0x0b ;
0000000C 00068 DR55_SPAREC EQU 0x0c ;
0000000D 00069 DR55_SPARED EQU 0x0d ;
0000000E 00070 DR55_SPAREE EQU 0x0e ;
0000000F 00071 DR55_SPAREF EQU 0x0f ;
00072
00000010 00073 DR55_INSTRECORD_LENGTH EQU 0x10
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 21
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00074
00075 ;; -----------------------------------
00000100 00076 DR55_INST0 EQU DR55_INSTRUMENT_BUFFER + 0x000 ; 0x100
00000110 00077 DR55_INST1 EQU DR55_INSTRUMENT_BUFFER + 0x010 ; 0x110
00000120 00078 DR55_INST2 EQU DR55_INSTRUMENT_BUFFER + 0x020 ; 0x120
00000130 00079 DR55_INST3 EQU DR55_INSTRUMENT_BUFFER + 0x030 ; 0x130
00000140 00080 DR55_INST4 EQU DR55_INSTRUMENT_BUFFER + 0x040 ; 0x140
00081
00082 ;; -----------------------------------
00083 ;; Instruments time counter
00084 ;; -----------------------------------
00085
00000150 00086 DR55_INST0_TIME_CTR EQU DR55_INSTRUMENT_BUFFER + 0x050 ; 0x150
00000151 00087 DR55_INST1_TIME_CTR EQU DR55_INSTRUMENT_BUFFER + 0x051 ; 0x151
00000152 00088 DR55_INST2_TIME_CTR EQU DR55_INSTRUMENT_BUFFER + 0x052 ; 0x152
00000153 00089 DR55_INST3_TIME_CTR EQU DR55_INSTRUMENT_BUFFER + 0x053 ; 0x153
00000154 00090 DR55_INST4_TIME_CTR EQU DR55_INSTRUMENT_BUFFER + 0x054 ; 0x154
00000155 00091 DR55_INST0_TIME_SUB_CTR EQU DR55_INSTRUMENT_BUFFER + 0x055 ; 0x150
00000156 00092 DR55_INST1_TIME_SUB_CTR EQU DR55_INSTRUMENT_BUFFER + 0x056 ; 0x151
00000157 00093 DR55_INST2_TIME_SUB_CTR EQU DR55_INSTRUMENT_BUFFER + 0x057 ; 0x152
00000158 00094 DR55_INST3_TIME_SUB_CTR EQU DR55_INSTRUMENT_BUFFER + 0x058 ; 0x153
00000159 00095 DR55_INST4_TIME_SUB_CTR EQU DR55_INSTRUMENT_BUFFER + 0x059 ; 0x154
00096
00000160 00097 DR55_CFG0 EQU 0x160 ; --
00000161 00098 DR55_STAT EQU 0x161 ; --
00000162 00099 DR55_MIDI_CHANNEL EQU 0x162 ; midi channel
00000163 00100 DR55_EVNTH EQU 0x163 ; selects the instrument which is used by DR55_fsr.inc functions
00000164 00101 DR55_EVNTI EQU 0x164 ; selects the instrument which is used by DR55_inst.inc tick function
00102
00103 ;; -----------------------------------
00104 ;; ACCENT Registers
00105 ;; -----------------------------------
00000174 00106 DR55_INST0_ACC_MODE EQU 0x174 ; Acc Mode start on specific note or velocity threshold
00000175 00107 DR55_INST0_ACC_THLD EQU 0x175 ; Acc velocity threshold
00000176 00108 DR55_INST0_ACC_LAST_MODE EQU 0x176 ; first or last mode
00000177 00109 DR55_INST0_ACC_LAST_ASGN EQU 0x177 ; last entry record
00110
00111 ;; -----------------------------------
00112 ;; SYNC Registers
00113 ;; -----------------------------------
00000180 00114 DR55_SYNC_REQ EQU 0x180
00000181 00115 DR55_SYNC_STATE EQU 0x181
00000182 00116 DR55_SYNC_CLK_REQ_CTR EQU 0x182
00000183 00117 DR55_SYNC_SENT_CLK_CTR EQU 0x183
00000184 00118 DR55_SYNC_SENT_CLK_DELAY EQU 0x184
00000185 00119 DR55_SYNC_INCOMING_CLK_CTR EQU 0x185
00000186 00120 DR55_SYNC_INCOMING_CLK_DELAY EQU 0x186
00000187 00121 DR55_SYNC_EXT_CLK_DIVIDER EQU 0x187
00000188 00122 DR55_SYNC_EXT_CLK_DIVIDER_PRELOAD EQU 0x188
00000189 00123 DR55_SYNC_EXT_CLK_CTR EQU 0x189
0000018A 00124 DR55_SYNC_EXT_START_CTR EQU 0x18a
0000018B 00125 DR55_SYNC_EXT_STOP_CTR EQU 0x18b
0000018C 00126 DR55_SYNC_MIDIPOS_STATE EQU 0x18c
0000018D 00127 DR55_SYNC_MIDIPOS_MSB EQU 0x18d
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 22
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0000018E 00128 DR55_SYNC_MIDIPOS_LSB EQU 0x18e
00129
00130 ;; free: 0x255-0x5ff! :-)
00131
00132 ;; ==================================================================================
00133
00000190 00134 DR55_SYSEX_STATE EQU 0x190 ; used by DR55_sysex.inc
00000191 00135 DR55_SYSEX_STATE2 EQU 0x191 ; used by DR55_sysex.inc
00000192 00136 DR55_SYSEX_ACTION EQU 0x192 ; used by DR55_sysex.inc
00000193 00137 DR55_SYSEX_IN EQU 0x193 ; used by DR55_sysex.inc
00000194 00138 DR55_SYSEX_CHECKSUM EQU 0x194 ; used by DR55_sysex.inc
00000195 00139 DR55_SYSEX_ADDRESS_L EQU 0x195 ; used by DR55_sysex.inc
00000196 00140 DR55_SYSEX_ADDRESS_H EQU 0x196 ; used by DR55_sysex.inc
00000197 00141 DR55_SYSEX_TARGET_BANK EQU 0x197 ; used by DR55_sysex.inc
00000198 00142 DR55_SYSEX_TARGET_PATTERN EQU 0x198 ; used by DR55_sysex.inc
00143 ;;DR55_SYSEX_SOURCE EQU 0x119 ; used by cs_m_sysex.inc
00144
00145 ;; free: 0x199-0x19d
00146
0000019E 00147 DR55_IRQ_SAVED_PRODL EQU 0x19e ; used by IRQ routines to save PRODL
0000019F 00148 DR55_IRQ_SAVED_PRODH EQU 0x19f ; used by IRQ routines to save PRODL
00149
00150 ;; ==================================================================================
00151 ;; ==================================================================================
00152 ;; up to here RAM is allocated which exists on PIC18F4620 only, and not on PIC18F452!
00153 ;; ==================================================================================
00154
00155 ;; free: 0x600-0xf7f! :-)
00040
00041 ; ==========================================================================
00042
00043 ;; ---[ configuration table for MIDI processor and rotary encoders ]---
00044 #include "mios_tables.inc"
00001 ; $Id: mios_tables.inc 73 2008-02-03 00:00:52Z tk $
00002 ;
00003 ; Configuration Tables for MIOS Application
00004 ;
00005 ; ==========================================================================
00006 ;
00007 ; Copyright 1998-2006 Thorsten Klose (tk@midibox.org)
00008 ; Licensed for personal non-commercial use only.
00009 ; All other rights reserved.
00010 ;
00011 ; ==========================================================================
00012
3080 00013 org 0x3080 ; never change the origin!
00014
00015 ;; --------------------------------------------------------------------------
00016 ;; The MIDI Trigger table maps incoming MIDI events to control elements
00017 ;; (pots/faders, encoders, buttons, LEDs, ...)
00018 ;;
00019 ;; After the MIOS MIDI processor (MPROC) has received a complete event, it
00020 ;; searches in this table for a matching entry and calls USER_MPROC_NotifyFoundEvent
00021 ;; with the table index in WREG and the MIDI event in MIOS_PARAMETER[123]
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 23
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00022 ;;
00023 ;; Note also that the MIDI processor stops scanning the table after
00024 ;; the first MT_EOT entry
00025 ;;
00026 ;; Note2: never change the origin (memory location) of this table!
00027 ;;
00028 ;; Optionally this table can also be used to define events, which should be
00029 ;; transmitted (Example: see example_ain64_din128_dout128), so that incoming
00030 ;; and outgoing events are located at one place
00031 ;;
00032 ;; The table *must* contain 256 entries. Unused entries should be filled with
00033 ;; MT_EOT.
00034 ;; --------------------------------------------------------------------------
00035
00036 ;; MIDI Trigger entry structure
00037 MT_ENTRY MACRO event_0, event_1
00038 dw (event_1 << 8) | event_0
00039 ENDM
00040
00041 MT_EOT MACRO
00042 dw 0xffff
00043 ENDM
00044
00045
3080 00046 MIOS_MPROC_EVENT_TABLE
00047 ;; this "end of table" entry ensures that MIOS will stop searching here
00048 MT_EOT
3080 FFFF M dw 0xffff
00049
00050
00051 ; ==========================================================================
00052
00053 ;; encoders are defined in setup_mbDR55_*.asm !
00054
00055 ; ==========================================================================
00056
3300 00057 org 0x3300 ; never change the origin!
00045
00046 ;; ---[ Custom LCD driver ]---
00047 ;#include <app_lcd.inc>
00048
00049
3300 00050 #define J5_IO_DONT_USE_INPUT_FUNCTIONS 1
00051 #include <j5_io.inc>
00001 ; $Id: j5_io.inc 426 2008-08-05 23:12:19Z tk $
00002 ;
00003 ; This driver provides access to MBHP_CORE:J5 as digital IO port
00004 ;
00005 ; This include file provides following functions:
00006 ; o J5_IO_Init: initializes the J5 port
00007 ; o J5_IO_Set: user function to set all output pins at J5 at once
00008 ; o J5_IO_PinSet: user function to set a single pin of J5
00009 ; o J5_IO_Get: user function to get the state of all input pins of J5 at once
00010 ; o J5_IO_PinGet: user function to get the state of a single input pin of J5
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 24
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00011 ;
00012 ; Optional defines:
00013 ; J5_IO_DONT_USE_INPUT_FUNCTIONS: if set, input functions won't be provided by driver
00014 ; J5_IO_DONT_USE_OUTPUT_FUNCTIONS: if set, output functions won't be provided by driver
00015 ;
00016 ; Both defines are provided for saving code size
00017 ;
00018 ; ==========================================================================
00019 ;
00020 ; Copyright 1998-2007 Thorsten Klose (tk@midibox.org)
00021 ; Licensed for personal non-commercial use only.
00022 ; All other rights reserved.
00023 ;
00024 ; ==========================================================================
00025
00026 #ifndef J5_IO_DONT_USE_INPUT_FUNCTIONS
00027 #define J5_IO_DONT_USE_INPUT_FUNCTIONS 0
00028 #endif
00029
00030 #ifndef J5_IO_DONT_USE_OUTPUT_FUNCTIONS
3300 00031 #define J5_IO_DONT_USE_OUTPUT_FUNCTIONS 0
00032 #endif
00033
00034 ;; --------------------------------------------------------------------------
00035 ;; FUNCTION: J5_IO_Init
00036 ;; DESCRIPTION: This function initializes J5 as digital IO port.
00037 ;; The "TRIS" (tristate) flags are expected as parameter.
00038 ;; - if 1: pin used as input
00039 ;; - if 0: pin used as output
00040 ;;
00041 ;; Pin Mapping:
00042 ;; Pin #0: RA.0
00043 ;; Pin #1: RA.1
00044 ;; Pin #2: RA.2
00045 ;; Pin #3: RA.3
00046 ;; Pin #4: RA.5
00047 ;; Pin #5: RE.0
00048 ;; Pin #6: RE.1
00049 ;; Pin #7: RE.2
00050 ;; IN: tristate flags in WREG
00051 ;; OUT: -
00052 ;; USES: MIOS_PARAMETER1
00053 ;; --------------------------------------------------------------------------
3300 00054 _J5_IO_Init ; (for C)
3300 00055 J5_IO_Init
00056 ;; temporary store values in MIOS_PARAMETER1
3300 6E03 00057 movwf MIOS_PARAMETER1
00058
00059 ;; disable the ADC which allocates the analog pins
00060 #if PIC_DERIVATIVE_NEW_ADC == 0 ; PIC18F452
00061 movlw 0x07
00062 #else
3302 0E0F 00063 movlw 0x0f ; all newer PIC18F derivatives (like PIC18F4685)
00064 #endif
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 25
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
3304 6EC1 00065 movwf ADCON1
00066
00067 ;; copy TRIS flags into SFRs
00068
00069 ;; MIOS_PARAMETER1[3..0] -> TRISA[3..0]
00070 ;; MIOS_PARAMETER1[4] -> TRISA[5]
3306 0ED0 00071 movlw 0xd0
3308 1692 00072 andwf TRISA, F
330A 5003 00073 movf MIOS_PARAMETER1, W
330C 0B0F 00074 andlw 0x0f
330E 1292 00075 iorwf TRISA, F
3310 B803 00076 btfsc MIOS_PARAMETER1, 4
3312 8A92 00077 bsf TRISA, 5
00078
00079 ;; MIOS_PARAMETER1[7..5] -> TRISE[2..0]
3314 0EF8 00080 movlw 0xf8
3316 1696 00081 andwf TRISE, F
3318 3803 00082 swapf MIOS_PARAMETER1, W
331A 30E8 00083 rrf WREG, W
331C 0B07 00084 andlw 0x07
331E 1296 00085 iorwf TRISE, F
00086
3320 0012 00087 return
00088
00089
00090 #if J5_IO_DONT_USE_OUTPUT_FUNCTIONS == 0
00091 ;; --------------------------------------------------------------------------
00092 ;; FUNCTION: J5_IO_Set
00093 ;; DESCRIPTION: This function sets all pins of J5 at once
00094 ;; IN: pin values in WREG
00095 ;; OUT: -
00096 ;; USES: MIOS_PARAMETER[12]
00097 ;; --------------------------------------------------------------------------
3322 00098 _J5_IO_Set ; (for C)
3322 00099 J5_IO_Set
00100 ;; temporary store values in MIOS_PARAMETER1
3322 6E03 00101 movwf MIOS_PARAMETER1
00102
00103 ;; copy values into SFRs
00104
00105 ;; MIOS_PARAMETER1[3..0] -> LATA[3..0]
00106 ;; MIOS_PARAMETER1[4] -> LATA[5]
00107 ;; (make it clean, avoid spikes!)
3324 5089 00108 movf LATA, W
3326 0BD0 00109 andlw 0xd0
3328 6E04 00110 movwf MIOS_PARAMETER2
332A 5003 00111 movf MIOS_PARAMETER1, W
332C 0B0F 00112 andlw 0x0f
332E 1004 00113 iorwf MIOS_PARAMETER2, W
3330 B803 00114 btfsc MIOS_PARAMETER1, 4
3332 0920 00115 iorlw 0x20
3334 6E89 00116 movwf LATA
00117
00118 ;; MIOS_PARAMETER1[7..5] -> LATE[2..0] (make it clean, avoid spikes!)
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 26
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
3336 508D 00119 movf LATE, W
3338 0BF8 00120 andlw 0xf8
333A 6E04 00121 movwf MIOS_PARAMETER2
333C 3803 00122 swapf MIOS_PARAMETER1, W
333E 30E8 00123 rrf WREG, W
3340 0B07 00124 andlw 0x07
3342 1004 00125 iorwf MIOS_PARAMETER2, W
3344 6E8D 00126 movwf LATE
00127
3346 0012 00128 return
00129 #endif
00130
00131
00132 #if J5_IO_DONT_USE_OUTPUT_FUNCTIONS == 0
00133 ;; --------------------------------------------------------------------------
00134 ;; FUNCTION: J5_IO_PinSet
00135 ;; DESCRIPTION: This function sets a single pin of J5
00136 ;; IN: pin number in WREG, pin value in MIOS_PARAMETER1
00137 ;; OUT: -
00138 ;; USES: -
00139 ;; --------------------------------------------------------------------------
3348 00140 J5_IO_PinSet
00141 ;; make it superfast: branch depending on WREG
00142 BRA_IFSET WREG, 2, ACCESS, J5_IO_PinSet_4567
3348 B4E8 M btfsc reg, bit, reg_a
334A D01A M bra label
334C 00143 J5_IO_PinSet_0123
00144 BRA_IFSET WREG, 1, ACCESS, J5_IO_PinSet_23
334C B2E8 M btfsc reg, bit, reg_a
334E D00C M bra label
3350 00145 J5_IO_PinSet_01
00146 BRA_IFSET WREG, 0, ACCESS, J5_IO_PinSet_1
3350 B0E8 M btfsc reg, bit, reg_a
3352 D005 M bra label
3354 00147 J5_IO_PinSet_0
3354 B003 00148 btfsc MIOS_PARAMETER1, 0 ; set A.0
3356 8089 00149 bsf LATA, 0
3358 A003 00150 btfss MIOS_PARAMETER1, 0
335A 9089 00151 bcf LATA, 0
335C 0012 00152 return
00153
335E 00154 J5_IO_PinSet_1
335E B003 00155 btfsc MIOS_PARAMETER1, 0 ; set A.1
3360 8289 00156 bsf LATA, 1
3362 A003 00157 btfss MIOS_PARAMETER1, 0
3364 9289 00158 bcf LATA, 1
3366 0012 00159 return
00160
3368 00161 J5_IO_PinSet_23
00162 BRA_IFSET WREG, 0, ACCESS, J5_IO_PinSet_3
3368 B0E8 M btfsc reg, bit, reg_a
336A D005 M bra label
336C 00163 J5_IO_PinSet_2
336C B003 00164 btfsc MIOS_PARAMETER1, 0 ; set A.2
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 27
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
336E 8489 00165 bsf LATA, 2
3370 A003 00166 btfss MIOS_PARAMETER1, 0
3372 9489 00167 bcf LATA, 2
3374 0012 00168 return
00169
3376 00170 J5_IO_PinSet_3
3376 B003 00171 btfsc MIOS_PARAMETER1, 0 ; set A.3
3378 8689 00172 bsf LATA, 3
337A A003 00173 btfss MIOS_PARAMETER1, 0
337C 9689 00174 bcf LATA, 3
337E 0012 00175 return
00176
3380 00177 J5_IO_PinSet_4567
00178 BRA_IFSET WREG, 1, ACCESS, J5_IO_PinSet_67
3380 B2E8 M btfsc reg, bit, reg_a
3382 D00C M bra label
3384 00179 J5_IO_PinSet_45
00180 BRA_IFSET WREG, 0, ACCESS, J5_IO_PinSet_5
3384 B0E8 M btfsc reg, bit, reg_a
3386 D005 M bra label
3388 00181 J5_IO_PinSet_4
3388 B003 00182 btfsc MIOS_PARAMETER1, 0 ; set A.5
338A 8A89 00183 bsf LATA, 5
338C A003 00184 btfss MIOS_PARAMETER1, 0
338E 9A89 00185 bcf LATA, 5
3390 0012 00186 return
00187
3392 00188 J5_IO_PinSet_5
3392 B003 00189 btfsc MIOS_PARAMETER1, 0 ; set E.0
3394 808D 00190 bsf LATE, 0
3396 A003 00191 btfss MIOS_PARAMETER1, 0
3398 908D 00192 bcf LATE, 0
339A 0012 00193 return
00194
339C 00195 J5_IO_PinSet_67
00196 BRA_IFSET WREG, 0, ACCESS, J5_IO_PinSet_7
339C B0E8 M btfsc reg, bit, reg_a
339E D005 M bra label
33A0 00197 J5_IO_PinSet_6
33A0 B003 00198 btfsc MIOS_PARAMETER1, 0 ; set E.1
33A2 828D 00199 bsf LATE, 1
33A4 A003 00200 btfss MIOS_PARAMETER1, 0
33A6 928D 00201 bcf LATE, 1
33A8 0012 00202 return
00203
33AA 00204 J5_IO_PinSet_7
33AA B003 00205 btfsc MIOS_PARAMETER1, 0 ; set E.2
33AC 848D 00206 bsf LATE, 2
33AE A003 00207 btfss MIOS_PARAMETER1, 0
33B0 948D 00208 bcf LATE, 2
33B2 0012 00209 return
00210 #endif
00211
00212
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 28
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00213 #if J5_IO_DONT_USE_INPUT_FUNCTIONS == 0
00214 ;; --------------------------------------------------------------------------
00215 ;; FUNCTION: J5_IO_Get
00216 ;; DESCRIPTION: This function returns the state of all J5 pins
00217 ;; IN: -
00218 ;; OUT: pin values in WREG
00219 ;; USES: MIOS_PARAMETER1
00220 ;; --------------------------------------------------------------------------
00221 _J5_IO_Get ; (for C)
00222 J5_IO_Get
00223 ;; using MIOS_PARAMETER1 as temporary register
00224
00225 ;; MIOS_PARAMETER1[3..0] == PORTA[3..0]
00226 movf PORTA, W
00227 andlw 0x0f
00228
00229 ;; MIOS_PARAMETER1[4] == PORTA[5]
00230 btfsc PORTA, 5
00231 iorlw 0x10
00232 movwf MIOS_PARAMETER1
00233
00234 ;; MIOS_PARAMETER1[7..6] == PORTE[2..0]
00235 swapf PORTE, W
00236 rlf WREG, W
00237 andlw 0xe0
00238 iorwf MIOS_PARAMETER1, W
00239
00240 ;; pin status now in WREG
00241 return
00242 #endif
00243
00244
00245 #if J5_IO_DONT_USE_INPUT_FUNCTIONS == 0
00246 ;; --------------------------------------------------------------------------
00247 ;; FUNCTION: J5_IO_PinGet
00248 ;; DESCRIPTION: This function returns the state of a single pin at J5
00249 ;; IN: J5 pin number (0-7) in WREG
00250 ;; OUT: pin value (0 or 1) in WREG
00251 ;; USES: MIOS_PARAMETER[12]
00252 ;; --------------------------------------------------------------------------
00253 _J5_IO_PinGet ; (for C)
00254 J5_IO_PinGet
00255 ;; temporary store pin mask in MIOS_PARAMETER2
00256 call MIOS_HLP_GetBitORMask
00257 movwf MIOS_PARAMETER2
00258
00259 ;; get current state of J5 inputs
00260 rcall J5_IO_Get
00261
00262 ;; and check if pin set/cleared by applying mask
00263 andwf MIOS_PARAMETER2, W
00264
00265 ;; return either 0 or 1
00266 skpz
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 29
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00267 movlw 0x01
00268
00269 ;; fix ZERO flag (because movlw instruction doesn't touch it)
00270 andlw 0xff
00271 return
00272 #endif
00052 ;; ==========================================================================
00053 ;; Standard MIOS hooks
00054 ;; ==========================================================================
00055
00056 ;; --------------------------------------------------------------------------
00057 ;; This function is called by MIOS after startup to initialize the
00058 ;; application
00059 ;; --------------------------------------------------------------------------
33B4 00060 USER_Init
00061 ;; derive DR55 Device ID from MIOS Device ID
33B4 EC04 F016 00062 call MIOS_MIDI_DeviceIDGet
33B8 6E11 00063 movwf MIDI_DEVICE_ID
00064
00065 ;; Initialize application specific variables
33BA 6A10 00066 clrf MB_STAT
00067
00068 ;; Read Preset Config from EEPROM
33BC EC46 F01A 00069 call DR55_EEProm_Preset_Read
00070
00071 ;; Initialize Output Port for Intruments
00072 ;;call DR55_INST_Init
33C0 0E00 00073 movlw 0x00
33C2 EC80 F019 00074 call J5_IO_Init
00075
00076 ;; Initialize Output Port for SYNC
33C6 EC70 F01E 00077 call DR55_SYNC_Init
00078
00079 ;; Initialize Timer for Trigs Time & Clock Delay
00080 ;; in slave, the timer will be used to measure the delay between
00081 ;; one clock, in order to produce 4 internal clocks on every F8 event
00082 ;; using 250 uS as reference.
00083 ;; Increment a '4 ticks' counter used by Triggers Time with a
00084 ;; resolution equal to 1ms (4*0,25ms). 1ms > 127 ms
33CA 0EC4 00085 movlw 2500 & 0xff
33CC 6E03 00086 movwf MIOS_PARAMETER1
33CE 0E09 00087 movlw 2500 >> 8
33D0 6E04 00088 movwf MIOS_PARAMETER2
33D2 0E00 00089 movlw 0x00
33D4 ECBC F016 00090 call MIOS_TIMER_Init
33D8 ECBE F016 00091 call MIOS_TIMER_Start
33DC 0012 00092 return
00093
00094
00095 ;; --------------------------------------------------------------------------
00096 ;; This function is called by MIOS in the mainloop when nothing else is to do
00097 ;; --------------------------------------------------------------------------
33DE 00098 USER_Tick
00099
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 30
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00100 ;; ---[ handle triggers ]---
33DE ECD4 F01B 00101 call DR55_INST_Handle
00102
00103 ;; ---[ handle SYNC Out ]---
33E2 EC8F F01E 00104 call DR55_SYNC_Handle
00105
00106 ;; ---[ handle with CC dump requests ]---
33E6 ECCE F01A 00107 call DR55_CCOUT_Handler
33EA 0012 00108 return
00109
00110
00111 ;; --------------------------------------------------------------------------
00112 ;; This function is periodically called by MIOS. The frequency has to be
00113 ;; initialized with MIOS_Timer_Set
00114 ;; Note that this is an interrupt service routine! Use FSR2 instead of FSR0
00115 ;; and IRQ_TMPx instead of TMPx -- and make the routine as fast as possible!
00116 ;; --------------------------------------------------------------------------
33EC 00117 USER_Timer
00118 ;; ---[ call Trigs Timer Handler ]---
33EC ECAF F01B 00119 call DR55_INST_Tick
00120
33F0 EC7B F01E 00121 call DR55_SYNC_Tick
00122
33F4 0012 00123 return
00124
00125
00126 ;; --------------------------------------------------------------------------
00127 ;; This function is called by MIOS when a debug command has been received
00128 ;; via SysEx
00129 ;; Input:
00130 ;; o WREG, MIOS_PARAMETER1, MIOS_PARAMETER2, MIOS_PARAMETER3 like
00131 ;; specified in the debug command
00132 ;; Output:
00133 ;; o return values WREG, MIOS_PARAMETER1, MIOS_PARAMETER2, MIOS_PARAMETER3
00134 ;; --------------------------------------------------------------------------
33F6 00135 USER_MPROC_DebugTrigger
33F6 0012 00136 return
00137
00138
00139 ;; --------------------------------------------------------------------------
00140 ;; This function is called by MIOS when the display content should be
00141 ;; initialized. Thats the case during startup and after a temporary message
00142 ;; has been printed on the screen
00143 ;; --------------------------------------------------------------------------
33F8 00144 USER_DISPLAY_Init
33F8 0012 00145 return
00146
00147 ;; --------------------------------------------------------------------------
00148 ;; This function is called in the mainloop when no temporary message is shown
00149 ;; on screen. Print the realtime messages here
00150 ;; --------------------------------------------------------------------------
33FA 00151 USER_DISPLAY_Tick
33FA 0012 00152 return
00153
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 31
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00154 ;; --------------------------------------------------------------------------
00155 ;; This function is called by MIOS when a complete MIDI event has been received
00156 ;; Input:
00157 ;; o first MIDI event byte in MIOS_PARAMETER1
00158 ;; o second MIDI event byte in MIOS_PARAMETER2
00159 ;; o third MIDI event byte in MIOS_PARAMETER3
00160 ;; --------------------------------------------------------------------------
33FC 00161 USER_MPROC_NotifyReceivedEvent
00162 ;; DR55 MIDI handler
33FC EF74 F01C 00163 goto DR55_MIDI_NotifyReceivedEvent
3400 0012 00164 return
00165
00166 ;; --------------------------------------------------------------------------
00167 ;; This function is called by MIOS when a MIDI event has been received
00168 ;; which has been specified in the CONFIG_MIDI_IN table
00169 ;; Input:
00170 ;; o number of entry in WREG
00171 ;; o first MIDI event byte in MIOS_PARAMETER1
00172 ;; o second MIDI event byte in MIOS_PARAMETER2
00173 ;; o third MIDI event byte in MIOS_PARAMETER3
00174 ;; --------------------------------------------------------------------------
3402 00175 USER_MPROC_NotifyFoundEvent
3402 0012 00176 return
00177
00178
00179 ;; --------------------------------------------------------------------------
00180 ;; This function is called by MIOS when a MIDI event has not been completly
00181 ;; received within 2 seconds
00182 ;; --------------------------------------------------------------------------
3404 00183 USER_MPROC_NotifyTimeout
00184
00185 ;; -> jump to "ActionInvalid" for a proper reset of the sysex parser
3404 EF46 F01D 00186 goto DR55_SYSEX_ActionInvalid
3408 0012 00187 return
00188 ;; --------------------------------------------------------------------------
00189 ;; This function is called by MIOS when a MIDI byte has been received
00190 ;; Input:
00191 ;; o received MIDI byte in WREG and MIOS_PARAMETER1
00192 ;; --------------------------------------------------------------------------
340A 00193 USER_MPROC_NotifyReceivedByte
00194 ;; DR55 sysex parser
340A EF4D F01D 00195 goto DR55_SYSEX_Parser
340E 0012 00196 return
00197
00198 ;; --------------------------------------------------------------------------
00199 ;; This function is called by MIOS before the transfer of a MIDI byte.
00200 ;; It can be used to monitor the Tx activity or to do any other actions
00201 ;; (e.g. to switch a pin for multiplexed MIDI Outs) before the byte will
00202 ;; be sent.
00203 ;; Note that this is an interrupt service routine! Use FSR2 instead of FSR0
00204 ;; and IRQ_TMPx instead of TMPx -- and make the routine as fast as possible!
00205 ;; Input:
00206 ;; o transmitted byte in WREG
00207 ;; --------------------------------------------------------------------------
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 32
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
3410 00208 USER_MIDI_NotifyTx
3410 0012 00209 return
00210
00211 ;; --------------------------------------------------------------------------
00212 ;; This function is called by MIOS when a MIDI byte has been received.
00213 ;; It can be used to monitor the Rx activity or to do any action - e.g.
00214 ;; to react on realtime events like MIDI clock (0xf8) with a minimum latency
00215 ;; Note that this is an interrupt service routine! Use FSR2 instead of FSR0
00216 ;; and IRQ_TMPx instead of TMPx -- and make the routine as fast as possible!
00217 ;; Input:
00218 ;; o received byte in WREG
00219 ;; --------------------------------------------------------------------------
3412 00220 USER_MIDI_NotifyRx
00221 ;; call realtime event handler
3412 EC2E F01C 00222 call DR55_MIDI_NotifyRx
3416 0012 00223 return
00224
00225
00226 ;; --------------------------------------------------------------------------
00227 ;; This function is called by MIOS when an button has been toggled
00228 ;; Input:
00229 ;; o Button number in WREG and MIOS_PARAMETER1
00230 ;; o Button value MIOS_PARAMETER2:
00231 ;; - 1 if button has been released (=5V)
00232 ;; - 0 if button has been pressed (=0V)
00233 ;; --------------------------------------------------------------------------
3418 00234 USER_DIN_NotifyToggle
3418 0012 00235 return
00236
00237 ;; --------------------------------------------------------------------------
00238 ;; This function is called by MIOS when an encoder has been moved
00239 ;; Input:
00240 ;; o Encoder number in WREG and MIOS_PARAMETER1
00241 ;; o signed incrementer value in MIOS_PARAMETER2:
00242 ;; - is positive when encoder has been turned clockwise
00243 ;; - is negative when encoder has been turned counter clockwise
00244 ;; --------------------------------------------------------------------------
341A 00245 USER_ENC_NotifyChange
341A 0012 00246 return
00247
00248
00249 ;; --------------------------------------------------------------------------
00250 ;; This function is called by MIOS before the shift register are loaded
00251 ;; Note that this is an interrupt service routine! Use FSR2 instead of FSR0
00252 ;; and IRQ_TMPx instead of TMPx -- and make the routine as fast as possible
00253 ;; --------------------------------------------------------------------------
341C 00254 USER_SR_Service_Prepare
341C 0012 00255 return
00256
00257
00258 ;; --------------------------------------------------------------------------
00259 ;; This function is called by MIOS after the shift register have been loaded
00260 ;; Note that this is an interrupt service routine! Use FSR2 instead of FSR0
00261 ;; and IRQ_TMPx instead of TMPx -- and make the routine as fast as possible
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 33
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00262 ;; --------------------------------------------------------------------------
341E 00263 USER_SR_Service_Finish
341E 0012 00264 return
00265
00266
00267 ;; --------------------------------------------------------------------------
00268 ;; This function is called by MIOS when a pot has been moved
00269 ;; Input:
00270 ;; o Pot number in WREG and MIOS_PARAMETER1
00271 ;; o LSB value in MIOS_PARAMETER2
00272 ;; o MSB value in MIOS_PARAMETER3
00273 ;; --------------------------------------------------------------------------
3420 00274 USER_AIN_NotifyChange
00275
00276 ;; NOTE: WE HAVE OUR OWN AIN HANDLER IN ain.inc
00277 ;; THE MIOS DRIVER IS NOT USED, THEREFORE THIS FUNCTION WILL NEVER BE CALLED !!!
00278
3420 0012 00279 return
00280
00281 ;; --------------------------------------------------------------------------
00282 ;; This function is called by the ain.inc driver when a pot has been moved
00283 ;; Input:
00284 ;; o Pot number in WREG and MIOS_PARAMETER1
00285 ;; o 8bit value in MIOS_PARAMETER2
00286 ;; --------------------------------------------------------------------------
3422 00287 AIN_NotifyChange
3422 0012 00288 return
00289
00290
00291 ;; ==========================================================================
00292 ;; Application code (see comments in files)
00293 ;; ==========================================================================
00294
00295 ;; ---[ reusable utility functions ]---
00296 ;;#include "midi_evnt.inc"
00297 #include "math_div24_16.inc"
00001 ; $Id: math_div24_16.inc 73 2008-02-03 00:00:52Z tk $
00002 ;; the 24 Bit / 16 Bit division routine has been created by Nikolai Golovchenko,
00003 ;; and is published at:
00004 ;; http://www.piclist.org/techref/microchip/math/div/24by16.htm
00005
00006 ;; mapping of registers to temporal registers
00000FF5 00007 MATH_AARGB0 EQU TABLAT
00000FF4 00008 MATH_AARGB1 EQU PRODH
00000FF3 00009 MATH_AARGB2 EQU PRODL
00000006 00010 MATH_BARGB0 EQU TMP1
00000007 00011 MATH_BARGB1 EQU TMP2
00000008 00012 MATH_LOOPCOUNT EQU TMP3
00000009 00013 MATH_REMB0 EQU TMP4
0000000A 00014 MATH_REMB1 EQU TMP5
00015
00016 ;Inputs:
00017 ; Dividend - AARGB0:AARGB1:AARGB2 (0 - most significant!)
00018 ; Divisor - BARGB0:BARGB1
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 34
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00019 ;Temporary:
00020 ; Counter - LOOPCOUNT
00021 ; Remainder- REMB0:REMB1
00022 ;Output:
00023 ; Quotient - AARGB0:AARGB1:AARGB2
3424 00024 MATH_DIV24_16
3424 0E18 00025 movlw 24
3426 6E08 00026 movwf MATH_LOOPCOUNT
00027
3428 6A09 00028 CLRF MATH_REMB0
342A 6A0A 00029 CLRF MATH_REMB1
342C 0E18 00030 MOVLW 24
342E 6E08 00031 MOVWF MATH_LOOPCOUNT
3430 00032 MATH_DIV24_16_Loop:
3430 34F3 00033 RLCF MATH_AARGB2, W ;shift dividend left to move next bit to remainder
3432 36F4 00034 RLCF MATH_AARGB1, F ;
3434 36F5 00035 RLCF MATH_AARGB0, F ;
00036
3436 360A 00037 RLCF MATH_REMB1, F ;shift carry (next dividend bit) into remainder
3438 3609 00038 RLCF MATH_REMB0, F
00039
343A 36F3 00040 RLCF MATH_AARGB2, F ;finish shifting the dividend and save carry in AARGB2.0,
00041 ;since remainder can be 17 bit long in some cases
00042 ;(e.g. 0x800000/0xFFFF). This bit will also serve
00043 ;as the next result bit.
00044
343C 5007 00045 MOVF MATH_BARGB1, W ;substract divisor from 16-bit remainder
343E 5E0A 00046 SUBWF MATH_REMB1, F ;
3440 5006 00047 MOVF MATH_BARGB0, W ;
3442 A0D8 00048 skpc ;
3444 3C06 00049 INCFSZ MATH_BARGB0, W ;
3446 5E09 00050 SUBWF MATH_REMB0, F ;
00051
00052 ;here we also need to take into account the 17th bit of remainder, which
00053 ;is in AARGB2.0. If we dont have a borrow after subtracting from lower
00054 ;16 bits of remainder, then there is no borrow regardless of 17th bit
00055 ;value. But, if we have the borrow, then that will depend on 17th bit
00056 ;value. If it is 1, then no final borrow will occur. If it is 0, borrow
00057 ;will occur. These values match the borrow flag polarity.
00058
3448 B0D8 00059 skpnc ;if no borrow after 16 bit subtraction
344A 80F3 00060 BSF MATH_AARGB2, 0 ;then there is no borrow in result. Overwrite
00061 ;AARGB2.0 with 1 to indicate no
00062 ;borrow.
00063 ;if borrow did occur, AARGB2.0 already
00064 ;holds the final borrow value (0-borrow,
00065 ;1-no borrow)
00066
344C B0F3 00067 BTFSC MATH_AARGB2, 0 ;if no borrow after 17-bit subtraction
344E D003 00068 BRA MATH_DIV24_16_UOK46LL ;skip remainder restoration.
00069
3450 2609 00070 ADDWF MATH_REMB0, F ;restore higher byte of remainder. (w
00071 ;contains the value subtracted from it
00072 ;previously)
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 35
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
3452 5007 00073 MOVF MATH_BARGB1, W ;restore lower byte of remainder
3454 260A 00074 ADDWF MATH_REMB1, F ;
00075
3456 00076 MATH_DIV24_16_UOK46LL
00077
3456 2E08 00078 DECFSZ MATH_LOOPCOUNT, f ;decrement counter
3458 D7EB 00079 BRA MATH_DIV24_16_Loop ;and repeat the loop if not zero.
00080
345A 0012 00081 return
00298
00299 ;; ---[ DR55 kernel ]---
00300 #include "DR55_fsr.inc"
00001 ; $Id: dr55_fsr.inc 2011-07-12 bd (Antichambre)
00002 ; bdupeyron@gmail.com 4 Djo'Boss DR-55
00003 ;
00004 ; MIDIbox DR55
00005 ; FSR pointer return functions
00006 ;
00007 ; ==========================================================================
00008 ;
00009 ; Copyright 1998-2006 Thorsten Klose (tk@midibox.org)
00010 ; Licensed for personal non-commercial use only.
00011 ; All other rights reserved.
00012 ;
00013 ; ==========================================================================
00014
00015 ;; --------------------------------------------------------------------------
00016 ;; used by various DR55_FSR_Inst* functions which selects an item of the
00017 ;; instrument record
00018 ;; --------------------------------------------------------------------------
345C 00019 DR55_FSR_InstXXX
345C C164 FFE8 00020 movff DR55_EVNTI, WREG
3460 0D10 00021 mullw DR55_INSTRECORD_LENGTH
3462 50F3 00022 movf PRODL, W
3464 26E1 00023 addwf FSR1L, F
3466 50F4 00024 movf PRODH, W
3468 22E2 00025 addwfc FSR1H, F
346A 0012 00026 return
00027
00028 ;; --------------------------------------------------------------------------
00029 ;; This function returns a FSR1 pointer to DR55_INSTNOTEx depending on
00030 ;; DR55_EVNTI.
00031 ;; --------------------------------------------------------------------------
346C 00032 DR55_FSR_InstNote
346C EE11 F000 00033 lfsr FSR1, DR55_INST0 + DR55_INSTNOTEx
00034 rgoto DR55_FSR_InstXXX
3470 D7F5 M bra label
00035
00036 ;; --------------------------------------------------------------------------
00037 ;; This function returns a FSR1 pointer to DR55_INSTVELx depending on
00038 ;; DR55_EVNTI.
00039 ;; --------------------------------------------------------------------------
3472 00040 DR55_FSR_InstVel
3472 EE11 F002 00041 lfsr FSR1, DR55_INST0 + DR55_INSTVELx
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 36
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00042 rgoto DR55_FSR_InstXXX
3476 D7F2 M bra label
00043
00044 ;; --------------------------------------------------------------------------
00045 ;; This function returns a FSR1 pointer to DR55_INSTTIMEx depending on
00046 ;; DR55_EVNTI.
00047 ;; --------------------------------------------------------------------------
3478 00048 DR55_FSR_InstTime
3478 EE11 F001 00049 lfsr FSR1, DR55_INST0 + DR55_INSTTIMEx
00050 rgoto DR55_FSR_InstXXX
347C D7EF M bra label
00051
00052 ;; --------------------------------------------------------------------------
00053 ;; This function returns a FSR1 pointer to DR55_INSTMODEx depending on
00054 ;; DR55_EVNTI.
00055 ;; --------------------------------------------------------------------------
347E 00056 DR55_FSR_InstMode
347E EE11 F002 00057 lfsr FSR1, DR55_INST0 + DR55_INSTMODEx
00058 rgoto DR55_FSR_InstXXX
3482 D7EC M bra label
00059
00060 ;; --------------------------------------------------------------------------
00061 ;; This function returns a FSR1 pointer to DR55_TRIGREQx depending on
00062 ;; DR55_EVNTI.
00063 ;; --------------------------------------------------------------------------
3484 00064 DR55_FSR_InstTrigReq
3484 EE11 F004 00065 lfsr FSR1, DR55_INST0 + DR55_TRIGREQx
00066 rgoto DR55_FSR_InstXXX
3488 D7E9 M bra label
00301 #include "DR55_eeprom.inc"
00001 ; $Id: dr55_dump.inc 2011-07-12 bd (Antichambre)
00002 ; bdupeyron@gmail.com 4 Djo'Boss DR-55
00003 ;
00004 ; MIDIbox DR55
00005 ; DR55 Dump functions
00006 ;
00007 ; ==========================================================================
00008 ;
00009 ; Copyright 1998-2006 Thorsten Klose (tk@midibox.org)
00010 ; Licensed for personal non-commercial use only.
00011 ; All other rights reserved.
00012 ;
00013 ; ==========================================================================
00014
00015 ;; --------------------------------------------------------------------------
00016 ;; This function handles EEPROM functions
00017 ;; --------------------------------------------------------------------------
348A 00018 DR55_EEProm_Preset_Handle
348A 0012 00019 return
00020
00021 ;; --------------------------------------------------------------------------
00022 ;; This function restores and inits the global data from EEPROM
00023 ;; --------------------------------------------------------------------------
348C 00024 DR55_EEProm_Preset_Read
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 37
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00025 ;; see "DR55_presets.inc" for the structure
00026
00027 ;; load Instruments Preset
348C 6AA9 00028 clrf EEADR
348E 6AAA 00029 clrf EEADRH
3490 EE01 F000 00030 lfsr FSR0, DR55_INST0
3494 0E50 00031 movlw 0x50
3496 6E06 00032 movwf TMP1
3498 00033 DR55_EEProm_Preset_ReadLoop
3498 ECB0 F016 00034 call MIOS_EEPROM_Read
349C 6EEE 00035 movwf POSTINC0
349E 2E06 00036 decfsz TMP1, F
00037 rgoto DR55_EEProm_Preset_ReadLoop
34A0 D7FB M bra label
00038
00039 ;; load Midi Channel
00040 SET_BSR DR55_BASE
34A2 0101 M movlb HIGH(reg)
34A4 ECB0 F016 00041 call MIOS_EEPROM_Read
34A8 6F62 00042 movwf DR55_MIDI_CHANNEL, BANKED
00043
00044 ;; load ACCENT registers
34AA ECB0 F016 00045 call MIOS_EEPROM_Read
34AE 6F74 00046 movwf DR55_INST0_ACC_MODE, BANKED
34B0 ECB0 F016 00047 call MIOS_EEPROM_Read
34B4 6F76 00048 movwf DR55_INST0_ACC_LAST_MODE, BANKED
34B6 ECB0 F016 00049 call MIOS_EEPROM_Read
34BA 6F75 00050 movwf DR55_INST0_ACC_THLD, BANKED
00051
00052 ;; load SYNC registers
34BC ECB0 F016 00053 call MIOS_EEPROM_Read
34C0 6F88 00054 movwf DR55_SYNC_EXT_CLK_DIVIDER_PRELOAD, BANKED
00055 SET_BSR DR55_BASE
34C2 0101 M movlb HIGH(reg)
34C4 0012 00056 return
00057
00058 ;; --------------------------------------------------------------------------
00059 ;; This function saves the global settings in EEPROM
00060 ;; --------------------------------------------------------------------------
34C6 00061 DR55_EEProm_Preset_Save
00062 IRQ_DISABLE
34C6 9EF2 M bcf INTCON, GIE
00063
00064 ;; see "DR55_presets.inc" for the structure
00065 SET_BSR DR55_BASE
34C8 0101 M movlb HIGH(reg)
00066 ;; save Instruments Preset
34CA 6AA9 00067 clrf EEADR
34CC 6AAA 00068 clrf EEADRH
34CE EE01 F000 00069 lfsr FSR0, DR55_INST0
34D2 0E50 00070 movlw 0x50
34D4 6E06 00071 movwf TMP1
34D6 00072 DR55_EEProm_Preset_SaveLoop
34D6 50EE 00073 movf POSTINC0, W
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 38
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
34D8 ECB2 F016 00074 call MIOS_EEPROM_Write
34DC 2E06 00075 decfsz TMP1, F
00076 rgoto DR55_EEProm_Preset_SaveLoop
34DE D7FB M bra label
00077
00078 ;; save Midi Channel
00079 SET_BSR DR55_BASE
34E0 0101 M movlb HIGH(reg)
34E2 5162 00080 movf DR55_MIDI_CHANNEL, W, BANKED
34E4 ECB2 F016 00081 call MIOS_EEPROM_Write
00082 SET_BSR DR55_BASE
34E8 0101 M movlb HIGH(reg)
00083 ;; save ACCENT registers
34EA 5174 00084 movf DR55_INST0_ACC_MODE, W, BANKED
34EC ECB2 F016 00085 call MIOS_EEPROM_Write
00086 SET_BSR DR55_BASE
34F0 0101 M movlb HIGH(reg)
34F2 5176 00087 movf DR55_INST0_ACC_LAST_MODE, W, BANKED
34F4 ECB2 F016 00088 call MIOS_EEPROM_Write
00089 SET_BSR DR55_BASE
34F8 0101 M movlb HIGH(reg)
34FA 5175 00090 movf DR55_INST0_ACC_THLD, W, BANKED
34FC ECB2 F016 00091 call MIOS_EEPROM_Write
00092 SET_BSR DR55_BASE
3500 0101 M movlb HIGH(reg)
00093 ;; save SYNC registers
3502 5188 00094 movf DR55_SYNC_EXT_CLK_DIVIDER_PRELOAD, W, BANKED
3504 ECB2 F016 00095 call MIOS_EEPROM_Write
00096
00097 SET_BSR DR55_BASE
3508 0101 M movlb HIGH(reg)
00098
00099 IRQ_ENABLE
350A 8EF2 M bsf INTCON, GIE
350C 0012 00100 return
00302 #include "DR55_ccin.inc"
00001 ; $Id: dr55_ccin.inc 2011-07-12 bd (Antichambre)
00002 ; bdupeyron@gmail.com 4 Djo'Boss DR-55
00003 ;
00004 ; MIDIbox DR55
00005 ; CC Input Handling
00006 ;
00007 ; ==========================================================================
00008 ;
00009 ; Copyright 1998-2006 Thorsten Klose (tk@midibox.org)
00010 ; Licensed for personal non-commercial use only.
00011 ; All other rights reserved.
00012 ;
00013 ; ==========================================================================
00014
00015 ;; --------------------------------------------------------------------------
00016 ;; IN:
00017 ;; - index of CC parameter in WREG
00018 ;; - value in MIOS_PARAMETER1
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 39
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00019 ;; - track in MIOS_PARAMETER2
00020 ;; --------------------------------------------------------------------------
350E 00021 DR55_CCIN_Set
350E D895 00022 rcall DR55_CC_TABLE_Get ; prepare a CC action
00023 ;; now:
00024 ;; value is in MIOS_PARAMETER1
00025 ;; command is in MIOS_PARAMETER2
00026 ;; parameter is in FSR1 (pointer)
00027
3510 00028 DR55_CCIN_Set_Cmd
00029 ;; branch depending on command
3510 5004 00030 movf MIOS_PARAMETER2, W
00031 JUMPTABLE_2BYTES 10 ; entries
3512 0FF6 M addlw -(max_value) ; ensure that jump index is not greater than (max_value-1)
3514 B0D8 M skpnc
3516 0EF6 M movlw -(max_value)
3518 0F0A M addlw max_value
351A ECC8 F016 M call MIOS_HLP_GetIndex_2bytes
00032 rgoto DR55_CCIN_Cmd_NOP
351E D009 M bra label
00033 rgoto DR55_CCIN_Cmd_7
3520 D009 M bra label
00034 rgoto DR55_CCIN_Cmd_6L
3522 D00C M bra label
00035 rgoto DR55_CCIN_Cmd_3L
3524 D011 M bra label
00036 rgoto DR55_CCIN_Cmd_4L
3526 D017 M bra label
00037 rgoto DR55_CCIN_Cmd_4U
3528 D01C M bra label
00038 rgoto DR55_CCIN_Cmd_B10
352A D021 M bra label
00039 rgoto DR55_CCIN_Cmd_B32
352C D026 M bra label
00040 rgoto DR55_CCIN_Cmd_B54
352E D02C M bra label
00041 rgoto DR55_CCIN_Cmd_OmniOff
3530 D031 M bra label
00042
00043 ; ==========================================================================
00044
00045 ;; --------------------------------------------------------------------------
3532 00046 DR55_CCIN_Cmd_NOP
00047 ;; no jump to end, since no CS update is required
00048 ;; rgoto DR55_CCIN_Cmd_End
3532 0012 00049 return
00050
00051 ;; --------------------------------------------------------------------------
3534 00052 DR55_CCIN_Cmd_7
3534 5003 00053 movf MIOS_PARAMETER1, W
3536 0B7F 00054 andlw 0x7f
3538 6EE7 00055 movwf INDF1
00056 rgoto DR55_CCIN_Cmd_End
353A D02F M bra label
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 40
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00057
00058 ;; --------------------------------------------------------------------------
353C 00059 DR55_CCIN_Cmd_6L
353C 0EC0 00060 movlw 0xc0
353E 16E7 00061 andwf INDF1, F
3540 5003 00062 movf MIOS_PARAMETER1, W
3542 0B3F 00063 andlw 0x3f
3544 12E7 00064 iorwf INDF1, F
00065 rgoto DR55_CCIN_Cmd_End
3546 D029 M bra label
00066
00067 ;; --------------------------------------------------------------------------
3548 00068 DR55_CCIN_Cmd_3L
3548 0E08 00069 movlw 0x08
354A 6003 00070 cpfslt MIOS_PARAMETER1
00071 rgoto DR55_CCIN_Cmd_End
354C D026 M bra label
354E 5003 00072 movf MIOS_PARAMETER1, W
3550 0B07 00073 andlw 0x07
3552 6EE7 00074 movwf INDF1
00075 rgoto DR55_CCIN_Cmd_End
3554 D022 M bra label
00076
00077 ;; --------------------------------------------------------------------------
3556 00078 DR55_CCIN_Cmd_4L
3556 0EF0 00079 movlw 0xf0
3558 16E7 00080 andwf INDF1, F
355A 5003 00081 movf MIOS_PARAMETER1, W
355C 0B0F 00082 andlw 0x0f
355E 12E7 00083 iorwf INDF1, F
00084 rgoto DR55_CCIN_Cmd_End
3560 D01C M bra label
00085
00086 ;; --------------------------------------------------------------------------
3562 00087 DR55_CCIN_Cmd_4U
3562 0E0F 00088 movlw 0x0f
3564 16E7 00089 andwf INDF1, F
3566 3803 00090 swapf MIOS_PARAMETER1, W
3568 0BF0 00091 andlw 0xf0
356A 12E7 00092 iorwf INDF1, F
00093 rgoto DR55_CCIN_Cmd_End
356C D016 M bra label
00094
00095 ;; --------------------------------------------------------------------------
356E 00096 DR55_CCIN_Cmd_B10
356E 0EFC 00097 movlw 0xfc
3570 16E7 00098 andwf INDF1, F
3572 5003 00099 movf MIOS_PARAMETER1, W
3574 0B03 00100 andlw 0x03
3576 12E7 00101 iorwf INDF1, F
00102 rgoto DR55_CCIN_Cmd_End
3578 D010 M bra label
00103
00104 ;; --------------------------------------------------------------------------
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 41
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
357A 00105 DR55_CCIN_Cmd_B32
357A 0EF3 00106 movlw 0xf3
357C 16E7 00107 andwf INDF1, F
357E 3403 00108 rlf MIOS_PARAMETER1, W
3580 34E8 00109 rlf WREG, W
3582 0B0C 00110 andlw 0x0c
3584 12E7 00111 iorwf INDF1, F
00112 rgoto DR55_CCIN_Cmd_End
3586 D009 M bra label
00113
00114 ;; --------------------------------------------------------------------------
3588 00115 DR55_CCIN_Cmd_B54
3588 0ECF 00116 movlw 0xcf
358A 16E7 00117 andwf INDF1, F
358C 3803 00118 swapf MIOS_PARAMETER1, W
358E 0B30 00119 andlw 0x30
3590 12E7 00120 iorwf INDF1, F
00121 rgoto DR55_CCIN_Cmd_End
3592 D003 M bra label
00122
00123 ;; --------------------------------------------------------------------------
3594 00124 DR55_CCIN_Cmd_OmniOff
3594 EC27 F01C 00125 call DR55_INST_ClearAll
00126 rgoto DR55_CCIN_Cmd_End
3598 D000 M bra label
00127
00128 ;; --------------------------------------------------------------------------
359A 00129 DR55_CCIN_Cmd_End
00130 ;; request display update
00131 ;;bsf CS_STAT, CS_STAT_DISPLAY_UPDATE_REQ
00132 ;; and exit
359A 0012 00133 return
00134
00135
00136 ;; ==========================================================================
00303 #include "DR55_ccout.inc"
00001 ; $Id: dr55_ccout.inc 2011-07-12 bd (Antichambre)
00002 ; bdupeyron@gmail.com 4 Djo'Boss DR-55
00003 ;
00004 ; MIDIbox DR55
00005 ; CC Output Handling
00006 ;
00007 ; ==========================================================================
00008 ;
00009 ; Copyright 1998-2006 Thorsten Klose (tk@midibox.org)
00010 ; Licensed for personal non-commercial use only.
00011 ; All other rights reserved.
00012 ;
00013 ; ==========================================================================
00014
00015 ;; --------------------------------------------------------------------------
00016 ;; reacts on a CC dump request
00017 ;; --------------------------------------------------------------------------
359C 00018 DR55_CCOUT_Handler
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 42
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00019 ;; do nothing if dump has not been requested
359C A161 00020 btfss DR55_STAT, DR55_STAT_CC_DUMP_REQ
359E 0012 00021 return
00022
00023 ;; clear request
35A0 9161 00024 bcf DR55_STAT, DR55_STAT_CC_DUMP_REQ
00025
35A2 6A06 00026 clrf TMP1 ; TMP1 used as loop counter
35A4 00027 DR55_CCOUT_Handler_Loop
35A4 5006 00028 movf TMP1, W
35A6 ECEC F01A 00029 call DR55_CCOUT_Get ; get CC parameter value
35AA 6E07 00030 movwf TMP2 ; store value in TMP2
00031
35AC 5004 00032 movf MIOS_PARAMETER2, W
35AE E010 00033 bz DR55_CCOUT_Handler_Next ; next CC if command=DR55_CCOUT_Cmd_NOP
00034
00035 BRA_IFSET TMP2, 7, ACCESS, DR55_CCOUT_Handler_Next ; (returns WREG[7] if non-CC value)
35B0 BE07 M btfsc reg, bit, reg_a
35B2 D00E M bra label
00036
00037 ;; send CC
35B4 C162 FFE8 00038 movff DR55_MIDI_CHANNEL, WREG
35B8 09B0 00039 iorlw 0xb0
35BA EC24 F016 00040 call MIOS_MIDI_TxBufferPut
35BE 5006 00041 movf TMP1, W
35C0 EC24 F016 00042 call MIOS_MIDI_TxBufferPut
35C4 5007 00043 movf TMP2, W
35C6 EC24 F016 00044 call MIOS_MIDI_TxBufferPut
00045
35CA 0E08 00046 movlw 8 ; add a short delay of 8 mS for slow sequencers
35CC ECCE F016 00047 call MIOS_Delay
00048
35D0 00049 DR55_CCOUT_Handler_Next
35D0 2A06 00050 incf TMP1, F ; loop until 128 (bit 8 set)
00051 BRA_IFCLR TMP1, 7, ACCESS, DR55_CCOUT_Handler_Loop
35D2 AE06 M btfss reg, bit, reg_a
35D4 D7E7 M bra label
00052
35D6 0012 00053 return
00054
00055
00056 ;; --------------------------------------------------------------------------
00057 ;; IN: index of CC parameter in WREG, track in MIOS_PARAMETER2
00058 ;; OUT: CC value in WREG
00059 ;; --------------------------------------------------------------------------
35D8 00060 DR55_CCOUT_Get
35D8 D830 00061 rcall DR55_CC_TABLE_Get ; prepare a CC action
00062 ;; now:
00063 ;; command is in MIOS_PARAMETER2
00064 ;; parameter is in FSR1 (pointer)
00065
35DA 00066 DR55_CCOUT_Set_Cmd
00067 ;; branch depending on command
35DA 5004 00068 movf MIOS_PARAMETER2, W
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 43
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00069 JUMPTABLE_2BYTES 10 ; entries
35DC 0FF6 M addlw -(max_value) ; ensure that jump index is not greater than (max_value-1)
35DE B0D8 M skpnc
35E0 0EF6 M movlw -(max_value)
35E2 0F0A M addlw max_value
35E4 ECC8 F016 M call MIOS_HLP_GetIndex_2bytes
00070 rgoto DR55_CCOUT_Cmd_NOP
35E8 D009 M bra label
00071 rgoto DR55_CCOUT_Cmd_7
35EA D009 M bra label
00072 rgoto DR55_CCOUT_Cmd_6L
35EC D00B M bra label
00073 rgoto DR55_CCOUT_Cmd_3L
35EE D00D M bra label
00074 rgoto DR55_CCOUT_Cmd_4L
35F0 D00F M bra label
00075 rgoto DR55_CCOUT_Cmd_4U
35F2 D011 M bra label
00076 rgoto DR55_CCOUT_Cmd_B10
35F4 D013 M bra label
00077 rgoto DR55_CCOUT_Cmd_B32
35F6 D015 M bra label
00078 rgoto DR55_CCOUT_Cmd_B54
35F8 D018 M bra label
00079 rgoto DR55_CCOUT_Cmd_B76
35FA D01A M bra label
00080
00081 ; ==========================================================================
00082
00083
00084 ;; --------------------------------------------------------------------------
35FC 00085 DR55_CCOUT_Cmd_NOP
35FC 0012 00086 return
00087
00088 ;; --------------------------------------------------------------------------
35FE 00089 DR55_CCOUT_Cmd_7
35FE 50E7 00090 movf INDF1, W
3600 0B7F 00091 andlw 0x7f
3602 0012 00092 return
00093
00094 ;; --------------------------------------------------------------------------
3604 00095 DR55_CCOUT_Cmd_6L
3604 50E7 00096 movf INDF1, W
3606 0B3F 00097 andlw 0x3f
3608 0012 00098 return
00099
00100 ;; --------------------------------------------------------------------------
360A 00101 DR55_CCOUT_Cmd_3L
360A 50E7 00102 movf INDF1, W
360C 0B07 00103 andlw 0x07
360E 0012 00104 return
00105
00106 ;; --------------------------------------------------------------------------
3610 00107 DR55_CCOUT_Cmd_4L
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 44
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
3610 50E7 00108 movf INDF1, W
3612 0B0F 00109 andlw 0x0f
3614 0012 00110 return
00111
00112 ;; --------------------------------------------------------------------------
3616 00113 DR55_CCOUT_Cmd_4U
3616 38E7 00114 swapf INDF1, W
3618 0B0F 00115 andlw 0x0f
361A 0012 00116 return
00117
00118 ;; --------------------------------------------------------------------------
361C 00119 DR55_CCOUT_Cmd_B10
361C 50E7 00120 movf INDF1, W
361E 0B03 00121 andlw 0x03
3620 0012 00122 return
00123
00124 ;; --------------------------------------------------------------------------
3622 00125 DR55_CCOUT_Cmd_B32
3622 30E7 00126 rrf INDF1, W
3624 30E8 00127 rrf WREG, W
3626 0B03 00128 andlw 0x03
3628 0012 00129 return
00130
00131 ;; --------------------------------------------------------------------------
362A 00132 DR55_CCOUT_Cmd_B54
362A 38E7 00133 swapf INDF1, W
362C 0B03 00134 andlw 0x03
362E 0012 00135 return
00136
00137 ;; --------------------------------------------------------------------------
3630 00138 DR55_CCOUT_Cmd_B76
3630 38E7 00139 swapf INDF1, W
3632 30E8 00140 rrf WREG, W
3634 30E8 00141 rrf WREG, W
3636 0B03 00142 andlw 0x03
3638 0012 00143 return
00144
00145 ;; ==========================================================================
00304 #include "DR55_cc_table.inc"
00001 ; $Id: dr55_cc_table.inc 2011-07-12 bd (Antichambre)
00002 ; bdupeyron@gmail.com 4 Djo'Boss DR-55
00003 ;
00004 ; MIDIbox DR55
00005 ; CC Table
00006 ; used by DR55_ccin.inc and DR55_ccout.inc
00007 ;
00008 ; ==========================================================================
00009 ;
00010 ; Copyright 1998-2006 Thorsten Klose (tk@midibox.org)
00011 ; Licensed for personal non-commercial use only.
00012 ; All other rights reserved.
00013 ;
00014 ; ==========================================================================
00015
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 45
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00000000 00016 SET_CC_NOP EQU 0x00
00000001 00017 SET_CC_7 EQU 0x01
00000002 00018 SET_CC_6L EQU 0x02
00000003 00019 SET_CC_3L EQU 0x03
00000004 00020 SET_CC_4L EQU 0x04
00000005 00021 SET_CC_4U EQU 0x05
00000006 00022 SET_CC_B10 EQU 0x06
00000007 00023 SET_CC_B32 EQU 0x07
00000008 00024 SET_CC_B54 EQU 0x08
00000009 00025 SET_CC_OmniOff EQU 0x09
00026
00027 ;; --------------------------------------------------------------------------
00028 ;; IN: index of CC parameter in WREG, track number in MIOS_PARAMETER2
00029 ;; OUT: reads CC table and returns command and parameter
00030 ;; --------------------------------------------------------------------------
363A 00031 DR55_CC_TABLE_Get
00032 SET_BSR DR55_BASE ; prepare BSR for DR55 register access
363A 0101 M movlb HIGH(reg)
363C EE11 F000 00033 lfsr FSR1, DR55_INSTRUMENT_BUFFER ; prepare FSR1
3640 90D8 00034 clrc
3642 34E8 00035 rlf WREG, W
3644 0F5C 00036 addlw DR55_CC_TABLE & 0xff
3646 6EF6 00037 movwf TBLPTRL
3648 6AF7 00038 clrf TBLPTRH
364A 0E36 00039 movlw DR55_CC_TABLE >> 8
364C 22F7 00040 addwfc TBLPTRH, F
00041
364E 0009 00042 tblrd*+
3650 CFF5 F004 00043 movff TABLAT, MIOS_PARAMETER2 ; -> command
3654 0009 00044 tblrd*+
3656 CFF5 FFE1 00045 movff TABLAT, FSR1L ; -> parameter
365A 0012 00046 return
00047
00048 ; ==========================================================================
00049
365C 00050 DR55_CC_TABLE
00051 ;; 0x00-0x0f
365C 0000 00052 db SET_CC_NOP, 0 ; spare
365E 0000 00053 db SET_CC_NOP, 0 ; spare
3660 0000 00054 db SET_CC_NOP, 0 ; spare
3662 0000 00055 db SET_CC_NOP, 0 ; spare
3664 0000 00056 db SET_CC_NOP, 0 ; spare
3666 0000 00057 db SET_CC_NOP, 0 ; spare
3668 0000 00058 db SET_CC_NOP, 0 ; spare
366A 0000 00059 db SET_CC_NOP, 0 ; spare
366C 0000 00060 db SET_CC_NOP, 0 ; spare
366E 0000 00061 db SET_CC_NOP, 0 ; spare
3670 0000 00062 db SET_CC_NOP, 0 ; spare
3672 0000 00063 db SET_CC_NOP, 0 ; spare
3674 0000 00064 db SET_CC_NOP, 0 ; spare
3676 0000 00065 db SET_CC_NOP, 0 ; spare
3678 0000 00066 db SET_CC_NOP, 0 ; spare
367A 0000 00067 db SET_CC_NOP, 0 ; spare
00068
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 46
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00069 ;; 0x10-0x1f
367C 0000 00070 db SET_CC_NOP, 0 ; spare
367E 0000 00071 db SET_CC_NOP, 0 ; spare
3680 0000 00072 db SET_CC_NOP, 0 ; spare
3682 0000 00073 db SET_CC_NOP, 0 ; spare
3684 0000 00074 db SET_CC_NOP, 0 ; spare
3686 0000 00075 db SET_CC_NOP, 0 ; spare
3688 0000 00076 db SET_CC_NOP, 0 ; spare
368A 0000 00077 db SET_CC_NOP, 0 ; spare
368C 0000 00078 db SET_CC_NOP, 0 ; spare
368E 0000 00079 db SET_CC_NOP, 0 ; spare
3690 0000 00080 db SET_CC_NOP, 0 ; spare
3692 0000 00081 db SET_CC_NOP, 0 ; spare
3694 0000 00082 db SET_CC_NOP, 0 ; spare
3696 0000 00083 db SET_CC_NOP, 0 ; spare
3698 0000 00084 db SET_CC_NOP, 0 ; spare
369A 0000 00085 db SET_CC_NOP, 0 ; spare
00086
00087 ;; 0x20-0x27
369C 0000 00088 db SET_CC_NOP, 0 ; spare
369E 0000 00089 db SET_CC_NOP, 0 ; spare
36A0 0000 00090 db SET_CC_NOP, 0 ; spare
36A2 0000 00091 db SET_CC_NOP, 0 ; spare
36A4 0000 00092 db SET_CC_NOP, 0 ; spare
36A6 0000 00093 db SET_CC_NOP, 0 ; spare
36A8 0000 00094 db SET_CC_NOP, 0 ; spare
36AA 0000 00095 db SET_CC_NOP, 0 ; spare
36AC 0000 00096 db SET_CC_NOP, 0 ; spare
36AE 0000 00097 db SET_CC_NOP, 0 ; spare
36B0 0000 00098 db SET_CC_NOP, 0 ; spare
36B2 0000 00099 db SET_CC_NOP, 0 ; spare
36B4 0000 00100 db SET_CC_NOP, 0 ; spare
36B6 0000 00101 db SET_CC_NOP, 0 ; spare
36B8 0000 00102 db SET_CC_NOP, 0 ; spare
36BA 0000 00103 db SET_CC_NOP, 0 ; spare
00104
00105 ;; 0x30-0x3f
36BC 0000 00106 db SET_CC_NOP, 0 ; spare
36BE 0000 00107 db SET_CC_NOP, 0 ; spare
36C0 0000 00108 db SET_CC_NOP, 0 ; spare
36C2 0000 00109 db SET_CC_NOP, 0 ; spare
36C4 0000 00110 db SET_CC_NOP, 0 ; spare
36C6 0000 00111 db SET_CC_NOP, 0 ; spare
36C8 0000 00112 db SET_CC_NOP, 0 ; spare
36CA 0001 00113 db SET_CC_7, (DR55_INST0 + DR55_INSTNOTEx) & 0xff ;55
36CC 1001 00114 db SET_CC_7, (DR55_INST1 + DR55_INSTNOTEx) & 0xff ;56
36CE 2001 00115 db SET_CC_7, (DR55_INST2 + DR55_INSTNOTEx) & 0xff ;57
36D0 3001 00116 db SET_CC_7, (DR55_INST3 + DR55_INSTNOTEx) & 0xff ;58
36D2 4001 00117 db SET_CC_7, (DR55_INST4 + DR55_INSTNOTEx) & 0xff ;59
36D4 0000 00118 db SET_CC_NOP, 0 ; spare
36D6 0000 00119 db SET_CC_NOP, 0 ; spare
36D8 0000 00120 db SET_CC_NOP, 0 ; spare
36DA 0000 00121 db SET_CC_NOP, 0 ; spare
00122
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 47
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00123 ;; 0x40-0x4f
36DC 0000 00124 db SET_CC_NOP, 0 ; spare
36DE 0101 00125 db SET_CC_7, (DR55_INST0 + DR55_INSTTIMEx) & 0xff ;65
36E0 1101 00126 db SET_CC_7, (DR55_INST1 + DR55_INSTTIMEx) & 0xff ;66
36E2 2101 00127 db SET_CC_7, (DR55_INST2 + DR55_INSTTIMEx) & 0xff ;67
36E4 3101 00128 db SET_CC_7, (DR55_INST3 + DR55_INSTTIMEx) & 0xff ;68
36E6 4101 00129 db SET_CC_7, (DR55_INST4 + DR55_INSTTIMEx) & 0xff ;69
36E8 0000 00130 db SET_CC_NOP, 0 ; spare
36EA 0000 00131 db SET_CC_NOP, 0 ; spare
36EC 0000 00132 db SET_CC_NOP, 0 ; spare
36EE 0000 00133 db SET_CC_NOP, 0 ; spare
36F0 0000 00134 db SET_CC_NOP, 0 ; spare
36F2 7401 00135 db SET_CC_7, DR55_INST0_ACC_MODE & 0xff ;75
36F4 0000 00136 db SET_CC_NOP, 0 ; spare
36F6 0000 00137 db SET_CC_NOP, 0 ; spare
36F8 0000 00138 db SET_CC_NOP, 0 ; spare
36FA 0000 00139 db SET_CC_NOP, 0 ; spare
00140
00141 ;; 0x50-0x5f
36FC 0000 00142 db SET_CC_NOP, 0 ; spare
36FE 0000 00143 db SET_CC_NOP, 0 ; spare
3700 0000 00144 db SET_CC_NOP, 0 ; spare
3702 0000 00145 db SET_CC_NOP, 0 ; spare
3704 0000 00146 db SET_CC_NOP, 0 ; spare
3706 7501 00147 db SET_CC_7, DR55_INST0_ACC_THLD & 0xff ;85
3708 0000 00148 db SET_CC_NOP, 0 ; spare
370A 0000 00149 db SET_CC_NOP, 0 ; spare
370C 0000 00150 db SET_CC_NOP, 0 ; spare
370E 0000 00151 db SET_CC_NOP, 0 ; spare
3710 0000 00152 db SET_CC_NOP, 0 ; spare
3712 0000 00153 db SET_CC_NOP, 0 ; spare
3714 0000 00154 db SET_CC_NOP, 0 ; spare
3716 0000 00155 db SET_CC_NOP, 0 ; spare
3718 0000 00156 db SET_CC_NOP, 0 ; spare
371A 7601 00157 db SET_CC_7, DR55_INST0_ACC_LAST_MODE & 0xff ;95
00158
00159 ;; 0x60-0x6f
371C 0000 00160 db SET_CC_NOP, 0 ; spare
371E 0000 00161 db SET_CC_NOP, 0 ; spare
3720 0000 00162 db SET_CC_NOP, 0 ; spare
3722 0000 00163 db SET_CC_NOP, 0 ; spare
3724 8803 00164 db SET_CC_3L, DR55_SYNC_EXT_CLK_DIVIDER_PRELOAD & 0xff;100
3726 0000 00165 db SET_CC_NOP, 0 ; spare
3728 0000 00166 db SET_CC_NOP, 0 ; spare
372A 0000 00167 db SET_CC_NOP, 0 ; spare
372C 0000 00168 db SET_CC_NOP, 0 ; spare
372E 0000 00169 db SET_CC_NOP, 0 ; spare
3730 0000 00170 db SET_CC_NOP, 0 ; spare
3732 0000 00171 db SET_CC_NOP, 0 ; spare
3734 0000 00172 db SET_CC_NOP, 0 ; spare
3736 0000 00173 db SET_CC_NOP, 0 ; spare
3738 0000 00174 db SET_CC_NOP, 0 ; spare
373A 0000 00175 db SET_CC_NOP, 0 ; spare
00176
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 48
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00177 ;; 0x70-0x7f
373C 0000 00178 db SET_CC_NOP, 0 ; spare
373E 0000 00179 db SET_CC_NOP, 0 ; spare
3740 0000 00180 db SET_CC_NOP, 0 ; spare
3742 0000 00181 db SET_CC_NOP, 0 ; spare
3744 0000 00182 db SET_CC_NOP, 0 ; spare
3746 0000 00183 db SET_CC_NOP, 0 ; spare
3748 0000 00184 db SET_CC_NOP, 0 ; spare
374A 0000 00185 db SET_CC_NOP, 0 ; spare
374C 0000 00186 db SET_CC_NOP, 0 ; spare
374E 0000 00187 db SET_CC_NOP, 0 ; spare
3750 0000 00188 db SET_CC_NOP, 0 ; spare
3752 0000 00189 db SET_CC_NOP, 0 ; spare
3754 0009 00190 db SET_CC_OmniOff, 0 ; 124
3756 0000 00191 db SET_CC_NOP, 0 ; spare
3758 0000 00192 db SET_CC_NOP, 0 ; spare
375A 0000 00193 db SET_CC_NOP, 0 ; spare
00194
00195 ; ==========================================================================
00305 #include "DR55_inst.inc"
00001 ; $Id: dr55_inst.inc 2011-07-12 bd (Antichambre) (antichambre)
00002 ; bdupeyron@gmail.com 4 Djo'Boss DR-55
00003 ;
00004 ; MIDIbox DR55
00005 ; Functions related to Instruments triggers
00006 ;
00007 ; ==========================================================================
00008 ;
00009 ; Copyright 1998-2006 Thorsten Klose (tk@midibox.org)
00010 ; Licensed for personal non-commercial use only.
00011 ; All other rights reserved.
00012 ;
00013 ; ==========================================================================
00014
375C 00015 #define DR55_INST_TRIG_CLR_REQ 0 ; if set, the 8 GP leds on the left side won't be flashed
375C 00016 #define DR55_INST_TRIG_SET_REQ 1 ; if set, the 8 GP leds on the right side won't be flashed
00017
00018
00019 ;; --------------------------------------------------------------------------
00020 ;; This function initialyse Instrument Triggers
00021 ;; --------------------------------------------------------------------------
375C 00022 DR55_INST_Init
00023
00024
375C 0012 00025 return
00026
00027 ;; --------------------------------------------------------------------------
00028 ;; This function decrements time counters tick @0,25ms, must be call by timer
00029 ;; --------------------------------------------------------------------------
375E 00030 DR55_INST_Tick
00031 SET_BSR DR55_BASE
375E 0101 M movlb HIGH(reg)
00032
3760 00033 DR55_INST_Tick_INST0
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 49
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
3760 5150 00034 movf DR55_INST0_TIME_CTR, W, BANKED
3762 E005 00035 bz DR55_INST_Tick_INST1
3764 2F55 00036 decfsz DR55_INST0_TIME_SUB_CTR, F, BANKED
00037 rgoto DR55_INST_Tick_INST1
3766 D003 M bra label
3768 0750 00038 decf DR55_INST0_TIME_CTR, F, BANKED
376A 0E04 00039 movlw 4
376C 6F55 00040 movwf DR55_INST0_TIME_SUB_CTR, BANKED
00041
376E 00042 DR55_INST_Tick_INST1
376E 5151 00043 movf DR55_INST1_TIME_CTR, W, BANKED
3770 E005 00044 bz DR55_INST_Tick_INST2
3772 2F56 00045 decfsz DR55_INST1_TIME_SUB_CTR, F, BANKED
00046 rgoto DR55_INST_Tick_INST2
3774 D003 M bra label
3776 0751 00047 decf DR55_INST1_TIME_CTR, F, BANKED
3778 0E04 00048 movlw 4
377A 6F56 00049 movwf DR55_INST1_TIME_SUB_CTR, BANKED
00050
377C 00051 DR55_INST_Tick_INST2
377C 5152 00052 movf DR55_INST2_TIME_CTR, W, BANKED
377E E005 00053 bz DR55_INST_Tick_INST3
3780 2F57 00054 decfsz DR55_INST2_TIME_SUB_CTR, F, BANKED
00055 rgoto DR55_INST_Tick_INST3
3782 D003 M bra label
3784 0752 00056 decf DR55_INST2_TIME_CTR, F, BANKED
3786 0E04 00057 movlw 4
3788 6F57 00058 movwf DR55_INST2_TIME_SUB_CTR, BANKED
00059
378A 00060 DR55_INST_Tick_INST3
378A 5153 00061 movf DR55_INST3_TIME_CTR, W, BANKED
378C E005 00062 bz DR55_INST_Tick_INST4
378E 2F58 00063 decfsz DR55_INST3_TIME_SUB_CTR, F, BANKED
00064 rgoto DR55_INST_Tick_INST4
3790 D003 M bra label
3792 0753 00065 decf DR55_INST3_TIME_CTR, F, BANKED
3794 0E04 00066 movlw 4
3796 6F58 00067 movwf DR55_INST3_TIME_SUB_CTR, BANKED
00068
3798 00069 DR55_INST_Tick_INST4
3798 5154 00070 movf DR55_INST4_TIME_CTR, W, BANKED
379A E005 00071 bz DR55_INST_Tick_End
379C 2F59 00072 decfsz DR55_INST4_TIME_SUB_CTR, F, BANKED
00073 rgoto DR55_INST_Tick_End
379E D003 M bra label
37A0 0754 00074 decf DR55_INST4_TIME_CTR, F, BANKED
37A2 0E04 00075 movlw 4
37A4 6F59 00076 movwf DR55_INST4_TIME_SUB_CTR, BANKED
00077
37A6 00078 DR55_INST_Tick_End
00079
37A6 0012 00080 return
00081
00082
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 50
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00083 ;; --------------------------------------------------------------------------
00084 ;; This function is called from User to update all triggers
00085 ;; that have been requested at the same moment
00086 ;; --------------------------------------------------------------------------
37A8 00087 DR55_INST_Handle
00088 SET_BSR DR55_BASE
37A8 0101 M movlb HIGH(reg)
37AA EE21 F050 00089 lfsr FSR2, DR55_INST0_TIME_CTR
00090
37AE 6B64 00091 clrf DR55_EVNTI, BANKED
37B0 00092 DR55_INST_Handle_Loop
00093
37B0 5164 00094 movf DR55_EVNTI, W, BANKED ; ACCENT
37B2 E10E 00095 bnz DR55_INST_Handle_Norm
00096
37B4 00097 DR55_INST_Handle_Acc_NotFollow
37B4 5174 00098 movf DR55_INST0_ACC_MODE, W, BANKED ; check Accent Mode
37B6 E00C 00099 bz DR55_INST_Handle_Norm
00100
37B8 EE11 F001 00101 lfsr FSR1, DR55_INST0+DR55_INSTTIMEx ; check Acc if time in note mode
37BC 50E7 00102 movf INDF1, W
37BE E02E 00103 bz DR55_INST_Handle_Cont
00104
37C0 5164 00105 movf DR55_EVNTI, W, BANKED ; check time ctr
37C2 50DB 00106 movf PLUSW2, W
37C4 E12B 00107 bnz DR55_INST_Handle_Cont
00108
37C6 00109 DR55_INST_Handle_Acc_NotFollow_ClrReq
37C6 EC42 F01A 00110 call DR55_FSR_InstTrigReq ; acc clear requested
37CA 0E01 00111 movlw 1
37CC 6EE7 00112 movwf INDF1
00113 rgoto DR55_INST_Handle_Cont
37CE D026 M bra label
00114
37D0 00115 DR55_INST_Handle_Norm
37D0 EC3F F01A 00116 call DR55_FSR_InstMode ; check if in note mode
37D4 50E7 00117 movf INDF1, W
37D6 E022 00118 bz DR55_INST_Handle_Cont
00119
37D8 5164 00120 movf DR55_EVNTI, W, BANKED ; check time ctr
37DA 50DB 00121 movf PLUSW2, W
37DC E11F 00122 bnz DR55_INST_Handle_Cont
00123
37DE 00124 DR55_INST_Handle_Acc_Follow
37DE 5174 00125 movf DR55_INST0_ACC_MODE, W, BANKED ; check Accent Mode
37E0 E019 00126 bz DR55_INST_Handle_Norm_ClrReq
00127
37E2 EE11 F001 00128 lfsr FSR1, DR55_INST0+DR55_INSTTIMEx
37E6 50E7 00129 movf INDF1, W
37E8 E115 00130 bnz DR55_INST_Handle_Norm_ClrReq
00131
37EA 5164 00132 movf DR55_EVNTI, W, BANKED
37EC 04E8 00133 decf WREG, W
37EE ECC6 F016 00134 call MIOS_HLP_GetBitORMask
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 51
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
37F2 6E06 00135 movwf TMP1
00136
37F4 5176 00137 movf DR55_INST0_ACC_LAST_MODE, W, BANKED ; First Last Mode
37F6 E005 00138 bz DR55_INST_Handle_Acc_Follow_First
00139
37F8 00140 DR55_INST_Handle_Acc_Follow_Last ; Last Mode
37F8 5177 00141 movf DR55_INST0_ACC_LAST_ASGN, W, BANKED
37FA 1806 00142 xorwf TMP1, W
37FC E10B 00143 bnz DR55_INST_Handle_Norm_ClrReq ; check if mode flag equal instrument number
37FE 6B77 00144 clrf DR55_INST0_ACC_LAST_ASGN, BANKED
00145 rgoto DR55_INST_Handle_Acc_Follow_ClrReq
3800 D005 M bra label
00146
3802 00147 DR55_INST_Handle_Acc_Follow_First ; First Mode
3802 5177 00148 movf DR55_INST0_ACC_LAST_ASGN, W, BANKED
3804 1806 00149 xorwf TMP1, W
3806 1777 00150 andwf DR55_INST0_ACC_LAST_ASGN, F, BANKED
3808 5177 00151 movf DR55_INST0_ACC_LAST_ASGN, W, BANKED
380A E104 00152 bnz DR55_INST_Handle_Norm_ClrReq ; check if mode flag equal instrument number
00153 ;;rgoto DR55_MIDI_NoteOff_Acc_ClrReq
00154
380C 00155 DR55_INST_Handle_Acc_Follow_ClrReq
380C EE11 F004 00156 lfsr FSR1, DR55_INST0+DR55_TRIGREQx ; acc clear requested
3810 0E01 00157 movlw 1
3812 6EE7 00158 movwf INDF1
00159
3814 00160 DR55_INST_Handle_Norm_ClrReq
3814 EC42 F01A 00161 call DR55_FSR_InstTrigReq ; clear requested
3818 0E01 00162 movlw 1
381A 6EE7 00163 movwf INDF1
381C 00164 DR55_INST_Handle_Cont
00165
381C EC42 F01A 00166 call DR55_FSR_InstTrigReq
3820 5164 00167 movf DR55_EVNTI, W, BANKED
00168 BRA_IFSET INDF1, DR55_INST_TRIG_CLR_REQ, ACCESS, DR55_INST_Handle_Clr
3822 B0E7 M btfsc reg, bit, reg_a
3824 D009 M bra label
00169 BRA_IFCLR INDF1, DR55_INST_TRIG_SET_REQ, ACCESS, DR55_INST_Handle_Loop_Next
3826 A2E7 M btfss reg, bit, reg_a
3828 D00D M bra label
00170
00171 ;;Set trigger
382A 00172 DR55_INST_Handle_Set
00173
382A 6AE7 00174 clrf INDF1
382C B4E8 00175 btfsc WREG, 2
382E 28E8 00176 incf WREG,W ; increment W(DR55_EVNTI) if equal 4
3830 ECC6 F016 00177 call MIOS_HLP_GetBitORMask ; get pin mask
3834 1289 00178 iorwf LATA, F
00179 rgoto DR55_INST_Handle_Loop_Next
3836 D006 M bra label
00180
00181 ;;Clear trigger
3838 00182 DR55_INST_Handle_Clr
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 52
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
3838 6AE7 00183 clrf INDF1
383A B4E8 00184 btfsc WREG, 2 ; increment W(DR55_EVNTI) if equal 4
383C 28E8 00185 incf WREG,W
383E ECC4 F016 00186 call MIOS_HLP_GetBitANDMask ; get pin mask
3842 1689 00187 andwf LATA, F
00188
3844 00189 DR55_INST_Handle_Loop_Next
3844 2B64 00190 incf DR55_EVNTI, F, BANKED
3846 0E04 00191 movlw 5-1
3848 6564 00192 cpfsgt DR55_EVNTI, BANKED
00193 rgoto DR55_INST_Handle_Loop
384A D7B2 M bra label
00194
384C 00195 DR55_INST_Handle_End
384C 0012 00196 return
00197
00198
00199 ;; --------------------------------------------------------------------------
00200 ;; This function is called from Omni Off (Panic), if error in program :-O
00201 ;; --------------------------------------------------------------------------
384E 00202 DR55_INST_ClearAll
00203 SET_BSR DR55_BASE
384E 0101 M movlb HIGH(reg)
00204
3850 9089 00205 bcf LATA, 0
3852 9289 00206 bcf LATA, 1
3854 9489 00207 bcf LATA, 2
3856 9689 00208 bcf LATA, 3
3858 9A89 00209 bcf LATA, 5
00210
385A 00211 DR55_INST_ClearAll_End
385A 0012 00212 return
00306 #include "DR55_midi.inc"
00001 ; $Id: dr55_midi.inc 2011-07-12 bd (Antichambre)
00002 ; bdupeyron@gmail.com 4 Djo'Boss DR-55
00003 ;
00004 ; MIDIboxDR55
00005 ; MIDI Interface part
00006 ;
00007 ; ==========================================================================
00008 ;
00009 ; Copyright 1998-2006 Thorsten Klose (tk@midibox.org)
00010 ; Licensed for personal non-commercial use only.
00011 ; All other rights reserved.
00012 ;
00013 ; ==========================================================================
00014
00015 ;; --------------------------------------------------------------------------
00016 ;; This function is called from USER_MIDI_NotifyRx when a MIDI byte has
00017 ;; been received. It's used to check for MIDI clock events
00018 ;; Note that this is an interrupt service routine! Use FSR2 instead of FSR0
00019 ;; and IRQ_TMPx instead of TMPx -- and make the routine as fast as possible!
00020 ;; Input:
00021 ;; o received byte in WREG
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 53
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00022 ;; --------------------------------------------------------------------------
385C 00023 DR55_MIDI_NotifyRx
385C 6E0B 00024 movwf IRQ_TMP1
00025 SET_BSR DR55_BASE
385E 0101 M movlb HIGH(reg)
00026
00027 ;; notify clock event if received
3860 0EF8 00028 movlw 0xf8
3862 620B 00029 cpfseq IRQ_TMP1, ACCESS
00030 rgoto DR55_MIDI_NotifyRx_NoClk
3864 D00C M bra label
3866 00031 DR55_MIDI_NotifyRx_Clk
00032
00033 ;; we've measured a new delay between two F8 events
3866 5185 00034 movf DR55_SYNC_INCOMING_CLK_CTR, W, BANKED
3868 6F86 00035 movwf DR55_SYNC_INCOMING_CLK_DELAY, BANKED
386A 6B85 00036 clrf DR55_SYNC_INCOMING_CLK_CTR, BANKED
00037
00038 ;; increment clock counter by 4 - DR55_SENT_CLK_CTR and ensure that the clock won't be echoed
386C 5183 00039 movf DR55_SYNC_SENT_CLK_CTR, W, BANKED
386E 0804 00040 sublw 4
3870 2782 00041 addwf DR55_SYNC_CLK_REQ_CTR, F, BANKED
00042
00043 ;; clear interpolation clock counter and get new SENT_CLK delay
3872 6B83 00044 clrf DR55_SYNC_SENT_CLK_CTR, BANKED
3874 3186 00045 rrf DR55_SYNC_INCOMING_CLK_DELAY, W, BANKED
3876 30E8 00046 rrf WREG, W
3878 0B3F 00047 andlw 0x3f
387A 6F84 00048 movwf DR55_SYNC_SENT_CLK_DELAY, BANKED
00049
00050 ;; (more infos can be found in the header of DR55_bpm.inc)
387C 0012 00051 return
387E 00052 DR55_MIDI_NotifyRx_NoClk
00053
00054
387E 0EFA 00055 movlw 0xfa
3880 620B 00056 cpfseq IRQ_TMP1, ACCESS
00057 rgoto DR55_MIDI_NotifyRx_NoStart
3882 D006 M bra label
3884 00058 DR55_MIDI_NotifyRx_Start
00059
00060 ;; request DR55_SYNC start
3884 0E21 00061 movlw (1 << DR55_SYNC_REQ_START) | (1 << DR55_SYNC_REQ_NOECHO)
3886 1380 00062 iorwf DR55_SYNC_REQ, F, BANKED
00063
00064 ;; cancel all requested clocks
3888 6B82 00065 clrf DR55_SYNC_CLK_REQ_CTR, BANKED
388A 0E03 00066 movlw 3
388C 6F83 00067 movwf DR55_SYNC_SENT_CLK_CTR, BANKED
00068
00069 rgoto DR55_MIDI_NotifyRx_Start_Cont
388E D005 M bra label
3890 00070 DR55_MIDI_NotifyRx_NoStart
00071
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 54
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
3890 0EFB 00072 movlw 0xfb
3892 620B 00073 cpfseq IRQ_TMP1, ACCESS
00074 rgoto DR55_MIDI_NotifyRx_NoCont
3894 D004 M bra label
3896 00075 DR55_MIDI_NotifyRx_Cont
00076 ;; request DR55uencer continue
3896 0E22 00077 movlw (1 << DR55_SYNC_REQ_CONT) | (1 << DR55_SYNC_REQ_NOECHO)
3898 1380 00078 iorwf DR55_SYNC_REQ, F, BANKED
389A 00079 DR55_MIDI_NotifyRx_Start_Cont
00080
00081 ;; clear stop request
389A 9580 00082 bcf DR55_SYNC_REQ, DR55_SYNC_REQ_STOP, BANKED
00083
389C 0012 00084 return
389E 00085 DR55_MIDI_NotifyRx_NoCont
00086
389E 0EFC 00087 movlw 0xfc
38A0 620B 00088 cpfseq IRQ_TMP1, ACCESS
00089 rgoto DR55_MIDI_NotifyRx_NoStop
38A2 D003 M bra label
38A4 00090 DR55_SYSEX_SysExCheck_Stop
00091
38A4 0E24 00092 movlw (1 << DR55_SYNC_REQ_STOP) | (1 << DR55_SYNC_REQ_NOECHO)
38A6 1380 00093 iorwf DR55_SYNC_REQ, F, BANKED
38A8 0012 00094 return
38AA 00095 DR55_MIDI_NotifyRx_NoStop
00096
38AA 00097 DR55_MIDI_NotifyRx_SPos
00098
00099 ;; exit if realtime event has been received
38AA 0EF8 00100 movlw 0xf8
38AC 600B 00101 cpfslt IRQ_TMP1, ACCESS
00102 rgoto DR55_MIDI_NotifyRx_SPos_End
38AE D01B M bra label
00103
00104 ;; clear state if status byte (like 0xf2...)
38B0 BE0B 00105 btfsc IRQ_TMP1, 7
38B2 6B8C 00106 clrf DR55_SYNC_MIDIPOS_STATE, BANKED
00107
00108 ;; check sequence (state used as byte counter here)
38B4 518C 00109 movf DR55_SYNC_MIDIPOS_STATE, W, BANKED
38B6 E004 00110 bz DR55_MIDI_NotifyRx_SPos_F2_0 ; checks for 0xf2
38B8 0FFF 00111 addlw -1
38BA E009 00112 bz DR55_MIDI_NotifyRx_SPos_F2_LSB ; get position, low-byte
38BC 0FFF 00113 addlw -1
38BE E00A 00114 bz DR55_MIDI_NotifyRx_SPos_F2_MSB ; get position, high-byte
00115 ;; this position should never be reached - handle it like checking for F2
38C0 00116 DR55_MIDI_NotifyRx_SPos_F2_0 ; checks for 0xF2
38C0 0EF2 00117 movlw 0xf2
00118 ;; rgoto SEQ_MIDI_NotifyRx_SPos_Syx_Check
38C2 00119 DR55_MIDI_NotifyRx_SPos_Syx_Check
38C2 620B 00120 cpfseq IRQ_TMP1, ACCESS
00121 rgoto DR55_MIDI_NotifyRx_SPos_Syx_Inv
38C4 D002 M bra label
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 55
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00122
00123 ;; if byte matches, increment the state number and exit handler
38C6 00124 DR55_MIDI_NotifyRx_SPos_Syx_Match
38C6 2B8C 00125 incf DR55_SYNC_MIDIPOS_STATE, F, BANKED
00126 rgoto DR55_MIDI_NotifyRx_SPos_End
38C8 D00E M bra label
00127
00128 ;; if byte doesn't match, clear state number and exit handler
38CA 00129 DR55_MIDI_NotifyRx_SPos_Syx_Inv
38CA 6B8C 00130 clrf DR55_SYNC_MIDIPOS_STATE, BANKED
00131 rgoto DR55_MIDI_NotifyRx_SPos_End
38CC D00C M bra label
00132
00133
38CE 00134 DR55_MIDI_NotifyRx_SPos_F2_LSB ; temp. store low-byte of position
38CE C00B F18E 00135 movff IRQ_TMP1, DR55_SYNC_MIDIPOS_LSB
00136 rgoto DR55_MIDI_NotifyRx_SPos_Syx_Match
38D2 D7F9 M bra label
00137
38D4 00138 DR55_MIDI_NotifyRx_SPos_F2_MSB ; get high-byte and refresh clock position
00139 ;; copy first bit of MSB to bit #7 of LSB
38D4 B00B 00140 btfsc IRQ_TMP1, 0
38D6 8F8E 00141 bsf DR55_SYNC_MIDIPOS_LSB, 7, BANKED
00142 ;; and shift MSB to the right
38D8 90D8 00143 clrc
38DA 300B 00144 rrf IRQ_TMP1, W
38DC 6F8D 00145 movwf DR55_SYNC_MIDIPOS_MSB, BANKED
00146
00147 ;; cancel all requested clocks
38DE 6B82 00148 clrf DR55_SYNC_CLK_REQ_CTR, BANKED
38E0 0E03 00149 movlw 3
38E2 6F83 00150 movwf DR55_SYNC_SENT_CLK_CTR, BANKED
00151
00152 ;; request new sequencer position
38E4 8780 00153 bsf DR55_SYNC_REQ, DR55_SYNC_REQ_SONG_POS, BANKED
00154 ;; rgoto SEQ_MIDI_NotifyRx_SPos_End
00155
38E6 00156 DR55_MIDI_NotifyRx_SPos_End
38E6 00157 DR55_MIDI_NotifyRx_End
38E6 0012 00158 return
00159
00160
00161 ;; --------------------------------------------------------------------------
00162 ;; This function is called by USER_MIDI_NotifyReceivedEvent when a complete
00163 ;; MIDI event has been received
00164 ;; Input:
00165 ;; o first MIDI event byte in MIOS_PARAMETER1
00166 ;; o second MIDI event byte in MIOS_PARAMETER2
00167 ;; o third MIDI event byte in MIOS_PARAMETER3
00168 ;; --------------------------------------------------------------------------
38E8 00169 DR55_MIDI_NotifyReceivedEvent
00170 ;; branch to appr. DR55 routine depending on received event
38E8 3803 00171 swapf MIOS_PARAMETER1, W
38EA 0B07 00172 andlw 0x07
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 56
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00173 JUMPTABLE_2BYTES_UNSECURE
38EC ECC8 F016 M call MIOS_HLP_GetIndex_2bytes
00174 rgoto DR55_MIDI_NoteOff
38F0 D083 M bra label
00175 rgoto DR55_MIDI_NoteOn
38F2 D006 M bra label
00176 rgoto DR55_MIDI_AfterTouch
38F4 D0CA M bra label
00177 rgoto DR55_MIDI_CC
38F6 D0B9 M bra label
00178 rgoto DR55_MIDI_ProgramChange
38F8 D0C6 M bra label
00179 rgoto DR55_MIDI_PolyAfterTouch
38FA D0C6 M bra label
00180 rgoto DR55_MIDI_PitchBender
38FC D0B5 M bra label
38FE 0012 00181 return
00182
00183 ;; --------------------------------------------------------------------------
00184 ;; This function is rcalled to forward a Note On event to the synthesizer
00185 ;; Input:
00186 ;; o first MIDI event byte in MIOS_PARAMETER1
00187 ;; o second MIDI event byte in MIOS_PARAMETER2
00188 ;; o third MIDI event byte in MIOS_PARAMETER3
00189 ;; --------------------------------------------------------------------------
3900 00190 DR55_MIDI_NoteOn
00191 SET_BSR DR55_BASE ; prepare BSR for DR55 register access
3900 0101 M movlb HIGH(reg)
00192
3902 5005 00193 movf MIOS_PARAMETER3, W ; branch to NoteOff if velocity is zero
3904 B4D8 00194 skpnz
00195 rgoto DR55_MIDI_NoteOff
3906 D078 M bra label
00196
00197
00198 ;; go through list of instruments
00199 ;; search for matching MIDI channel and note definition
3908 6B64 00200 clrf DR55_EVNTI, BANKED
390A 00201 DR55_MIDI_NoteOn_Loop
00202
390A 5162 00203 movf DR55_MIDI_CHANNEL, W, BANKED ; check for matching MIDI channel
390C 1803 00204 xorwf MIOS_PARAMETER1, W
390E 0B0F 00205 andlw 0x0f
3910 E16E 00206 bnz DR55_MIDI_NoteOn_Loop_Next
00207
3912 5164 00208 movf DR55_EVNTI, W, BANKED ; ACCENT
3914 E119 00209 bnz DR55_MIDI_NoteOn_NoAcc_Cont
00210
3916 00211 DR55_MIDI_NoteOn_Acc
3916 5174 00212 movf DR55_INST0_ACC_MODE, W, BANKED ; check Accent Mode
3918 E16A 00213 bnz DR55_MIDI_NoteOn_Loop_Next
00214
391A 00215 DR55_MIDI_NoteOn_Acc_Note
391A EC36 F01A 00216 call DR55_FSR_InstNote ; check for matching MIDI note
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 57
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
391E 50E7 00217 movf INDF1, W
3920 1804 00218 xorwf MIOS_PARAMETER2, W
3922 E165 00219 bnz DR55_MIDI_NoteOn_Loop_Next
00220
3924 EC3C F01A 00221 call DR55_FSR_InstTime ; check if time in note mode
3928 EE21 F050 00222 lfsr FSR2, DR55_INST0_TIME_CTR
392C 5164 00223 movf DR55_EVNTI, W, BANKED
392E CFE7 FFDB 00224 movff INDF1, PLUSW2
00225
3932 CFE7 F006 00226 movff INDF1, TMP1
3936 EC3F F01A 00227 call DR55_FSR_InstMode
393A C006 FFE7 00228 movff TMP1, INDF1
00229
393E EC42 F01A 00230 call DR55_FSR_InstTrigReq ; set trigger request
3942 2AE7 00231 incf INDF1, F
3944 2AE7 00232 incf INDF1, F
00233 rgoto DR55_MIDI_NoteOn_Loop_Next
3946 D053 M bra label
00234
3948 00235 DR55_MIDI_NoteOn_NoAcc_Cont
3948 EC36 F01A 00236 call DR55_FSR_InstNote ; check for matching MIDI note
394C 50E7 00237 movf INDF1, W
394E 1804 00238 xorwf MIOS_PARAMETER2, W
3950 E14E 00239 bnz DR55_MIDI_NoteOn_Loop_Next
00240
3952 EC3C F01A 00241 call DR55_FSR_InstTime ; check time mode
3956 50E7 00242 movf INDF1, W
3958 E009 00243 bz DR55_MIDI_NoteOn_NoAcc_Cont2
00244
395A 00245 DR55_MIDI_NoteOn_NoAcc_Cont1 ; not note time mode
395A EE21 F050 00246 lfsr FSR2, DR55_INST0_TIME_CTR ; push to counter
395E 5164 00247 movf DR55_EVNTI, W, BANKED
3960 CFE7 FFDB 00248 movff INDF1, PLUSW2
3964 EC3F F01A 00249 call DR55_FSR_InstMode
3968 68E7 00250 setf INDF1 ; set flag mode
00251 rgoto DR55_MIDI_NoteOn_NoAcc_Set
396A D004 M bra label
00252
396C 00253 DR55_MIDI_NoteOn_NoAcc_Cont2 ; note off time mode
396C EC3F F01A 00254 call DR55_FSR_InstMode
3970 6AE7 00255 clrf INDF1 ; clear flag mode
00256 rgoto DR55_MIDI_NoteOn_NoAcc_Set
3972 D000 M bra label
00257
3974 00258 DR55_MIDI_NoteOn_NoAcc_Set
3974 EC42 F01A 00259 call DR55_FSR_InstTrigReq ; set trigger request
3978 0E02 00260 movlw 2
397A 6EE7 00261 movwf INDF1
00262
397C 00263 DR55_MIDI_NoteOn_NoAcc_Test
397C 5174 00264 movf DR55_INST0_ACC_MODE, W, BANKED ; check Accent Mode
397E E037 00265 bz DR55_MIDI_NoteOn_Loop_Next
00266
3980 00267 DR55_MIDI_NoteOn_Acc_Vel
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 58
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
3980 5175 00268 movf DR55_INST0_ACC_THLD, W, BANKED ; test if instrument velocity > threshold
3982 6405 00269 cpfsgt MIOS_PARAMETER3
00270 rgoto DR55_MIDI_NoteOn_Loop_Next
3984 D034 M bra label
00271
3986 EE11 F001 00272 lfsr FSR1, DR55_INST0+DR55_INSTTIMEx ; copy or take time
398A 50E7 00273 movf INDF1, W
398C E004 00274 bz DR55_MIDI_NoteOn_Acc_Vel_Copy
00275
398E 00276 DR55_MIDI_NoteOn_Acc_Vel_Take
398E EE11 F001 00277 lfsr FSR1, DR55_INST0+DR55_INSTTIMEx ; take accent time
3992 50E7 00278 movf INDF1, W
3994 E114 00279 bnz DR55_MIDI_NoteOn_Acc_Vel_Timed
00280
3996 00281 DR55_MIDI_NoteOn_Acc_Vel_Copy
3996 EC3C F01A 00282 call DR55_FSR_InstTime ; copy instrument time to accent time
399A 50E7 00283 movf INDF1, W
399C E110 00284 bnz DR55_MIDI_NoteOn_Acc_Vel_Timed
00285
399E 00286 DR55_MIDI_NoteOn_Acc_Vel_NoteOff ; note off time mode
399E EE11 F002 00287 lfsr FSR1, DR55_INST0+DR55_INSTMODEx
39A2 6AE7 00288 clrf INDF1 ; clear flag mode
39A4 5164 00289 movf DR55_EVNTI, W, BANKED
39A6 04E8 00290 decf WREG, W
39A8 ECC6 F016 00291 call MIOS_HLP_GetBitORMask
39AC 6E06 00292 movwf TMP1
00293
39AE 5176 00294 movf DR55_INST0_ACC_LAST_MODE, W, BANKED
39B0 E003 00295 bz DR55_MIDI_NoteOn_Acc_Vel_NoteOff_First
00296
39B2 00297 DR55_MIDI_NoteOn_Acc_Vel_NoteOff_Last
39B2 5006 00298 movf TMP1, W
39B4 6F77 00299 movwf DR55_INST0_ACC_LAST_ASGN, BANKED
00300 rgoto DR55_MIDI_NoteOn_Acc_Vel_Set
39B6 D016 M bra label
00301
39B8 00302 DR55_MIDI_NoteOn_Acc_Vel_NoteOff_First
39B8 5006 00303 movf TMP1, W
39BA 1377 00304 iorwf DR55_INST0_ACC_LAST_ASGN, BANKED
00305 rgoto DR55_MIDI_NoteOn_Acc_Vel_Set
39BC D013 M bra label
00306
39BE 00307 DR55_MIDI_NoteOn_Acc_Vel_Timed ; not note off time mode
39BE EE21 F050 00308 lfsr FSR2, DR55_INST0_TIME_CTR
39C2 6EDF 00309 movwf INDF2 ; push to Acc counter
39C4 EE11 F002 00310 lfsr FSR1, DR55_INST0+DR55_INSTMODEx
39C8 68E7 00311 setf INDF1 ; set flag mode
39CA 5164 00312 movf DR55_EVNTI, W, BANKED
39CC 04E8 00313 decf WREG, W
39CE ECC6 F016 00314 call MIOS_HLP_GetBitORMask
39D2 6E06 00315 movwf TMP1
00316
39D4 5176 00317 movf DR55_INST0_ACC_LAST_MODE, W, BANKED
39D6 E003 00318 bz DR55_MIDI_NoteOn_Acc_Vel_Timed_First
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 59
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00319
39D8 00320 DR55_MIDI_NoteOn_Acc_Vel_Timed_Last
39D8 5006 00321 movf TMP1, W
39DA 6F77 00322 movwf DR55_INST0_ACC_LAST_ASGN, BANKED
00323 rgoto DR55_MIDI_NoteOn_Acc_Vel_Set
39DC D003 M bra label
00324
39DE 00325 DR55_MIDI_NoteOn_Acc_Vel_Timed_First
39DE 5006 00326 movf TMP1, W
39E0 1377 00327 iorwf DR55_INST0_ACC_LAST_ASGN, BANKED
00328 rgoto DR55_MIDI_NoteOn_Acc_Vel_Set
39E2 D000 M bra label
00329
39E4 00330 DR55_MIDI_NoteOn_Acc_Vel_Set
39E4 EE11 F004 00331 lfsr FSR1, DR55_INST0+DR55_TRIGREQx ; set Accent trigger request
39E8 0E02 00332 movlw 2
39EA 6EE7 00333 movwf INDF1
00334 rgoto DR55_MIDI_NoteOn_Loop_Next
39EC D000 M bra label
00335
39EE 00336 DR55_MIDI_NoteOn_Loop_Next
39EE 2B64 00337 incf DR55_EVNTI, F, BANKED
39F0 0E04 00338 movlw 5-1
39F2 6564 00339 cpfsgt DR55_EVNTI, BANKED
00340 rgoto DR55_MIDI_NoteOn_Loop
39F4 D78A M bra label
00341
39F6 0012 00342 return
00343
00344
00345
00346 ;; --------------------------------------------------------------------------
00347 ;; This function is rcalled to forward a Note Off event to the synthesizer
00348 ;; Input:
00349 ;; o first MIDI event byte in MIOS_PARAMETER1
00350 ;; o second MIDI event byte in MIOS_PARAMETER2
00351 ;; o third MIDI event byte in MIOS_PARAMETER3
00352 ;; --------------------------------------------------------------------------
39F8 00353 DR55_MIDI_NoteOff
00354 SET_BSR DR55_BASE ; prepare BSR for DR55 register access
39F8 0101 M movlb HIGH(reg)
00355
00356 ;; go through list of instruments
00357 ;; search for matching MIDI channel and note definition
39FA 6B64 00358 clrf DR55_EVNTI, BANKED
39FC 00359 DR55_MIDI_NoteOff_Loop
00360
39FC 5162 00361 movf DR55_MIDI_CHANNEL, W, BANKED ; check for matching MIDI channel
39FE 1803 00362 xorwf MIOS_PARAMETER1, W
3A00 0B0F 00363 andlw 0x0f
3A02 E12D 00364 bnz DR55_MIDI_NoteOff_Loop_Next
00365
3A04 5164 00366 movf DR55_EVNTI, W, BANKED ; ACCENT
3A06 E102 00367 bnz DR55_MIDI_NoteOff_Norm
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 60
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00368
3A08 00369 DR55_MIDI_NoteOff_Acc_NotFollow
3A08 5174 00370 movf DR55_INST0_ACC_MODE, W, BANKED ; check Accent Mode
3A0A E129 00371 bnz DR55_MIDI_NoteOff_Loop_Next
00372
3A0C 00373 DR55_MIDI_NoteOff_Norm
3A0C EC36 F01A 00374 call DR55_FSR_InstNote ; check for matching MIDI note
3A10 50E7 00375 movf INDF1, W
3A12 1804 00376 xorwf MIOS_PARAMETER2, W
3A14 E124 00377 bnz DR55_MIDI_NoteOff_Loop_Next
00378
3A16 EC3F F01A 00379 call DR55_FSR_InstMode ; check if time in note mode
3A1A 50E7 00380 movf INDF1, W
3A1C E120 00381 bnz DR55_MIDI_NoteOff_Loop_Next
00382
3A1E 00383 DR55_MIDI_NoteOff_Acc_Follow
3A1E 5174 00384 movf DR55_INST0_ACC_MODE, W, BANKED ; check Accent Mode
3A20 E019 00385 bz DR55_MIDI_NoteOff_Norm_ClrReq ; note start
00386
3A22 EE11 F001 00387 lfsr FSR1, DR55_INST0+DR55_INSTTIMEx ;
3A26 50E7 00388 movf INDF1, W
3A28 E115 00389 bnz DR55_MIDI_NoteOff_Norm_ClrReq
00390
3A2A 5164 00391 movf DR55_EVNTI, W, BANKED
3A2C 04E8 00392 decf WREG, W
3A2E ECC6 F016 00393 call MIOS_HLP_GetBitORMask
3A32 6E06 00394 movwf TMP1
00395
3A34 5176 00396 movf DR55_INST0_ACC_LAST_MODE, W, BANKED
3A36 E005 00397 bz DR55_MIDI_NoteOff_Acc_Vel_Timed_First
00398
3A38 00399 DR55_MIDI_NoteOff_Acc_Vel_Timed_Last
3A38 5177 00400 movf DR55_INST0_ACC_LAST_ASGN, W, BANKED
3A3A 1806 00401 xorwf TMP1, W
3A3C E10B 00402 bnz DR55_MIDI_NoteOff_Norm_ClrReq ; check if mode flag equal instrument number
3A3E 6B77 00403 clrf DR55_INST0_ACC_LAST_ASGN, BANKED
00404 rgoto DR55_MIDI_NoteOff_Acc_ClrReq
3A40 D005 M bra label
00405
3A42 00406 DR55_MIDI_NoteOff_Acc_Vel_Timed_First
3A42 5177 00407 movf DR55_INST0_ACC_LAST_ASGN, W, BANKED
3A44 1806 00408 xorwf TMP1, W
3A46 1777 00409 andwf DR55_INST0_ACC_LAST_ASGN, F, BANKED
3A48 5177 00410 movf DR55_INST0_ACC_LAST_ASGN, W, BANKED
3A4A E104 00411 bnz DR55_MIDI_NoteOff_Norm_ClrReq ; check if mode flag equal instrument number
00412 ;;rgoto DR55_MIDI_NoteOff_Acc_ClrReq
00413
3A4C 00414 DR55_MIDI_NoteOff_Acc_ClrReq
3A4C EE11 F004 00415 lfsr FSR1, DR55_INST0+DR55_TRIGREQx ; set Accent trigger request
3A50 0E01 00416 movlw 1
3A52 6EE7 00417 movwf INDF1
00418
3A54 00419 DR55_MIDI_NoteOff_Norm_ClrReq
3A54 EC42 F01A 00420 call DR55_FSR_InstTrigReq ; clear trigger request
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 61
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
3A58 0E01 00421 movlw 1
3A5A 6EE7 00422 movwf INDF1
00423 rgoto DR55_MIDI_NoteOff_Loop_Next
3A5C D000 M bra label
00424
3A5E 00425 DR55_MIDI_NoteOff_Loop_Next
3A5E 2B64 00426 incf DR55_EVNTI, F, BANKED
3A60 0E04 00427 movlw 5-1
3A62 6564 00428 cpfsgt DR55_EVNTI, BANKED
00429 rgoto DR55_MIDI_NoteOff_Loop
3A64 D7CB M bra label
00430
3A66 0012 00431 return
00432
00433
00434 ;; --------------------------------------------------------------------------
00435 ;; This function is rcalled to forward a PitchBender event to the synthesizer
00436 ;; Input:
00437 ;; o first MIDI event byte in MIOS_PARAMETER1
00438 ;; o second MIDI event byte in MIOS_PARAMETER2
00439 ;; o third MIDI event byte in MIOS_PARAMETER3
00440 ;; --------------------------------------------------------------------------
3A68 00441 DR55_MIDI_PitchBender
3A68 0012 00442 return
00443
00444 ;; --------------------------------------------------------------------------
00445 ;; This function is rcalled to forward a Controller event to the synthesizer
00446 ;; Input:
00447 ;; o first MIDI event byte in MIOS_PARAMETER1
00448 ;; o second MIDI event byte in MIOS_PARAMETER2
00449 ;; o third MIDI event byte in MIOS_PARAMETER3
00450 ;; --------------------------------------------------------------------------
3A6A 00451 DR55_MIDI_CC
00452 SET_BSR DR55_BASE
3A6A 0101 M movlb HIGH(reg)
00453
00454 ;; special treatment for CC#0 (bank change)
3A6C 5004 00455 movf MIOS_PARAMETER2, W
3A6E E101 00456 bnz DR55_MIDI_CC_No00
00457
3A70 00458 DR55_MIDI_CC_00
3A70 0012 00459 return
00460
3A72 00461 DR55_MIDI_CC_No00
00462
3A72 5162 00463 movf DR55_MIDI_CHANNEL, W, BANKED ; check for matching MIDI channel
3A74 1803 00464 xorwf MIOS_PARAMETER1, W
3A76 0B0F 00465 andlw 0x0f
3A78 E105 00466 bnz DR55_MIDI_CC_End
00467
00468 ;; forward CC to CCIN_Set routine
3A7A C005 F003 00469 movff MIOS_PARAMETER3, MIOS_PARAMETER1
3A7E 5004 00470 movf MIOS_PARAMETER2, W
3A80 EC87 F01A 00471 call DR55_CCIN_Set
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 62
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00472
3A84 00473 DR55_MIDI_CC_End
3A84 0012 00474 return
00475
00476
00477 ;; --------------------------------------------------------------------------
00478 ;; This function is rcalled to forward a Program Change event to the synthesizer
00479 ;; Input:
00480 ;; o first MIDI event byte in MIOS_PARAMETER1
00481 ;; o second MIDI event byte in MIOS_PARAMETER2
00482 ;; --------------------------------------------------------------------------
3A86 00483 DR55_MIDI_ProgramChange
3A86 0012 00484 return
00485
00486 ;; --------------------------------------------------------------------------
00487 ;; This function is rcalled to forward a Poly Aftertouch event to the synthesizer
00488 ;; Input:
00489 ;; o first MIDI event byte in MIOS_PARAMETER1
00490 ;; o second MIDI event byte in MIOS_PARAMETER2
00491 ;; --------------------------------------------------------------------------
3A88 00492 DR55_MIDI_PolyAfterTouch
3A88 0012 00493 return
00494
00495 ;; --------------------------------------------------------------------------
00496 ;; This function is rcalled to forward a Aftertouch event to the synthesizer
00497 ;; Input:
00498 ;; o first MIDI event byte in MIOS_PARAMETER1
00499 ;; o second MIDI event byte in MIOS_PARAMETER2
00500 ;; o third MIDI event byte in MIOS_PARAMETER3
00501 ;; --------------------------------------------------------------------------
3A8A 00502 DR55_MIDI_AfterTouch
3A8A 0012 00503 return
00504
00307 #include "DR55_sysex.inc"
00001 ; $Id: dr55_sysex.inc 2011-07-12 bd (Antichambre)
00002 ; bdupeyron@gmail.com 4 Djo'Boss DR-55
00003 ;
00004 ; MIDIbox DR55 SysEx parser
00005 ;
00006 ; ==========================================================================
00007 ;
00008 ; Copyright 1998-2006 Thorsten Klose (tk@midibox.org)
00009 ; Licensed for personal non-commercial use only.
00010 ; All other rights reserved.
00011 ;
00012 ; ==========================================================================
00013
00000007 00014 DR55_SYSEX_STATE_MYSYSEX EQU 7
00000006 00015 DR55_SYSEX_STATE_ACTION EQU 6
00000005 00016 DR55_SYSEX_STATE_END EQU 5
00017
00000000 00018 DR55_SYSEX_STATE2_BNK_RECEIVED EQU 0 ; used by Action PAT_[Read/Write]
00000001 00019 DR55_SYSEX_STATE2_PAT_RECEIVED EQU 1 ; used by Action PAT_[Read/Write]
00000002 00020 DR55_SYSEX_STATE2_WAIT_CHECKSUM EQU 2 ; used by Action PAT_Write
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 63
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00021
00000000 00022 DR55_SYSEX_STATE2_GRP_RECEIVED EQU 0 ; used by Action PAR_[Read/Write]
00000001 00023 DR55_SYSEX_STATE2_AH_RECEIVED EQU 1 ; used by Action PAR_[Read/Write]
00000002 00024 DR55_SYSEX_STATE2_AL_RECEIVED EQU 2 ; used by Action PAR_[Read/Write]
00025
00026 ;; --------------------------------------------------------------------------
00027 ;; This function is called from mb_mproc.inc on a timeout
00028 ;; it will used internally when an internal DR55uence has been parsed or
00029 ;; at the end of a sysex DR55uence
00030 ;; --------------------------------------------------------------------------
3A8C 00031 DR55_SYSEX_ActionInvalid
3A8C 00032 DR55_SYSEX_ActionFinished
00033 SET_BSR DR55_BASE
3A8C 0101 M movlb HIGH(reg)
3A8E 6B90 00034 clrf DR55_SYSEX_STATE, BANKED
3A90 6B91 00035 clrf DR55_SYSEX_STATE2, BANKED
3A92 6B92 00036 clrf DR55_SYSEX_ACTION, BANKED
00037
3A94 EC2A F016 00038 call MIOS_MPROC_MergerEnable
00039 rgoto DR55_SYSEX_SysExCheck_End
3A98 D017 M bra label
00040
00041 ;; --------------------------------------------------------------------------
00042 ;; This sysex parser waits for the MBDR55 Header
00043 ;; IN: received byte in MIOS_PARAMETER1
00044 ;; --------------------------------------------------------------------------
3A9A 00045 DR55_SYSEX_Parser
00046 ;; store received byte in DR55_SYSEX_IN
00047 SET_BSR DR55_BASE
3A9A 0101 M movlb HIGH(reg)
3A9C 5003 00048 movf MIOS_PARAMETER1, W
3A9E 6F93 00049 movwf DR55_SYSEX_IN, BANKED
00050
00051 ;; exit if realtime event has been received
3AA0 0EF8 00052 movlw 0xf8
3AA2 6193 00053 cpfslt DR55_SYSEX_IN, BANKED
3AA4 0012 00054 return
00055
00056 ;; check sysex state
00057 BRA_IFSET DR55_SYSEX_STATE, DR55_SYSEX_STATE_MYSYSEX, BANKED, DR55_SYSEX_Handler
3AA6 BF90 M btfsc reg, bit, reg_a
3AA8 D01A M bra label
00058
3AAA 5190 00059 movf DR55_SYSEX_STATE, W, BANKED
3AAC D80E 00060 rcall DR55_SYSEX_SysExHeaderGet
3AAE 6393 00061 cpfseq DR55_SYSEX_IN, BANKED
00062 rgoto DR55_SYSEX_SysExCheckFailed
3AB0 D00A M bra label
3AB2 2B90 00063 incf DR55_SYSEX_STATE, F, BANKED
3AB4 5190 00064 movf DR55_SYSEX_STATE, W, BANKED
3AB6 0B07 00065 andlw 0x07
3AB8 0A06 00066 xorlw 0x06 ; wait for 6 bytes (f0 00 00 7E 4C <device-id>)
3ABA E106 00067 bnz DR55_SYSEX_SysExCheckOk
00068
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 64
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00069 ;; SysEx ID received, lets go
3ABC 0E80 00070 movlw (1 << DR55_SYSEX_STATE_MYSYSEX)
3ABE 6F90 00071 movwf DR55_SYSEX_STATE, BANKED
3AC0 EC28 F016 00072 call MIOS_MPROC_MergerDisable
00073 rgoto DR55_SYSEX_SysExCheckOk
3AC4 D001 M bra label
00074
3AC6 00075 DR55_SYSEX_SysExCheckFailed
00076 ;; reset the sysex counter and action ID
3AC6 DFE2 00077 rcall DR55_SYSEX_ActionInvalid
3AC8 00078 DR55_SYSEX_SysExCheckOk
00079
3AC8 00080 DR55_SYSEX_SysExCheck_End
3AC8 0012 00081 return
00082
00083 ; ==========================================================================
00084
00085 ;; --------------------------------------------------------------------------
00086 ;; Returns expected MIDI bytes from SysEx header
00087 ;; --------------------------------------------------------------------------
3ACA 00088 DR55_SYSEX_SysExHeaderGet
3ACA 0B07 00089 andlw 0x07
00090 JUMPTABLE_2BYTES_UNSECURE
3ACC ECC8 F016 M call MIOS_HLP_GetIndex_2bytes
3AD0 0CF0 00091 retlw 0xf0
3AD2 0C00 00092 retlw 0x00 ; Vendor ID
3AD4 0C00 00093 retlw 0x00
3AD6 0C7E 00094 retlw 0x7e
3AD8 0C4C 00095 retlw 0x4c ; MIDIboxDR55 V3 ID (4C - the ultimative number + 10)
3ADA 5011 00096 movf MIDI_DEVICE_ID, W
3ADC 0012 00097 return
00098
00099
00100 ;; --------------------------------------------------------------------------
00101 ;; MIDI Check action: perform a sysex action
00102 ;; --------------------------------------------------------------------------
3ADE 00103 DR55_SYSEX_Handler
00104 ;; if first byte after header, store action ID
00105 BRA_IFSET DR55_SYSEX_STATE, DR55_SYSEX_STATE_ACTION, BANKED, DR55_SYSEX_Handler_NotBegin
3ADE BD90 M btfsc reg, bit, reg_a
3AE0 D004 M bra label
3AE2 00106 DR55_SYSEX_Handler_Begin
3AE2 8D90 00107 bsf DR55_SYSEX_STATE, DR55_SYSEX_STATE_ACTION, BANKED
3AE4 C193 F192 00108 movff DR55_SYSEX_IN, DR55_SYSEX_ACTION ; store action ID
00109 rgoto DR55_SYSEX_SysExCheck_End ; branch to the end
3AE8 D7EF M bra label
3AEA 00110 DR55_SYSEX_Handler_NotBegin
00111
00112 ;; fetch data until next command byte (-> 0xf7)
00113 BRA_IFCLR DR55_SYSEX_IN, 7, BANKED, DR55_SYSEX_Handler_NotEnd
3AEA AF93 M btfss reg, bit, reg_a
3AEC D004 M bra label
3AEE 00114 DR55_SYSEX_Handler_End
00115 ;; if sysex footer (F7) has not been received here, action is invalid!
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 65
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
3AEE 0EF7 00116 movlw 0xf7
3AF0 6393 00117 cpfseq DR55_SYSEX_IN, BANKED
00118 rgoto DR55_SYSEX_ActionInvalid
3AF2 D7CC M bra label
00119 ;; notify end
3AF4 8B90 00120 bsf DR55_SYSEX_STATE, DR55_SYSEX_STATE_END, BANKED
3AF6 00121 DR55_SYSEX_Handler_NotEnd
00122
00123 ;; branch depending on current action ID
3AF6 5192 00124 movf DR55_SYSEX_ACTION, W
00125 JUMPTABLE_2BYTES 16 ; 16 entries
3AF8 0FF0 M addlw -(max_value) ; ensure that jump index is not greater than (max_value-1)
3AFA B0D8 M skpnc
3AFC 0EF0 M movlw -(max_value)
3AFE 0F10 M addlw max_value
3B00 ECC8 F016 M call MIOS_HLP_GetIndex_2bytes
00126 rgoto DR55_SYSEX_ActionInvalid
3B04 D7C3 M bra label
00127 rgoto DR55_SYSEX_Action_RequestCC
3B06 D067 M bra label
00128 rgoto DR55_SYSEX_Action_CFG_Read
3B08 D086 M bra label
00129 rgoto DR55_SYSEX_Action_CFG_Save
3B0A D08C M bra label
00130 rgoto DR55_SYSEX_Action_RequestCH
3B0C D073 M bra label
00131 rgoto DR55_SYSEX_Action_SetCH
3B0E D068 M bra label
00132 rgoto DR55_SYSEX_ActionInvalid
3B10 D7BD M bra label
00133 rgoto DR55_SYSEX_ActionInvalid
3B12 D7BC M bra label
00134 rgoto DR55_SYSEX_ActionInvalid
3B14 D7BB M bra label
00135 rgoto DR55_SYSEX_ActionInvalid
3B16 D7BA M bra label
00136 rgoto DR55_SYSEX_ActionInvalid
3B18 D7B9 M bra label
00137 rgoto DR55_SYSEX_ActionInvalid
3B1A D7B8 M bra label
00138 rgoto DR55_SYSEX_ActionInvalid
3B1C D7B7 M bra label
00139 rgoto DR55_SYSEX_ActionInvalid
3B1E D7B6 M bra label
00140 rgoto DR55_SYSEX_ActionInvalid
3B20 D7B5 M bra label
00141 rgoto DR55_SYSEX_Action_Ping
3B22 D087 M bra label
00142
00143 ;; --------------------------------------------------------------------------
00144 ;; MIDI Action: Parameter Read
00145 ;; --------------------------------------------------------------------------
3B24 00146 DR55_SYSEX_Action_PAR_Read
00147 ;; end of stream?
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 66
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00148 BRA_IFSET DR55_SYSEX_STATE, DR55_SYSEX_STATE_END, BANKED, DR55_SYSEX_Action_PAR_Read_End
3B24 BB90 M btfsc reg, bit, reg_a
3B26 D016 M bra label
00149
00150 ;; receive <group> <AH> <AL> F7
3B28 00151 DR55_SYSEX_Action_PAR_ReadGrp
00152 BRA_IFSET DR55_SYSEX_STATE2, DR55_SYSEX_STATE2_GRP_RECEIVED, BANKED, DR55_SYSEX_Action_PAR_ReadAH
3B28 B191 M btfsc reg, bit, reg_a
3B2A D004 M bra label
3B2C 8191 00153 bsf DR55_SYSEX_STATE2, DR55_SYSEX_STATE2_GRP_RECEIVED, BANKED
3B2E 5193 00154 movf DR55_SYSEX_IN, W, BANKED ; set group
3B30 0B03 00155 andlw 0x03
00156 ;; <group> ignored by DR55
00157 rgoto DR55_SYSEX_SysExCheck_End ; wait for next byte
3B32 D7CA M bra label
00158
3B34 00159 DR55_SYSEX_Action_PAR_ReadAH
00160 BRA_IFSET DR55_SYSEX_STATE2, DR55_SYSEX_STATE2_AH_RECEIVED, BANKED, DR55_SYSEX_Action_PAR_ReadAL
3B34 B391 M btfsc reg, bit, reg_a
3B36 D004 M bra label
3B38 8391 00161 bsf DR55_SYSEX_STATE2, DR55_SYSEX_STATE2_AH_RECEIVED, BANKED
3B3A C193 F196 00162 movff DR55_SYSEX_IN, DR55_SYSEX_ADDRESS_H ; set the high-byte of address
00163 rgoto DR55_SYSEX_SysExCheck_End ; wait for next byte
3B3E D7C4 M bra label
00164
3B40 00165 DR55_SYSEX_Action_PAR_ReadAL
00166 BRA_IFSET DR55_SYSEX_STATE2, DR55_SYSEX_STATE2_AL_RECEIVED, BANKED, DR55_SYSEX_Action_PAR_ReadStall
3B40 B591 M btfsc reg, bit, reg_a
3B42 D007 M bra label
00167 ;; convert 2*7bit address to 16bit address
3B44 5193 00168 movf DR55_SYSEX_IN, W, BANKED ; OR DR55_SYSEX_ADDRESS with low-byte
3B46 6F95 00169 movwf DR55_SYSEX_ADDRESS_L, BANKED
3B48 B196 00170 btfsc DR55_SYSEX_ADDRESS_H, 0, BANKED
3B4A 8F95 00171 bsf DR55_SYSEX_ADDRESS_L, 7, BANKED
3B4C 90D8 00172 clrc
3B4E 3196 00173 rrf DR55_SYSEX_ADDRESS_H, W, BANKED
00174 rgoto DR55_SYSEX_SysExCheck_End ; wait for next byte
3B50 D7BB M bra label
00175
3B52 00176 DR55_SYSEX_Action_PAR_ReadStall
00177 ;; do nothing until sysex footer (F7) has been received
00178 rgoto DR55_SYSEX_SysExCheck_End
3B52 D7BA M bra label
00179
3B54 00180 DR55_SYSEX_Action_PAR_Read_End
00181 ;; action invalid if low-byte of address has not been received
00182 BRA_IFCLR DR55_SYSEX_STATE2, DR55_SYSEX_STATE2_AL_RECEIVED, BANKED, DR55_SYSEX_ActionInvalid
3B54 A591 M btfss reg, bit, reg_a
3B56 D79A M bra label
00183
00184 ;; send SysEx header
3B58 D878 00185 rcall DR55_SYSEX_Send_SysExHeader
00186
00187 ;; send PAR_Write ID
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 67
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
3B5A 0E06 00188 movlw 0x06
3B5C EC24 F016 00189 call MIOS_MIDI_TxBufferPut
00190 SET_BSR DR55_BASE
3B60 0101 M movlb HIGH(reg)
00191
00192 ;; send group (always 0x00 in DR55)
3B62 0E00 00193 movlw 0x00
3B64 EC24 F016 00194 call MIOS_MIDI_TxBufferPut
00195 SET_BSR DR55_BASE
3B68 0101 M movlb HIGH(reg)
00196
00197 ;; send AH
3B6A 90D8 00198 clrc
3B6C 3196 00199 rrf DR55_SYSEX_ADDRESS_H, W, BANKED
3B6E BF95 00200 btfsc DR55_SYSEX_ADDRESS_L, 7, BANKED
3B70 0901 00201 iorlw 0x01
3B72 EC24 F016 00202 call MIOS_MIDI_TxBufferPut
00203 SET_BSR DR55_BASE
3B76 0101 M movlb HIGH(reg)
00204
00205 ;; send AL
3B78 5195 00206 movf DR55_SYSEX_ADDRESS_L, W, BANKED
3B7A 0B7F 00207 andlw 0x7f
3B7C EC24 F016 00208 call MIOS_MIDI_TxBufferPut
00209 SET_BSR DR55_BASE
3B80 0101 M movlb HIGH(reg)
00210
00211 ;; get parameter value from selected address
3B82 D89B 00212 rcall DR55_SYSEX_ReadP
00213 SET_BSR DR55_BASE
3B84 0101 M movlb HIGH(reg)
00214
00215 ;; send value
3B86 0B7F 00216 andlw 0x7f
3B88 EC24 F016 00217 call MIOS_MIDI_TxBufferPut
00218
00219 ;; send of SysEx footer
3B8C 0E01 00220 movlw 0x01 ; (independend from merger state)
3B8E D870 00221 rcall DR55_SYSEX_Send_SysExFooter
00222
00223 ;; finish Action
00224 rgoto DR55_SYSEX_ActionFinished
3B90 D77D M bra label
00225
00226 ;; --------------------------------------------------------------------------
00227 ;; MIDI Action: Parameter Write
00228 ;; --------------------------------------------------------------------------
3B92 00229 DR55_SYSEX_Action_PAR_Write
00230
00231 ;; end of stream?
00232 BRA_IFSET DR55_SYSEX_STATE, DR55_SYSEX_STATE_END, BANKED, DR55_SYSEX_Action_PAR_Write_End
3B92 BB90 M btfsc reg, bit, reg_a
3B94 D01B M bra label
00233
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 68
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00234 ;; receive <groups> <AH> <AL> <value> F7
3B96 00235 DR55_SYSEX_Action_PAR_WriteGrp
00236 BRA_IFSET DR55_SYSEX_STATE2, DR55_SYSEX_STATE2_GRP_RECEIVED, BANKED, DR55_SYSEX_Action_PAR_WriteAH
3B96 B191 M btfsc reg, bit, reg_a
3B98 D004 M bra label
3B9A 8191 00237 bsf DR55_SYSEX_STATE2, DR55_SYSEX_STATE2_GRP_RECEIVED, BANKED
3B9C 5193 00238 movf DR55_SYSEX_IN, W, BANKED ; set group
3B9E 0B03 00239 andlw 0x03
00240 ;; <group> ignored by DR55
00241 rgoto DR55_SYSEX_SysExCheck_End ; wait for next byte
3BA0 D793 M bra label
00242
3BA2 00243 DR55_SYSEX_Action_PAR_WriteAH
00244 BRA_IFSET DR55_SYSEX_STATE2, DR55_SYSEX_STATE2_AH_RECEIVED, BANKED, DR55_SYSEX_Action_PAR_WriteAL
3BA2 B391 M btfsc reg, bit, reg_a
3BA4 D004 M bra label
3BA6 8391 00245 bsf DR55_SYSEX_STATE2, DR55_SYSEX_STATE2_AH_RECEIVED, BANKED
3BA8 C193 F196 00246 movff DR55_SYSEX_IN, DR55_SYSEX_ADDRESS_H ; set the high-byte of address
00247 rgoto DR55_SYSEX_SysExCheck_End ; wait for next byte
3BAC D78D M bra label
00248
3BAE 00249 DR55_SYSEX_Action_PAR_WriteAL
00250 BRA_IFSET DR55_SYSEX_STATE2, DR55_SYSEX_STATE2_AL_RECEIVED, BANKED, DR55_SYSEX_Action_PAR_WriteD
3BAE B591 M btfsc reg, bit, reg_a
3BB0 D007 M bra label
00251 ;; convert 2*7bit address to 16bit address
3BB2 5193 00252 movf DR55_SYSEX_IN, W, BANKED ; OR DR55_SYSEX_ADDRESS with low-byte
3BB4 6F95 00253 movwf DR55_SYSEX_ADDRESS_L, BANKED
3BB6 B196 00254 btfsc DR55_SYSEX_ADDRESS_H, 0, BANKED
3BB8 8F95 00255 bsf DR55_SYSEX_ADDRESS_L, 7, BANKED
3BBA 90D8 00256 clrc
3BBC 3196 00257 rrf DR55_SYSEX_ADDRESS_H, W, BANKED
00258 rgoto DR55_SYSEX_SysExCheck_End ; wait for next byte
3BBE D784 M bra label
00259
3BC0 00260 DR55_SYSEX_Action_PAR_WriteD
3BC0 00261 DR55_SYSEX_Action_PAR_WriteStall
00262 ;; save parameter
3BC0 D861 00263 rcall DR55_SYSEX_WriteP
00264 SET_BSR DR55_BASE
3BC2 0101 M movlb HIGH(reg)
00265
00266 ;; increment address
00267 ;; (no overrun check here - but uncritical for MBDR55 since there are additional
00268 ;; checks in DR55_SYSEX_WriteP)
3BC4 2B95 00269 incf DR55_SYSEX_ADDRESS_L, F, BANKED
3BC6 B4D8 00270 skpnz
3BC8 2B96 00271 incf DR55_SYSEX_ADDRESS_H, F, BANKED
00272
00273 rgoto DR55_SYSEX_SysExCheck_End ; wait for next byte
3BCA D77E M bra label
00274
00275
3BCC 00276 DR55_SYSEX_Action_PAR_Write_End
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 69
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00277 ;; action invalid if address has not been received
00278 BRA_IFCLR DR55_SYSEX_STATE2, DR55_SYSEX_STATE2_AL_RECEIVED, BANKED, DR55_SYSEX_ActionInvalid
3BCC A591 M btfss reg, bit, reg_a
3BCE D75E M bra label
00279
00280 ;; send acknowledge
3BD0 EC1F F01E 00281 call DR55_SYSEX_Send_Acknowledge
00282
00283 ;; finish Action
00284 rgoto DR55_SYSEX_ActionFinished
3BD4 D75B M bra label
00285
00286
00287 ;; --------------------------------------------------------------------------
00288 ;; MIDI Action: CC Request
00289 ;; --------------------------------------------------------------------------
3BD6 00290 DR55_SYSEX_Action_RequestCC
00291 ;; end of stream?
00292 BRA_IFSET DR55_SYSEX_STATE, DR55_SYSEX_STATE_END, BANKED, DR55_SYSEX_Action_RequestCC_End
3BD6 BB90 M btfsc reg, bit, reg_a
3BD8 D001 M bra label
00293
00294 ;; do nothing until sysex footer (F7) has been received
00295 rgoto DR55_SYSEX_SysExCheck_End
3BDA D776 M bra label
00296
3BDC 00297 DR55_SYSEX_Action_RequestCC_End
00298 ;; request CC dump (handled by tia_ccout.inc)
3BDC 8161 00299 bsf DR55_STAT, DR55_STAT_CC_DUMP_REQ
00300
00301 ;; finish Action
00302 rgoto DR55_SYSEX_ActionFinished
3BDE D756 M bra label
00303
00304
00305 ;; --------------------------------------------------------------------------
00306 ;; MIDI Action: Channel Set
00307 ;; --------------------------------------------------------------------------
3BE0 00308 DR55_SYSEX_Action_SetCH
00309 ;; end of stream?
00310 BRA_IFSET DR55_SYSEX_STATE, DR55_SYSEX_STATE_END, BANKED, DR55_SYSEX_Action_SetCH_End
3BE0 BB90 M btfsc reg, bit, reg_a
3BE2 D003 M bra label
00311
00312 ;; store Channel in TIA_SYSEX_ADDRESS
3BE4 C193 F195 00313 movff DR55_SYSEX_IN, DR55_SYSEX_ADDRESS_L
00314 rgoto DR55_SYSEX_SysExCheck_End ; wait for next byte
3BE8 D76F M bra label
00315
3BEA 00316 DR55_SYSEX_Action_SetCH_End
00317
00318 SET_BSR DR55_BASE
3BEA 0101 M movlb HIGH(reg)
3BEC C195 F162 00319 movff DR55_SYSEX_ADDRESS_L, DR55_MIDI_CHANNEL
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 70
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00320
3BF0 D806 00321 rcall DR55_SYSEX_Action_SendMidiChannel
00322 ;; finish Action
00323 rgoto DR55_SYSEX_ActionFinished
3BF2 D74C M bra label
00324
00325 ;; --------------------------------------------------------------------------
00326 ;; MIDI Action: Channel Request
00327 ;; --------------------------------------------------------------------------
3BF4 00328 DR55_SYSEX_Action_RequestCH
00329 ;; end of stream?
00330 BRA_IFSET DR55_SYSEX_STATE, DR55_SYSEX_STATE_END, BANKED, DR55_SYSEX_Action_RequestCH_End
3BF4 BB90 M btfsc reg, bit, reg_a
3BF6 D001 M bra label
00331
00332 ;; do nothing until sysex footer (F7) has been received
00333 rgoto DR55_SYSEX_SysExCheck_End
3BF8 D767 M bra label
00334
3BFA 00335 DR55_SYSEX_Action_RequestCH_End
00336
3BFA D801 00337 rcall DR55_SYSEX_Action_SendMidiChannel
00338 ;; finish Action
00339 rgoto DR55_SYSEX_ActionFinished
3BFC D747 M bra label
00340
00341 ;; --------------------------------------------------------------------------
00342 ;; MIDI Send MidiChannel (Util function for channel request)
00343 ;; --------------------------------------------------------------------------
3BFE 00344 DR55_SYSEX_Action_SendMidiChannel
00345 ;; send SysEx header
3BFE D825 00346 rcall DR55_SYSEX_Send_SysExHeader
00347
00348 ;; send RequestCH ID
00349 SET_BSR DR55_BASE
3C00 0101 M movlb HIGH(reg)
3C02 5192 00350 movf DR55_SYSEX_ACTION, W
3C04 EC24 F016 00351 call MIOS_MIDI_TxBufferPut
00352
00353 ;; send MIDI channel
00354 SET_BSR DR55_BASE
3C08 0101 M movlb HIGH(reg)
3C0A 5162 00355 movf DR55_MIDI_CHANNEL, W, BANKED
3C0C 0B0F 00356 andlw 0x0f
3C0E EC24 F016 00357 call MIOS_MIDI_TxBufferPut
00358
00359 ;; send of SysEx footer
3C12 0E01 00360 movlw 0x01 ; (independend from merger state)
00361 rgoto DR55_SYSEX_Send_SysExFooter
3C14 D02D M bra label
00362
00363
00364
00365 ;; --------------------------------------------------------------------------
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 71
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00366 ;; MIDI Action: CFG_Read, Read Perset from EEPROM and send ping
00367 ;; --------------------------------------------------------------------------
3C16 00368 DR55_SYSEX_Action_CFG_Read
00369 ;; end of stream?
00370 BRA_IFSET DR55_SYSEX_STATE, DR55_SYSEX_STATE_END, BANKED, DR55_SYSEX_Action_CFG_Read_End
3C16 BB90 M btfsc reg, bit, reg_a
3C18 D002 M bra label
00371
00372 ;; do nothing until sysex footer (F7) has been received
3C1A EC64 F01D 00373 call DR55_SYSEX_SysExCheck_End
00374
3C1E 00375 DR55_SYSEX_Action_CFG_Read_End
00376
00377 ;; Read Preset Config from EEPROM
3C1E DC36 00378 rcall DR55_EEProm_Preset_Read
00379
00380 ;; send Acknowledge
3C20 D80E 00381 rcall DR55_SYSEX_Send_Acknowledge
00382
00383 ;; finish Action
00384 rgoto DR55_SYSEX_ActionFinished
3C22 D734 M bra label
00385
00386 ;; --------------------------------------------------------------------------
00387 ;; MIDI Action: CFG_Save, Read Perset from EEPROM and send ping
00388 ;; --------------------------------------------------------------------------
3C24 00389 DR55_SYSEX_Action_CFG_Save
00390 ;; end of stream?
00391 BRA_IFSET DR55_SYSEX_STATE, DR55_SYSEX_STATE_END, BANKED, DR55_SYSEX_Action_CFG_Save_End
3C24 BB90 M btfsc reg, bit, reg_a
3C26 D002 M bra label
00392
00393 ;; do nothing until sysex footer (F7) has been received
3C28 EC64 F01D 00394 call DR55_SYSEX_SysExCheck_End
00395
3C2C 00396 DR55_SYSEX_Action_CFG_Save_End
00397
00398 ;; Read Preset Config from EEPROM
3C2C DC4C 00399 rcall DR55_EEProm_Preset_Save
00400
00401 ;; send Acknowledge
3C2E D807 00402 rcall DR55_SYSEX_Send_Acknowledge
00403
00404 ;; finish Action
00405 rgoto DR55_SYSEX_ActionFinished
3C30 D72D M bra label
00406
00407 ;; --------------------------------------------------------------------------
00408 ;; MIDI Action: Ping
00409 ;; --------------------------------------------------------------------------
3C32 00410 DR55_SYSEX_Action_Ping
00411 ;; end of stream?
00412 BRA_IFSET DR55_SYSEX_STATE, DR55_SYSEX_STATE_END, BANKED, DR55_SYSEX_Action_Ping_End
3C32 BB90 M btfsc reg, bit, reg_a
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 72
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
3C34 D002 M bra label
00413
00414 ;; do nothing until sysex footer (F7) has been received
3C36 EC64 F01D 00415 call DR55_SYSEX_SysExCheck_End
00416
3C3A 00417 DR55_SYSEX_Action_Ping_End
00418 ;; send Acknowledge
3C3A D801 00419 rcall DR55_SYSEX_Send_Acknowledge
00420
00421 ;; finish Action
00422 rgoto DR55_SYSEX_ActionFinished
3C3C D727 M bra label
00423
00424
00425 ;; --------------------------------------------------------------------------
00426 ;; MIDI Send Acknowledge (Util function)
00427 ;; --------------------------------------------------------------------------
3C3E 00428 DR55_SYSEX_Send_Acknowledge
00429 ;; send SysEx header
3C3E D805 00430 rcall DR55_SYSEX_Send_SysExHeader
00431
3C40 0E0F 00432 movlw 0x0f ; (acknowledge ID)
3C42 EC24 F016 00433 call MIOS_MIDI_TxBufferPut
00434
00435 ;; send of SysEx footer
3C46 0E01 00436 movlw 0x01 ; (independend from merger state)
00437 rgoto DR55_SYSEX_Send_SysExFooter
3C48 D013 M bra label
00438
00439
00440 ;; --------------------------------------------------------------------------
00441 ;; Send MBDR55 SysEx Header (Util function)
00442 ;; --------------------------------------------------------------------------
3C4A 00443 DR55_SYSEX_Send_SysExHeader
00444 ;; if DR55_SYSEX_SYXSTATE > 0, check merger flag to allow propper sysex merging
00445 BRA_IFCLR DR55_SYSEX_STATE, DR55_SYSEX_STATE_MYSYSEX, BANKED, DR55_SYSEX_Send_SysExHeader_Skp
3C4A AF90 M btfss reg, bit, reg_a
3C4C D007 M bra label
3C4E EC12 F016 00446 call MIOS_MIDI_MergerGet
3C52 0B01 00447 andlw 0x01
3C54 E003 00448 bz DR55_SYSEX_Send_SysExHeader_Skp
3C56 0E05 00449 movlw 0x05 ; send only DEVICE_ID
3C58 6E06 00450 movwf TMP1
00451 rgoto DR55_SYSEX_Send_SysExHeaderLoop
3C5A D001 M bra label
3C5C 00452 DR55_SYSEX_Send_SysExHeader_Skp
00453
3C5C 6A06 00454 clrf TMP1
3C5E 00455 DR55_SYSEX_Send_SysExHeaderLoop
3C5E 5006 00456 movf TMP1, W
3C60 DF34 00457 rcall DR55_SYSEX_SysExHeaderGet
3C62 EC24 F016 00458 call MIOS_MIDI_TxBufferPut
3C66 2A06 00459 incf TMP1, F
3C68 0E06 00460 movlw 0x06
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 73
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
3C6A 6206 00461 cpfseq TMP1, ACCESS
00462 rgoto DR55_SYSEX_Send_SysExHeaderLoop
3C6C D7F8 M bra label
3C6E 0012 00463 return
00464
00465 ;; --------------------------------------------------------------------------
00466 ;; MIDI Send SysEx Footer (Util function)
00467 ;; --------------------------------------------------------------------------
3C70 00468 DR55_SYSEX_Send_SysExFooter
00469 ;; if WREG[0]=1: send F7 regardless of the merger state
00470 BRA_IFSET WREG, 0, ACCESS, DR55_SYSEX_Send_SysExFooter_Force
3C70 B0E8 M btfsc reg, bit, reg_a
3C72 D005 M bra label
00471 ;; send footer only if merger has been enabled
00472 ;; to ensure a proper MIDI protocol
3C74 EC12 F016 00473 call MIOS_MIDI_MergerGet
3C78 0B01 00474 andlw 0x01
3C7A B4D8 00475 skpnz
3C7C 0012 00476 return
00477
3C7E 00478 DR55_SYSEX_Send_SysExFooter_Force
3C7E 0EF7 00479 movlw 0xf7
3C80 EF24 F016 00480 goto MIOS_MIDI_TxBufferPut
00481
00482
00483 ;; --------------------------------------------------------------------------
00484 ;; This function transfers a parameter into pattern SRAM
00485 ;; IN: address in DR55_SYSEX_ADDRESS_[LH] (nibbles are addressed)
00486 ;; parameter value in DR55_SYSEX_IN
00487 ;; --------------------------------------------------------------------------
3C84 00488 DR55_SYSEX_WriteP
00489 SET_BSR DR55_BASE
3C84 0101 M movlb HIGH(reg)
00490
00491 ;; exit if address >= 0x400
3C86 5196 00492 movf DR55_SYSEX_ADDRESS_H, W, BANKED
3C88 0BFC 00493 andlw 0xfc
3C8A A4D8 00494 skpz
3C8C 0012 00495 return
00496
00497 ;; calculate pointer to pattern buffer
3C8E EE11 F000 00498 lfsr FSR1, DR55_INSTRUMENT_BUFFER
3C92 3196 00499 rrf DR55_SYSEX_ADDRESS_H, W, BANKED
3C94 3195 00500 rrf DR55_SYSEX_ADDRESS_L, W, BANKED
3C96 26E1 00501 addwf FSR1L, F
3C98 3196 00502 rrf DR55_SYSEX_ADDRESS_H, W, BANKED
3C9A 0B01 00503 andlw 0x01
3C9C 26E2 00504 addwf FSR1H, F
00505
00506 ;; set low or high nibble depending on LSB
00507 BRA_IFSET DR55_SYSEX_ADDRESS_L, 0, BANKED, DR55_SYSEX_WriteP_Upper
3C9E B195 M btfsc reg, bit, reg_a
3CA0 D006 M bra label
3CA2 00508 DR55_SYSEX_WriteP_Lower
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 74
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
3CA2 0EF0 00509 movlw 0xf0
3CA4 16E7 00510 andwf INDF1, F
3CA6 5193 00511 movf DR55_SYSEX_IN, W, BANKED
3CA8 0B0F 00512 andlw 0x0f
3CAA 12E7 00513 iorwf INDF1, F
3CAC 0012 00514 return
00515
3CAE 00516 DR55_SYSEX_WriteP_Upper
3CAE 0E0F 00517 movlw 0x0f
3CB0 16E7 00518 andwf INDF1, F
3CB2 3993 00519 swapf DR55_SYSEX_IN, W, BANKED
3CB4 0BF0 00520 andlw 0xf0
3CB6 12E7 00521 iorwf INDF1, F
3CB8 0012 00522 return
00523
00524 ;; --------------------------------------------------------------------------
00525 ;; This function returns a parameter depending on SysEx address
00526 ;; IN: address in DR55_SYSEX_ADDRESS_[LH] (nibbles are addressed)
00527 ;; OUT: parameter value in WREG
00528 ;; --------------------------------------------------------------------------
3CBA 00529 DR55_SYSEX_ReadP
00530 SET_BSR DR55_BASE
3CBA 0101 M movlb HIGH(reg)
00531
00532 ;; return 0x00 if address >= 0x400
3CBC 5196 00533 movf DR55_SYSEX_ADDRESS_H, W, BANKED
3CBE 0BFC 00534 andlw 0xfc
3CC0 E10D 00535 bnz DR55_SYSEX_ReadP_Invalid
00536
00537 ;; calculate pointer to pattern buffer
3CC2 EE11 F000 00538 lfsr FSR1, DR55_INSTRUMENT_BUFFER
3CC6 3196 00539 rrf DR55_SYSEX_ADDRESS_H, W, BANKED
3CC8 3195 00540 rrf DR55_SYSEX_ADDRESS_L, W, BANKED
3CCA 26E1 00541 addwf FSR1L, F
3CCC 3196 00542 rrf DR55_SYSEX_ADDRESS_H, W, BANKED
3CCE 0B01 00543 andlw 0x01
3CD0 26E2 00544 addwf FSR1H, F
00545
00546 ;; return low or high nibble depending on LSB
3CD2 50E7 00547 movf INDF1, W
3CD4 B195 00548 btfsc DR55_SYSEX_ADDRESS_L, 0, BANKED
3CD6 38E8 00549 swapf WREG, W
3CD8 0B0F 00550 andlw 0x0f
3CDA 0012 00551 return
00552
3CDC 00553 DR55_SYSEX_ReadP_Invalid
3CDC 0E00 00554 movlw 0x00
3CDE 0012 00555 return
00308 #include "DR55_sync.inc"
00001 ; $Id: dr55_sync.inc 2011-07-12 bd (Antichambre)
00002 ; bdupeyron@gmail.com 4 Djo'Boss DR-55
00003 ;
00004 ; MIDIbox DR55
00005 ; DR55_SYNC functions
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 75
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00006 ;
00007 ; ==========================================================================
00008 ;
00009 ; Copyright 1998-2006 Thorsten Klose (tk@midibox.org)
00010 ; Licensed for personal non-commercial use only.
00011 ; All other rights reserved.
00012 ;
00013 ; ==========================================================================
00014
00015 ;; flags and values of DR55 core registers
00016
00017 ;; ==========================================================================
00018
00000000 00019 DR55_SYNC_REQ_START EQU 0 ; start request (send 0xfa)
00000001 00020 DR55_SYNC_REQ_CONT EQU 1 ; continue request (send 0xfb)
00000002 00021 DR55_SYNC_REQ_STOP EQU 2 ; stop request (send 0xfc)
00000003 00022 DR55_SYNC_REQ_SONG_POS EQU 3 ; update of song position pointer (0xf2)
00023 ;; free: 4
00000005 00024 DR55_SYNC_REQ_NOECHO EQU 5 ; don't echo 0xfa 0xfb 0xfc to MIDI out
00025
00000000 00026 DR55_SYNC_STATE_RUN EQU 0 ; set if DR55_SYNCuencer runs
00000001 00027 DR55_SYNC_STATE_PAUSE EQU 1 ; set if pause
00028
00029 ;; --------------------------------------------------------------------------
00030 ;; This function initialyse SYNC PORT
00031 ;; --------------------------------------------------------------------------
3CE0 00032 DR55_SYNC_Init
00033 #if DEFAULT_EXT_CLK_LAT
3CE0 9495 00034 bcf DEFAULT_EXT_CLK_TRIS, DEFAULT_EXT_CLK_PIN ; set clock pin output dir
3CE2 948C 00035 bcf DEFAULT_EXT_CLK_LAT, DEFAULT_EXT_CLK_PIN ; clear clock pin output
00036 #endif
00037
00038 #if DEFAULT_EXT_START_LAT
3CE4 9894 00039 bcf DEFAULT_EXT_START_TRIS, DEFAULT_EXT_START_PIN ; set start pin output dir
3CE6 888B 00040 bsf DEFAULT_EXT_START_LAT, DEFAULT_EXT_START_PIN ; set start pin output
00041 #endif
3CE8 6B8A 00042 clrf DR55_SYNC_EXT_START_CTR, BANKED
00043
00044 #if DEFAULT_EXT_STOP_LAT
3CEA 9A94 00045 bcf DEFAULT_EXT_STOP_TRIS, DEFAULT_EXT_STOP_PIN ; set stop pin output dir
3CEC 8A8B 00046 bsf DEFAULT_EXT_STOP_LAT, DEFAULT_EXT_STOP_PIN ; set stop pin output
00047 #endif
3CEE 6B8B 00048 clrf DR55_SYNC_EXT_STOP_CTR, BANKED
00049
00050 #if DEFAULT_EXT_RESET_LAT
3CF0 9695 00051 bcf DEFAULT_EXT_RESET_TRIS, DEFAULT_EXT_RESET_PIN ; set stop pin output dir
3CF2 868C 00052 bsf DEFAULT_EXT_RESET_LAT, DEFAULT_EXT_RESET_PIN ; set stop pin output
00053 #endif
3CF4 0012 00054 return
00055
00056 ;; --------------------------------------------------------------------------
00057 ;; This function generates a MIDI clock event
00058 ;; Note that this is an interrupt service routine! Use FSR2 instead of FSR0
00059 ;; and IRQ_TMPx instead of TMPx -- and make the routine as fast as possible!
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 76
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00060 ;; --------------------------------------------------------------------------
3CF6 00061 DR55_SYNC_Tick
00062 SET_BSR DR55_BASE
3CF6 0101 M movlb HIGH(reg)
3CF8 00063 DR55_SYNC_Tick_Slave
00064 ;; increment the clock counter, used to measure the delay between two F8 events
00065 ;; see also DR55_SYNC_MIDI_NotifyRx
3CF8 2B85 00066 incf DR55_SYNC_INCOMING_CLK_CTR, F, BANKED
00067
00068 ;; decrement sent clock delay, send interpolated clock events 3 times
00069 ;; (more infos: see header of DR55_SYNC_bpm.inc)
3CFA 0784 00070 decf DR55_SYNC_SENT_CLK_DELAY, F, BANKED
3CFC E109 00071 bnz DR55_SYNC_Tick_Slave_NoTrigger
3CFE 00072 DR55_SYNC_Tick_Slave_Trigger
3CFE 5183 00073 movf DR55_SYNC_SENT_CLK_CTR, W, BANKED
3D00 0A03 00074 xorlw 0x03
3D02 E006 00075 bz DR55_SYNC_Tick_Slave_NoTrigger
3D04 2B83 00076 incf DR55_SYNC_SENT_CLK_CTR, F, BANKED
3D06 2B82 00077 incf DR55_SYNC_CLK_REQ_CTR, F, BANKED
3D08 3186 00078 rrf DR55_SYNC_INCOMING_CLK_DELAY, W, BANKED
3D0A 30E8 00079 rrf WREG, W
3D0C 0B3F 00080 andlw 0x3f
3D0E 6F84 00081 movwf DR55_SYNC_SENT_CLK_DELAY, BANKED
3D10 00082 DR55_SYNC_Tick_Slave_NoTrigger
00083
3D10 00084 DR55_SYNC_Tick_Slave_StartPuls
3D10 518A 00085 movf DR55_SYNC_EXT_START_CTR, W,BANKED
3D12 E001 00086 bz DR55_SYNC_Tick_Slave_StopPuls
3D14 078A 00087 decf DR55_SYNC_EXT_START_CTR, F,BANKED
00088
3D16 00089 DR55_SYNC_Tick_Slave_StopPuls
3D16 518B 00090 movf DR55_SYNC_EXT_STOP_CTR, W,BANKED
3D18 E001 00091 bz DR55_SYNC_Tick_Slave_End
3D1A 078B 00092 decf DR55_SYNC_EXT_STOP_CTR, F,BANKED
00093
3D1C 00094 DR55_SYNC_Tick_Slave_End
3D1C 0012 00095 return
00096
00097
00098
00099 ;; --------------------------------------------------------------------------
00100 ;; This function is called by USER_Tick when nothing else is to do
00101 ;; --------------------------------------------------------------------------
3D1E 00102 DR55_SYNC_Handle
00103 ;; ---[ check if a start event has been requested ]---
00104 SET_BSR DR55_BASE
3D1E 0101 M movlb HIGH(reg)
00105 BRA_IFCLR DR55_SYNC_REQ, DR55_SYNC_REQ_START, BANKED, DR55_SYNC_Handle_NoStart
3D20 A180 M btfss reg, bit, reg_a
3D22 D002 M bra label
3D24 9180 00106 bcf DR55_SYNC_REQ, DR55_SYNC_REQ_START, BANKED ; clear request
3D26 D823 00107 rcall DR55_SYNC_Start ; process the start event
3D28 00108 DR55_SYNC_Handle_NoStart
00109
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 77
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00110 ;; ---[ check if a continue event has been requested ]---
00111 SET_BSR DR55_BASE
3D28 0101 M movlb HIGH(reg)
00112 BRA_IFCLR DR55_SYNC_REQ, DR55_SYNC_REQ_CONT, BANKED, DR55_SYNC_Handle_NoCont
3D2A A380 M btfss reg, bit, reg_a
3D2C D002 M bra label
3D2E 9380 00113 bcf DR55_SYNC_REQ, DR55_SYNC_REQ_CONT, BANKED ; clear request
3D30 D82B 00114 rcall DR55_SYNC_Cont ; process the continue event
3D32 00115 DR55_SYNC_Handle_NoCont
00116
00117 ;; ---[ check if a stop event has been requested ]---
00118 SET_BSR DR55_BASE
3D32 0101 M movlb HIGH(reg)
00119 BRA_IFCLR DR55_SYNC_REQ, DR55_SYNC_REQ_STOP, BANKED, DR55_SYNC_Handle_NoStop
3D34 A580 M btfss reg, bit, reg_a
3D36 D002 M bra label
3D38 9580 00120 bcf DR55_SYNC_REQ, DR55_SYNC_REQ_STOP, BANKED ; clear request
3D3A D82E 00121 rcall DR55_SYNC_Stop ; process the continue event
3D3C 00122 DR55_SYNC_Handle_NoStop
00123
00124 ;; ---[ check if song position should be updated ]---
00125 SET_BSR DR55_BASE
3D3C 0101 M movlb HIGH(reg)
00126 BRA_IFCLR DR55_SYNC_REQ, DR55_SYNC_REQ_SONG_POS, BANKED, DR55_SYNC_Handle_NoSongPos
3D3E A780 M btfss reg, bit, reg_a
3D40 D003 M bra label
3D42 9780 00127 bcf DR55_SYNC_REQ, DR55_SYNC_REQ_SONG_POS, BANKED; clear request
3D44 ECF6 F01E 00128 call DR55_SYNC_SetPos ; process the continue event
3D48 00129 DR55_SYNC_Handle_NoSongPos
00130
00131 ;; ---[ check if a clock event has been requested ]---
3D48 00132 DR55_SYNC_Handle_ClkLoop
00133 SET_BSR DR55_BASE
3D48 0101 M movlb HIGH(reg)
3D4A 5182 00134 movf DR55_SYNC_CLK_REQ_CTR, W, BANKED
3D4C E006 00135 bz DR55_SYNC_Handle_NoClk
3D4E 00136 DR55_SYNC_Handle_Clk
00137 ;; note: the clock counter ensures that a clock event never get lost
00138 ;; see also the header information of DR55_SYNC_bpm.inc
3D4E 0782 00139 decf DR55_SYNC_CLK_REQ_CTR, F, BANKED
00140 ;; check for auto slave selection
00141 ;; don't execute clock if DR55_SYNCuencer not running
00142 BRA_IFCLR DR55_SYNC_STATE, DR55_SYNC_STATE_RUN, BANKED, DR55_SYNC_Handle_NoClk
3D50 A181 M btfss reg, bit, reg_a
3D52 D003 M bra label
00143 BRA_IFSET DR55_SYNC_STATE, DR55_SYNC_STATE_PAUSE, BANKED, DR55_SYNC_Handle_NoClk
3D54 B381 M btfsc reg, bit, reg_a
3D56 D001 M bra label
3D58 D827 00144 rcall DR55_SYNC_Clk ; process clock event
3D5A 00145 DR55_SYNC_Handle_NoClk
00146
00147 ;; iterate until clock counter is zero
3D5A 00148 DR55_SYNC_Handle_Cont
00149 SET_BSR DR55_BASE
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 78
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
3D5A 0101 M movlb HIGH(reg)
3D5C 5182 00150 movf DR55_SYNC_CLK_REQ_CTR, W, BANKED
3D5E E1CB 00151 bnz DR55_SYNC_Tick
00152
00153 #if DEFAULT_EXT_START_LAT
3D60 518A 00154 movf DR55_SYNC_EXT_START_CTR, W, BANKED
3D62 E101 00155 bnz DR55_SYNC_Handle_NoStartPuls
3D64 888B 00156 bsf DEFAULT_EXT_START_LAT, DEFAULT_EXT_START_PIN
3D66 00157 DR55_SYNC_Handle_NoStartPuls
00158 #endif
00159
00160 #if DEFAULT_EXT_STOP_LAT
3D66 518B 00161 movf DR55_SYNC_EXT_STOP_CTR, W, BANKED
3D68 E101 00162 bnz DR55_SYNC_Handle_NoStopPuls
3D6A 8A8B 00163 bsf DEFAULT_EXT_STOP_LAT, DEFAULT_EXT_STOP_PIN
3D6C 00164 DR55_SYNC_Handle_NoStopPuls
00165 #endif
00166
3D6C 00167 DR55_SYNC_Handle_End
3D6C 0012 00168 return
00169
00170
00171 ;; --------------------------------------------------------------------------
00172 ;; start event handler
00173 ;; --------------------------------------------------------------------------
3D6E 00174 DR55_SYNC_Start
00175 SET_BSR DR55_BASE
3D6E 0101 M movlb HIGH(reg)
00176
00177 ;; set start pin (if enabled)
00178 #if DEFAULT_EXT_START_LAT
3D70 988B 00179 bcf DEFAULT_EXT_START_LAT, DEFAULT_EXT_START_PIN
3D72 0E50 00180 movlw DEFAULT_EXT_PULS_DELAY
3D74 6F8A 00181 movwf DR55_SYNC_EXT_START_CTR, BANKED
00182 #endif
00183 #if DEFAULT_EXT_RESET_LAT
3D76 968C 00184 bcf DEFAULT_EXT_RESET_LAT, DEFAULT_EXT_RESET_PIN
00185 #endif
00186
00187 ;; extra: a song could contain a STOP entry at the first position
00188 ;; in order to find this out, we set the RUN flag here. If it has been cleared, we don't continue with the start procedure
00189 SET_BSR DR55_BASE
3D78 0101 M movlb HIGH(reg)
3D7A 8181 00190 bsf DR55_SYNC_STATE, DR55_SYNC_STATE_RUN, BANKED
00191
00192 SET_BSR DR55_BASE ; (don't start - song DR55_SYNC has requested a stop)
3D7C 0101 M movlb HIGH(reg)
3D7E A181 00193 btfss DR55_SYNC_STATE, DR55_SYNC_STATE_RUN, BANKED
3D80 0012 00194 return
00195
00196 ;; finally set run state and notify that this is the first clock
00197 SET_BSR DR55_BASE
3D82 0101 M movlb HIGH(reg)
3D84 8181 00198 bsf DR55_SYNC_STATE, DR55_SYNC_STATE_RUN, BANKED
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 79
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00199
3D86 0012 00200 return
00201
00202
00203 ;; --------------------------------------------------------------------------
00204 ;; continue event handler
00205 ;; --------------------------------------------------------------------------
3D88 00206 DR55_SYNC_Cont
00207 SET_BSR DR55_BASE
3D88 0101 M movlb HIGH(reg)
00208
00209 ;; set start pin (if enabled)
00210 #if DEFAULT_EXT_START_LAT
3D8A 988B 00211 bcf DEFAULT_EXT_START_LAT, DEFAULT_EXT_START_PIN
3D8C 0E50 00212 movlw DEFAULT_EXT_PULS_DELAY
3D8E 6F8A 00213 movwf DR55_SYNC_EXT_START_CTR, BANKED
00214 #endif
00215
00216 ;; set start pin (if enabled)
00217 #if DEFAULT_EXT_RESET_OPT == 1
00218 #if DEFAULT_EXT_RESET_LAT
00219 bcf DEFAULT_EXT_RESET_LAT, DEFAULT_EXT_RESET_PIN
00220 #endif
00221 #endif
00222
00223 ;; clear all DR55_SYNC requests (i.E. a stop event!)
3D90 6B80 00224 clrf DR55_SYNC_REQ, BANKED
00225 ;; and set run state
3D92 8181 00226 bsf DR55_SYNC_STATE, DR55_SYNC_STATE_RUN, BANKED
00227 ;; clear pause flag
3D94 9381 00228 bcf DR55_SYNC_STATE, DR55_SYNC_STATE_PAUSE, BANKED
00229
3D96 0012 00230 return
00231
00232 ;; --------------------------------------------------------------------------
00233 ;; stop event handler
00234 ;; --------------------------------------------------------------------------
3D98 00235 DR55_SYNC_Stop
00236 SET_BSR DR55_BASE
3D98 0101 M movlb HIGH(reg)
00237
00238 ;; clear stop pin (if enabled)
00239 #if DEFAULT_EXT_STOP_LAT
3D9A 9A8B 00240 bcf DEFAULT_EXT_STOP_LAT, DEFAULT_EXT_STOP_PIN
3D9C 0E50 00241 movlw DEFAULT_EXT_PULS_DELAY
3D9E 6F8B 00242 movwf DR55_SYNC_EXT_STOP_CTR, BANKED
00243 #endif
00244
00245 #if DEFAULT_EXT_RESET_OPT == 1
00246 #if DEFAULT_EXT_RESET_LAT
00247 bsf DEFAULT_EXT_RESET_LAT, DEFAULT_EXT_RESET_PIN
00248 #endif
00249 #endif
00250
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 80
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00251
00252 ;; clear all DR55_SYNC requests (i.E. a stop event!)
3DA0 6B80 00253 clrf DR55_SYNC_REQ, BANKED
00254 ;; and clear run state
3DA2 9181 00255 bcf DR55_SYNC_STATE, DR55_SYNC_STATE_RUN, BANKED
00256 #if DEFAULT_EXT_CLK_LAT
00257 ;; ensure that external clock pin is cleared
3DA4 948C 00258 bcf DEFAULT_EXT_CLK_LAT, DEFAULT_EXT_CLK_PIN
00259 #endif
00260
3DA6 0012 00261 return
00262
00263
00264 ;; --------------------------------------------------------------------------
00265 ;; clock event handler
00266 ;; --------------------------------------------------------------------------
3DA8 00267 DR55_SYNC_Clk
00268 SET_BSR DR55_BASE
3DA8 0101 M movlb HIGH(reg)
00269
00270 ;; ------------------------------------------------------------------
00271 ;; Set external clock depending on divider
00272 ;; ------------------------------------------------------------------
00273 #if DEFAULT_EXT_CLK_LAT
3DAA 00274 DR55_SYNC_ExtClk
00275 BRA_IFSET DR55_SYNC_STATE, DR55_SYNC_STATE_RUN, BANKED, DR55_SYNC_ExtClk_Run
3DAA B181 M btfsc reg, bit, reg_a
3DAC D003 M bra label
3DAE 00276 DR55_SYNC_ExtClk_Stop
3DAE 6B87 00277 clrf DR55_SYNC_EXT_CLK_DIVIDER, BANKED ; ensure that pin set with next F8
3DB0 6B89 00278 clrf DR55_SYNC_EXT_CLK_CTR, BANKED
00279 rgoto DR55_SYNC_ExtClk_Clr
3DB2 D00F M bra label
3DB4 00280 DR55_SYNC_ExtClk_Run
3DB4 5187 00281 movf DR55_SYNC_EXT_CLK_DIVIDER, W, BANKED
3DB6 E10C 00282 bnz DR55_SYNC_ExtClk_DecDv
3DB8 00283 DR55_SYNC_ExtClk_Set
00284 ;;movlw DEFAULT_EXT_CLK_DIV
00285 ;;btfss WREG, 2
3DB8 A588 00286 btfss DR55_SYNC_EXT_CLK_DIVIDER_PRELOAD, 2, BANKED
3DBA 848C 00287 bsf DEFAULT_EXT_CLK_LAT, DEFAULT_EXT_CLK_PIN
3DBC 2B89 00288 incf DR55_SYNC_EXT_CLK_CTR, F, BANKED
00289 ;;movlw DEFAULT_EXT_CLK_DIV
3DBE 5188 00290 movf DR55_SYNC_EXT_CLK_DIVIDER_PRELOAD, W, BANKED
3DC0 B4E8 00291 btfsc WREG, 2
3DC2 0B03 00292 andlw 0x03
3DC4 0F01 00293 addlw 0x01
3DC6 ECC6 F016 00294 call MIOS_HLP_GetBitORMask
3DCA 0FFF 00295 addlw -1
3DCC 6F87 00296 movwf DR55_SYNC_EXT_CLK_DIVIDER, BANKED
00297 rgoto DR55_SYNC_ExtClk_Cont
3DCE D003 M bra label
3DD0 00298 DR55_SYNC_ExtClk_DecDv
3DD0 0787 00299 decf DR55_SYNC_EXT_CLK_DIVIDER, F, BANKED
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 81
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
3DD2 00300 DR55_SYNC_ExtClk_Clr
00301 ;;movlw DEFAULT_EXT_CLK_DIV
00302 ;;btfss WREG, 2
3DD2 A588 00303 btfss DR55_SYNC_EXT_CLK_DIVIDER_PRELOAD, 2, BANKED
3DD4 948C 00304 bcf DEFAULT_EXT_CLK_LAT, DEFAULT_EXT_CLK_PIN
3DD6 00305 DR55_SYNC_ExtClk_Cont
3DD6 0E03 00306 movlw 0x03
3DD8 6189 00307 cpfslt DR55_SYNC_EXT_CLK_CTR, BANKED
3DDA 6B89 00308 clrf DR55_SYNC_EXT_CLK_CTR, BANKED
00309 ;;movlw DEFAULT_EXT_CLK_DIV
00310 ;;BRA_IFCLR WREG, 2, ACCESS, DR55_SYNC_Clk_End
00311 BRA_IFCLR DR55_SYNC_EXT_CLK_DIVIDER_PRELOAD, 2, BANKED, DR55_SYNC_Clk_End
3DDC A588 M btfss reg, bit, reg_a
3DDE D005 M bra label
3DE0 5189 00312 movf DR55_SYNC_EXT_CLK_CTR, W, BANKED
3DE2 E102 00313 bnz DR55_SYNC_ExtClk_Clr_By3
3DE4 00314 DR55_SYNC_ExtClk_Set_By3
3DE4 848C 00315 bsf DEFAULT_EXT_CLK_LAT, DEFAULT_EXT_CLK_PIN
00316 rgoto DR55_SYNC_Clk_End
3DE6 D001 M bra label
00317
3DE8 00318 DR55_SYNC_ExtClk_Clr_By3
3DE8 948C 00319 bcf DEFAULT_EXT_CLK_LAT, DEFAULT_EXT_CLK_PIN
00320 #endif
00321
3DEA 00322 DR55_SYNC_Clk_End
00323
3DEA 0012 00324 return
00325
00326 ;; --------------------------------------------------------------------------
00327 ;; reset output for DR55 internal counter via MIDI (F2 event) SPP=0
00328 ;; --------------------------------------------------------------------------
3DEC 00329 DR55_SYNC_SetPos
00330 #if DEFAULT_EXT_RESET_OPT == 0
00331 SET_BSR DR55_BASE
3DEC 0101 M movlb HIGH(reg)
3DEE 518D 00332 movf DR55_SYNC_MIDIPOS_MSB, W, BANKED
3DF0 118E 00333 iorwf DR55_SYNC_MIDIPOS_LSB, W, BANKED
3DF2 E101 00334 bnz DR55_SYNC_SetPos_End
00335 #if DEFAULT_EXT_RESET_LAT
3DF4 868C 00336 bsf DEFAULT_EXT_RESET_LAT, DEFAULT_EXT_RESET_PIN
00337 #endif
00338 #endif
3DF6 00339 DR55_SYNC_SetPos_End
3DF6 0012 00340 return
00309
00310 ;; ---[ DR55 EEPROM content ]---
00311 #include "DR55_presets.inc"
00001 ; $Id: dr55_presets.inc 2011-07-12 bd (Antichambre)
00002 ; bdupeyron@gmail.com 4 Djo'Boss DR-55
00003 ;
00004 ; MIDIbox DR55
00005 ; Presets (EEPROM content)
00006 ;
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 82
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00007 ; ==========================================================================
00008 ;
00009 ; Copyright 1998-2006 Thorsten Klose (tk@midibox.org)
00010 ; Licensed for personal non-commercial use only.
00011 ; All other rights reserved.
00012 ;
00013 ; ==========================================================================
00014
00015 ERRORLEVEL -220 ; suppress "Address exceeds maximum range for this processor."
00016 ;; this is (unfortunately) required for gpasm
00017
00018
F00000 00019 org 0xf00000 ; eeprom base address
F00000 00020 DR55_EEPROM_PRESET
00021 ;; note time vel !0x00!!0x00! free free free free free free free free free free free
F00000 0A34 0000 00022 de 0x34, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ; BD
0000 0000
0000 0000
0000 0000
F00010 0A30 0000 00023 de 0x30, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ; SD
0000 0000
0000 0000
0000 0000
F00020 0A32 0000 00024 de 0x32, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ; RS
0000 0000
0000 0000
0000 0000
F00030 0A31 0000 00025 de 0x31, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ; HH
0000 0000
0000 0000
0000 0000
F00040 0A33 0000 00026 de 0x33, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ; ACC
0000 0000
0000 0000
0000 0000
F00050 0009 00027 EEPROM_DR55_MIDI_CH de (DEFAULT_MIDI_CHANNEL-1), 0x00 ;; 0x10
F00052 00028 EEPROM_DR55_ACC_MODE ;de 0x00
F00052 647F 00029 EEPROM_DR55_ACC_LAST_MODE de 0x7f, 0x64
F00054 00030 EEPROM_DR55_ACC_THLD ;de 0x64
F00054 0006 00031 EEPROM_DR55_CLK_DIV de DEFAULT_EXT_CLK_DIV, 0x00
F00056 00032 EEPROM_DR55_FREE5 ;de 0x00
F00056 0000 00033 EEPROM_DR55_FREE6 de 0x00, 0x00
F00058 00034 EEPROM_DR55_FREE7 ;de 0x00
F00058 0000 00035 EEPROM_DR55_FREE8 de 0x00, 0x00
F0005A 00036 EEPROM_DR55_FREE9 ;de 0x00
F0005A 0000 00037 EEPROM_DR55_FREEA de 0x00, 0x00
F0005C 00038 EEPROM_DR55_FREEB ;de 0x00
F0005C 0000 00039 EEPROM_DR55_FREEC de 0x00, 0x00
F0005E 00040 EEPROM_DR55_FREED ;de 0x00
F0005E 0000 00041 EEPROM_DR55_FREEE de 0x00, 0x00
F00060 00042 EEPROM_DR55_FREEF ;de 0x00
F00060 0000 0000 00043 de 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ; Free
0000 0000
0000 0000
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 83
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0000 0000
F00070 0000 0000 00044 de 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ; Free
0000 0000
0000 0000
0000 0000
F00080 0000 0000 00045 de 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ; Free
0000 0000
0000 0000
0000 0000
F00090 0000 0000 00046 de 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ; Free
0000 0000
0000 0000
0000 0000
F000A0 0000 0000 00047 de 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ; Free
0000 0000
0000 0000
0000 0000
F000B0 0000 0000 00048 de 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ; Free
0000 0000
0000 0000
0000 0000
F000C0 0000 0000 00049 de 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ; Free
0000 0000
0000 0000
0000 0000
F000D0 0000 0000 00050 de 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ; Free
0000 0000
0000 0000
0000 0000
F000E0 0000 0000 00051 de 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ; Free
0000 0000
0000 0000
0000 0000
F000F0 0000 0000 00052 de 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ; Free
0000 0000
0000 0000
0000 0000
00053
F00100 00054 org 0xf00100 ; eeprom base address
00055
F00100 0000 0000 00056 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
F00110 0000 0000 00057 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
F00120 0000 0000 00058 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
F00130 0000 0000 00059 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 84
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0000 0000
0000 0000
00060
F00140 0000 0000 00061 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
F00150 0000 0000 00062 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
F00160 0000 0000 00063 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
F00170 0000 0000 00064 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
00065
F00180 0000 0000 00066 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
F00190 0000 0000 00067 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
F001A0 0000 0000 00068 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
F001B0 0000 0000 00069 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
00070
F001C0 0000 0000 00071 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
F001D0 0000 0000 00072 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
F001E0 0000 0000 00073 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
F001F0 0000 0000 00074 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
00075
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 85
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
F00200 00076 org 0xf00200 ; eeprom base address
00077
F00200 0000 0000 00078 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
F00210 0000 0000 00079 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
F00220 0000 0000 00080 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
F00230 0000 0000 00081 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
00082
F00240 0000 0000 00083 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
F00250 0000 0000 00084 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
F00260 0000 0000 00085 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
F00270 0000 0000 00086 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
00087
F00280 0000 0000 00088 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
F00290 0000 0000 00089 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
F002A0 0000 0000 00090 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
F002B0 0000 0000 00091 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
00092
F002C0 0000 0000 00093 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 86
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0000 0000
0000 0000
0000 0000
F002D0 0000 0000 00094 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
F002E0 0000 0000 00095 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
F002F0 0000 0000 00096 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
00097
00098
00099 ;; this 256 byte block is unusued yet
F00300 00100 org 0xf00300
00101
F00300 0000 0000 00102 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
F00310 0000 0000 00103 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
F00320 0000 0000 00104 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
F00330 0000 0000 00105 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
00106
F00340 0000 0000 00107 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
F00350 0000 0000 00108 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
F00360 0000 0000 00109 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
F00370 0000 0000 00110 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
00111
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 87
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
F00380 0000 0000 00112 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
F00390 0000 0000 00113 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
F003A0 0000 0000 00114 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
F003B0 0000 0000 00115 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
00116
F003C0 0000 0000 00117 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
F003D0 0000 0000 00118 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
F003E0 0000 0000 00119 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
F003F0 0000 0000 00120 de 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
0000 0000
0000 0000
0000 0000
00312
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 88
 
 
SYMBOL TABLE
LABEL VALUE
 
A 00000000
ABDEN 00000000
ABDOVF 00000007
ACCESS 00000000
ACKDT 00000005
ACKEN 00000004
ACKSTAT 00000006
ACQT0 00000003
ACQT1 00000004
ACQT2 00000005
ADCON0 00000FC2
ADCON1 00000FC1
ADCON2 00000FC0
ADCS0 00000000
ADCS1 00000001
ADCS2 00000002
ADDEN 00000003
ADEN 00000003
ADFM 00000007
ADIE 00000006
ADIF 00000006
ADIP 00000006
ADON 00000000
ADRES 00000FC3
ADRESH 00000FC4
ADRESL 00000FC3
AIN_NotifyChange 00003422
AN10 00000001
AN11 00000004
AN12 00000000
AN4 00000005
AN5 00000000
AN6 00000001
AN7 00000002
AN8 00000002
AN9 00000003
BANKED 00000001
BAUDCON 00000FB8
BAUDCTL 00000FB8
BCLIE 00000003
BCLIF 00000003
BCLIP 00000003
BF 00000000
BGST 00000005
BOR 00000000
BRG16 00000003
BRGH 00000002
BSR 00000FE0
C 00000000
C1INV 00000004
C1OUT 00000006
C2INV 00000005
C2OUT 00000007
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 89
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
CCP1 00000002
CCP1CON 00000FBD
CCP1IE 00000002
CCP1IF 00000002
CCP1IP 00000002
CCP1M0 00000000
CCP1M1 00000001
CCP1M2 00000002
CCP1M3 00000003
CCP1X 00000005
CCP1Y 00000004
CCP2CON 00000FBA
CCP2IE 00000000
CCP2IF 00000000
CCP2IP 00000000
CCP2M0 00000000
CCP2M1 00000001
CCP2M2 00000002
CCP2M3 00000003
CCP2X 00000005
CCP2Y 00000004
CCP2_PORTB 00000003
CCP2_PORTC 00000001
CCPR1 00000FBE
CCPR1H 00000FBF
CCPR1L 00000FBE
CCPR2 00000FBB
CCPR2H 00000FBC
CCPR2L 00000FBB
CFGS 00000006
CHS0 00000002
CHS1 00000003
CHS2 00000004
CHS3 00000005
CIS 00000003
CK 00000006
CKE 00000006
CKP 00000004
CM0 00000000
CM1 00000001
CM2 00000002
CMCON 00000FB4
CMIE 00000006
CMIF 00000006
CMIP 00000006
CREN 00000004
CS 00000002
CSRC 00000007
CVR0 00000000
CVR1 00000001
CVR2 00000002
CVR3 00000003
CVRCON 00000FB5
CVREN 00000007
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 90
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
CVROE 00000006
CVRR 00000005
CVRSS 00000004
D 00000005
DC 00000001
DC1B0 00000004
DC1B1 00000005
DC2B0 00000004
DC2B1 00000005
DEBUG 00000FD4
DONE 00000001
DR55_BASE 00000100
DR55_CCIN_Cmd_3L 00003548
DR55_CCIN_Cmd_4L 00003556
DR55_CCIN_Cmd_4U 00003562
DR55_CCIN_Cmd_6L 0000353C
DR55_CCIN_Cmd_7 00003534
DR55_CCIN_Cmd_B10 0000356E
DR55_CCIN_Cmd_B32 0000357A
DR55_CCIN_Cmd_B54 00003588
DR55_CCIN_Cmd_End 0000359A
DR55_CCIN_Cmd_NOP 00003532
DR55_CCIN_Cmd_OmniOff 00003594
DR55_CCIN_Set 0000350E
DR55_CCIN_Set_Cmd 00003510
DR55_CCOUT_Cmd_3L 0000360A
DR55_CCOUT_Cmd_4L 00003610
DR55_CCOUT_Cmd_4U 00003616
DR55_CCOUT_Cmd_6L 00003604
DR55_CCOUT_Cmd_7 000035FE
DR55_CCOUT_Cmd_B10 0000361C
DR55_CCOUT_Cmd_B32 00003622
DR55_CCOUT_Cmd_B54 0000362A
DR55_CCOUT_Cmd_B76 00003630
DR55_CCOUT_Cmd_NOP 000035FC
DR55_CCOUT_Get 000035D8
DR55_CCOUT_Handler 0000359C
DR55_CCOUT_Handler_Loop 000035A4
DR55_CCOUT_Handler_Next 000035D0
DR55_CCOUT_Set_Cmd 000035DA
DR55_CC_TABLE 0000365C
DR55_CC_TABLE_Get 0000363A
DR55_CFG0 00000160
DR55_DATA_BUFFER 00000080
DR55_DATA_BUFFER_END 000000BF
DR55_EEPROM_PRESET 00F00000
DR55_EEProm_Preset_Handle 0000348A
DR55_EEProm_Preset_Read 0000348C
DR55_EEProm_Preset_ReadLoop 00003498
DR55_EEProm_Preset_Save 000034C6
DR55_EEProm_Preset_SaveLoop 000034D6
DR55_EVNTH 00000163
DR55_EVNTI 00000164
DR55_FSR_InstMode 0000347E
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 91
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
DR55_FSR_InstNote 0000346C
DR55_FSR_InstTime 00003478
DR55_FSR_InstTrigReq 00003484
DR55_FSR_InstVel 00003472
DR55_FSR_InstXXX 0000345C
DR55_INST0 00000100
DR55_INST0_ACC_LAST_ASGN 00000177
DR55_INST0_ACC_LAST_MODE 00000176
DR55_INST0_ACC_MODE 00000174
DR55_INST0_ACC_THLD 00000175
DR55_INST0_TIME_CTR 00000150
DR55_INST0_TIME_SUB_CTR 00000155
DR55_INST1 00000110
DR55_INST1_TIME_CTR 00000151
DR55_INST1_TIME_SUB_CTR 00000156
DR55_INST2 00000120
DR55_INST2_TIME_CTR 00000152
DR55_INST2_TIME_SUB_CTR 00000157
DR55_INST3 00000130
DR55_INST3_TIME_CTR 00000153
DR55_INST3_TIME_SUB_CTR 00000158
DR55_INST4 00000140
DR55_INST4_TIME_CTR 00000154
DR55_INST4_TIME_SUB_CTR 00000159
DR55_INSTMODEx 00000002
DR55_INSTNOTEx 00000000
DR55_INSTRECORD_LENGTH 00000010
DR55_INSTRUMENT_BUFFER 00000100
DR55_INSTTIMEx 00000001
DR55_INSTVELx 00000002
DR55_INST_ClearAll 0000384E
DR55_INST_ClearAll_End 0000385A
DR55_INST_Handle 000037A8
DR55_INST_Handle_Acc_Follow 000037DE
DR55_INST_Handle_Acc_Follow_ClrReq 0000380C
DR55_INST_Handle_Acc_Follow_First 00003802
DR55_INST_Handle_Acc_Follow_Last 000037F8
DR55_INST_Handle_Acc_NotFollow 000037B4
DR55_INST_Handle_Acc_NotFollow_ClrReq 000037C6
DR55_INST_Handle_Clr 00003838
DR55_INST_Handle_Cont 0000381C
DR55_INST_Handle_End 0000384C
DR55_INST_Handle_Loop 000037B0
DR55_INST_Handle_Loop_Next 00003844
DR55_INST_Handle_Norm 000037D0
DR55_INST_Handle_Norm_ClrReq 00003814
DR55_INST_Handle_Set 0000382A
DR55_INST_Init 0000375C
DR55_INST_Tick 0000375E
DR55_INST_Tick_End 000037A6
DR55_INST_Tick_INST0 00003760
DR55_INST_Tick_INST1 0000376E
DR55_INST_Tick_INST2 0000377C
DR55_INST_Tick_INST3 0000378A
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 92
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
DR55_INST_Tick_INST4 00003798
DR55_IO_TABLE_DIN 00003082
DR55_IRQ_SAVED_PRODH 0000019F
DR55_IRQ_SAVED_PRODL 0000019E
DR55_MIDI_AfterTouch 00003A8A
DR55_MIDI_CC 00003A6A
DR55_MIDI_CC_00 00003A70
DR55_MIDI_CC_End 00003A84
DR55_MIDI_CC_No00 00003A72
DR55_MIDI_CHANNEL 00000162
DR55_MIDI_NoteOff 000039F8
DR55_MIDI_NoteOff_Acc_ClrReq 00003A4C
DR55_MIDI_NoteOff_Acc_Follow 00003A1E
DR55_MIDI_NoteOff_Acc_NotFollow 00003A08
DR55_MIDI_NoteOff_Acc_Vel_Timed_First 00003A42
DR55_MIDI_NoteOff_Acc_Vel_Timed_Last 00003A38
DR55_MIDI_NoteOff_Loop 000039FC
DR55_MIDI_NoteOff_Loop_Next 00003A5E
DR55_MIDI_NoteOff_Norm 00003A0C
DR55_MIDI_NoteOff_Norm_ClrReq 00003A54
DR55_MIDI_NoteOn 00003900
DR55_MIDI_NoteOn_Acc 00003916
DR55_MIDI_NoteOn_Acc_Note 0000391A
DR55_MIDI_NoteOn_Acc_Vel 00003980
DR55_MIDI_NoteOn_Acc_Vel_Copy 00003996
DR55_MIDI_NoteOn_Acc_Vel_NoteOff 0000399E
DR55_MIDI_NoteOn_Acc_Vel_NoteOff_First 000039B8
DR55_MIDI_NoteOn_Acc_Vel_NoteOff_Last 000039B2
DR55_MIDI_NoteOn_Acc_Vel_Set 000039E4
DR55_MIDI_NoteOn_Acc_Vel_Take 0000398E
DR55_MIDI_NoteOn_Acc_Vel_Timed 000039BE
DR55_MIDI_NoteOn_Acc_Vel_Timed_First 000039DE
DR55_MIDI_NoteOn_Acc_Vel_Timed_Last 000039D8
DR55_MIDI_NoteOn_Loop 0000390A
DR55_MIDI_NoteOn_Loop_Next 000039EE
DR55_MIDI_NoteOn_NoAcc_Cont 00003948
DR55_MIDI_NoteOn_NoAcc_Cont1 0000395A
DR55_MIDI_NoteOn_NoAcc_Cont2 0000396C
DR55_MIDI_NoteOn_NoAcc_Set 00003974
DR55_MIDI_NoteOn_NoAcc_Test 0000397C
DR55_MIDI_NotifyReceivedEvent 000038E8
DR55_MIDI_NotifyRx 0000385C
DR55_MIDI_NotifyRx_Clk 00003866
DR55_MIDI_NotifyRx_Cont 00003896
DR55_MIDI_NotifyRx_End 000038E6
DR55_MIDI_NotifyRx_NoClk 0000387E
DR55_MIDI_NotifyRx_NoCont 0000389E
DR55_MIDI_NotifyRx_NoStart 00003890
DR55_MIDI_NotifyRx_NoStop 000038AA
DR55_MIDI_NotifyRx_SPos 000038AA
DR55_MIDI_NotifyRx_SPos_End 000038E6
DR55_MIDI_NotifyRx_SPos_F2_0 000038C0
DR55_MIDI_NotifyRx_SPos_F2_LSB 000038CE
DR55_MIDI_NotifyRx_SPos_F2_MSB 000038D4
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 93
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
DR55_MIDI_NotifyRx_SPos_Syx_Check 000038C2
DR55_MIDI_NotifyRx_SPos_Syx_Inv 000038CA
DR55_MIDI_NotifyRx_SPos_Syx_Match 000038C6
DR55_MIDI_NotifyRx_Start 00003884
DR55_MIDI_NotifyRx_Start_Cont 0000389A
DR55_MIDI_PitchBender 00003A68
DR55_MIDI_PolyAfterTouch 00003A88
DR55_MIDI_ProgramChange 00003A86
DR55_SPARE5 00000005
DR55_SPARE6 00000006
DR55_SPARE7 00000007
DR55_SPARE8 00000008
DR55_SPARE9 00000009
DR55_SPAREA 0000000A
DR55_SPAREB 0000000B
DR55_SPAREC 0000000C
DR55_SPARED 0000000D
DR55_SPAREE 0000000E
DR55_SPAREF 0000000F
DR55_STAT 00000161
DR55_SYNC_CLK_REQ_CTR 00000182
DR55_SYNC_Clk 00003DA8
DR55_SYNC_Clk_End 00003DEA
DR55_SYNC_Cont 00003D88
DR55_SYNC_EXT_CLK_CTR 00000189
DR55_SYNC_EXT_CLK_DIVIDER 00000187
DR55_SYNC_EXT_CLK_DIVIDER_PRELOAD 00000188
DR55_SYNC_EXT_START_CTR 0000018A
DR55_SYNC_EXT_STOP_CTR 0000018B
DR55_SYNC_ExtClk 00003DAA
DR55_SYNC_ExtClk_Clr 00003DD2
DR55_SYNC_ExtClk_Clr_By3 00003DE8
DR55_SYNC_ExtClk_Cont 00003DD6
DR55_SYNC_ExtClk_DecDv 00003DD0
DR55_SYNC_ExtClk_Run 00003DB4
DR55_SYNC_ExtClk_Set 00003DB8
DR55_SYNC_ExtClk_Set_By3 00003DE4
DR55_SYNC_ExtClk_Stop 00003DAE
DR55_SYNC_Handle 00003D1E
DR55_SYNC_Handle_Clk 00003D4E
DR55_SYNC_Handle_ClkLoop 00003D48
DR55_SYNC_Handle_Cont 00003D5A
DR55_SYNC_Handle_End 00003D6C
DR55_SYNC_Handle_NoClk 00003D5A
DR55_SYNC_Handle_NoCont 00003D32
DR55_SYNC_Handle_NoSongPos 00003D48
DR55_SYNC_Handle_NoStart 00003D28
DR55_SYNC_Handle_NoStartPuls 00003D66
DR55_SYNC_Handle_NoStop 00003D3C
DR55_SYNC_Handle_NoStopPuls 00003D6C
DR55_SYNC_INCOMING_CLK_CTR 00000185
DR55_SYNC_INCOMING_CLK_DELAY 00000186
DR55_SYNC_Init 00003CE0
DR55_SYNC_MIDIPOS_LSB 0000018E
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 94
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
DR55_SYNC_MIDIPOS_MSB 0000018D
DR55_SYNC_MIDIPOS_STATE 0000018C
DR55_SYNC_REQ 00000180
DR55_SYNC_REQ_CONT 00000001
DR55_SYNC_REQ_NOECHO 00000005
DR55_SYNC_REQ_SONG_POS 00000003
DR55_SYNC_REQ_START 00000000
DR55_SYNC_REQ_STOP 00000002
DR55_SYNC_SENT_CLK_CTR 00000183
DR55_SYNC_SENT_CLK_DELAY 00000184
DR55_SYNC_STATE 00000181
DR55_SYNC_STATE_PAUSE 00000001
DR55_SYNC_STATE_RUN 00000000
DR55_SYNC_SetPos 00003DEC
DR55_SYNC_SetPos_End 00003DF6
DR55_SYNC_Start 00003D6E
DR55_SYNC_Stop 00003D98
DR55_SYNC_Tick 00003CF6
DR55_SYNC_Tick_Slave 00003CF8
DR55_SYNC_Tick_Slave_End 00003D1C
DR55_SYNC_Tick_Slave_NoTrigger 00003D10
DR55_SYNC_Tick_Slave_StartPuls 00003D10
DR55_SYNC_Tick_Slave_StopPuls 00003D16
DR55_SYNC_Tick_Slave_Trigger 00003CFE
DR55_SYSEX_ACTION 00000192
DR55_SYSEX_ADDRESS_H 00000196
DR55_SYSEX_ADDRESS_L 00000195
DR55_SYSEX_ActionFinished 00003A8C
DR55_SYSEX_ActionInvalid 00003A8C
DR55_SYSEX_Action_CFG_Read 00003C16
DR55_SYSEX_Action_CFG_Read_End 00003C1E
DR55_SYSEX_Action_CFG_Save 00003C24
DR55_SYSEX_Action_CFG_Save_End 00003C2C
DR55_SYSEX_Action_PAR_Read 00003B24
DR55_SYSEX_Action_PAR_ReadAH 00003B34
DR55_SYSEX_Action_PAR_ReadAL 00003B40
DR55_SYSEX_Action_PAR_ReadGrp 00003B28
DR55_SYSEX_Action_PAR_ReadStall 00003B52
DR55_SYSEX_Action_PAR_Read_End 00003B54
DR55_SYSEX_Action_PAR_Write 00003B92
DR55_SYSEX_Action_PAR_WriteAH 00003BA2
DR55_SYSEX_Action_PAR_WriteAL 00003BAE
DR55_SYSEX_Action_PAR_WriteD 00003BC0
DR55_SYSEX_Action_PAR_WriteGrp 00003B96
DR55_SYSEX_Action_PAR_WriteStall 00003BC0
DR55_SYSEX_Action_PAR_Write_End 00003BCC
DR55_SYSEX_Action_Ping 00003C32
DR55_SYSEX_Action_Ping_End 00003C3A
DR55_SYSEX_Action_RequestCC 00003BD6
DR55_SYSEX_Action_RequestCC_End 00003BDC
DR55_SYSEX_Action_RequestCH 00003BF4
DR55_SYSEX_Action_RequestCH_End 00003BFA
DR55_SYSEX_Action_SendMidiChannel 00003BFE
DR55_SYSEX_Action_SetCH 00003BE0
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 95
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
DR55_SYSEX_Action_SetCH_End 00003BEA
DR55_SYSEX_CHECKSUM 00000194
DR55_SYSEX_Handler 00003ADE
DR55_SYSEX_Handler_Begin 00003AE2
DR55_SYSEX_Handler_End 00003AEE
DR55_SYSEX_Handler_NotBegin 00003AEA
DR55_SYSEX_Handler_NotEnd 00003AF6
DR55_SYSEX_IN 00000193
DR55_SYSEX_Parser 00003A9A
DR55_SYSEX_ReadP 00003CBA
DR55_SYSEX_ReadP_Invalid 00003CDC
DR55_SYSEX_STATE 00000190
DR55_SYSEX_STATE2 00000191
DR55_SYSEX_STATE2_AH_RECEIVED 00000001
DR55_SYSEX_STATE2_AL_RECEIVED 00000002
DR55_SYSEX_STATE2_BNK_RECEIVED 00000000
DR55_SYSEX_STATE2_GRP_RECEIVED 00000000
DR55_SYSEX_STATE2_PAT_RECEIVED 00000001
DR55_SYSEX_STATE2_WAIT_CHECKSUM 00000002
DR55_SYSEX_STATE_ACTION 00000006
DR55_SYSEX_STATE_END 00000005
DR55_SYSEX_STATE_MYSYSEX 00000007
DR55_SYSEX_Send_Acknowledge 00003C3E
DR55_SYSEX_Send_SysExFooter 00003C70
DR55_SYSEX_Send_SysExFooter_Force 00003C7E
DR55_SYSEX_Send_SysExHeader 00003C4A
DR55_SYSEX_Send_SysExHeaderLoop 00003C5E
DR55_SYSEX_Send_SysExHeader_Skp 00003C5C
DR55_SYSEX_SysExCheckFailed 00003AC6
DR55_SYSEX_SysExCheckOk 00003AC8
DR55_SYSEX_SysExCheck_End 00003AC8
DR55_SYSEX_SysExCheck_Stop 000038A4
DR55_SYSEX_SysExHeaderGet 00003ACA
DR55_SYSEX_TARGET_BANK 00000197
DR55_SYSEX_TARGET_PATTERN 00000198
DR55_SYSEX_WriteP 00003C84
DR55_SYSEX_WriteP_Lower 00003CA2
DR55_SYSEX_WriteP_Upper 00003CAE
DR55_TRIGREQx 00000004
D_A 00000005
ECCP1AS 00000FB6
ECCPAS0 00000004
ECCPAS1 00000005
ECCPAS2 00000006
ECCPASE 00000007
EEADR 00000FA9
EEADRH 00000FAA
EECON1 00000FA6
EECON2 00000FA7
EEDATA 00000FA8
EEIE 00000004
EEIF 00000004
EEIP 00000004
EEPGD 00000007
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 96
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
EEPROM_DR55_ACC_LAST_MODE 00F00052
EEPROM_DR55_ACC_MODE 00F00052
EEPROM_DR55_ACC_THLD 00F00054
EEPROM_DR55_CLK_DIV 00F00054
EEPROM_DR55_FREE5 00F00056
EEPROM_DR55_FREE6 00F00056
EEPROM_DR55_FREE7 00F00058
EEPROM_DR55_FREE8 00F00058
EEPROM_DR55_FREE9 00F0005A
EEPROM_DR55_FREEA 00F0005A
EEPROM_DR55_FREEB 00F0005C
EEPROM_DR55_FREEC 00F0005C
EEPROM_DR55_FREED 00F0005E
EEPROM_DR55_FREEE 00F0005E
EEPROM_DR55_FREEF 00F00060
EEPROM_DR55_MIDI_CH 00F00050
FAST 00000001
FERR 00000002
FREE 00000004
FSR0 00000000
FSR0H 00000FEA
FSR0L 00000FE9
FSR1 00000001
FSR1H 00000FE2
FSR1L 00000FE1
FSR2 00000002
FSR2H 00000FDA
FSR2L 00000FD9
GCEN 00000007
GIE 00000007
GIEH 00000007
GIEL 00000006
GO 00000001
GO_DONE 00000001
HLVDCON 00000FD2
HLVDEN 00000004
HLVDIE 00000002
HLVDIF 00000002
HLVDIN 00000005
HLVDIP 00000002
HLVDL0 00000000
HLVDL1 00000001
HLVDL2 00000002
HLVDL3 00000003
IBF 00000007
IBOV 00000005
IDLEN 00000007
INDF0 00000FEF
INDF1 00000FE7
INDF2 00000FDF
INT0 00000000
INT0E 00000004
INT0F 00000001
INT0IE 00000004
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 97
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
INT0IF 00000001
INT1 00000001
INT1E 00000003
INT1F 00000000
INT1IE 00000003
INT1IF 00000000
INT1IP 00000006
INT1P 00000006
INT2 00000002
INT2E 00000004
INT2F 00000001
INT2IE 00000004
INT2IF 00000001
INT2IP 00000007
INT2P 00000007
INTCON 00000FF2
INTCON2 00000FF1
INTCON3 00000FF0
INTEDG0 00000006
INTEDG1 00000005
INTEDG2 00000004
INTSRC 00000007
IOFS 00000002
IPEN 00000007
IPR1 00000F9F
IPR2 00000FA2
IRCF0 00000004
IRCF1 00000005
IRCF2 00000006
IRQ_TMP1 0000000B
IRQ_TMP2 0000000C
IRQ_TMP3 0000000D
IRQ_TMP4 0000000E
IRQ_TMP5 0000000F
IRVST 00000005
IVRST 00000005
J5_IO_Init 00003300
J5_IO_PinSet 00003348
J5_IO_PinSet_0 00003354
J5_IO_PinSet_01 00003350
J5_IO_PinSet_0123 0000334C
J5_IO_PinSet_1 0000335E
J5_IO_PinSet_2 0000336C
J5_IO_PinSet_23 00003368
J5_IO_PinSet_3 00003376
J5_IO_PinSet_4 00003388
J5_IO_PinSet_45 00003384
J5_IO_PinSet_4567 00003380
J5_IO_PinSet_5 00003392
J5_IO_PinSet_6 000033A0
J5_IO_PinSet_67 0000339C
J5_IO_PinSet_7 000033AA
J5_IO_Set 00003322
KBI0 00000004
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 98
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
KBI1 00000005
KBI2 00000006
KBI3 00000007
LATA 00000F89
LATA0 00000000
LATA1 00000001
LATA2 00000002
LATA3 00000003
LATA4 00000004
LATA5 00000005
LATA6 00000006
LATA7 00000007
LATB 00000F8A
LATB0 00000000
LATB1 00000001
LATB2 00000002
LATB3 00000003
LATB4 00000004
LATB5 00000005
LATB6 00000006
LATB7 00000007
LATC 00000F8B
LATC0 00000000
LATC1 00000001
LATC2 00000002
LATC3 00000003
LATC4 00000004
LATC5 00000005
LATC6 00000006
LATC7 00000007
LATD 00000F8C
LATD0 00000000
LATD1 00000001
LATD2 00000002
LATD3 00000003
LATD4 00000004
LATD5 00000005
LATD6 00000006
LATD7 00000007
LATE 00000F8D
LATE0 00000000
LATE1 00000001
LATE2 00000002
LVDCON 00000FD2
LVDEN 00000004
LVDIE 00000002
LVDIF 00000002
LVDIN 00000005
LVDIP 00000002
LVDL0 00000000
LVDL1 00000001
LVDL2 00000002
LVDL3 00000003
LVV0 00000000
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 99
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
LVV1 00000001
LVV2 00000002
LVV3 00000003
MATH_AARGB0 00000FF5
MATH_AARGB1 00000FF4
MATH_AARGB2 00000FF3
MATH_BARGB0 00000006
MATH_BARGB1 00000007
MATH_DIV24_16 00003424
MATH_DIV24_16_Loop 00003430
MATH_DIV24_16_UOK46LL 00003456
MATH_LOOPCOUNT 00000008
MATH_REMB0 00000009
MATH_REMB1 0000000A
MB_STAT 00000010
MCLR 00000003
MIDI_DEVICE_ID 00000011
MIOS_AIN_DeadbandGet 00002C5C
MIOS_AIN_DeadbandSet 00002C60
MIOS_AIN_DynamicPrioGet 00002DD4
MIOS_AIN_DynamicPrioSet 00002DD0
MIOS_AIN_LastPinsGet 00002DD8
MIOS_AIN_Muxed 00002C64
MIOS_AIN_NumberGet 00002C68
MIOS_AIN_NumberSet 00002C6C
MIOS_AIN_Pin7bitGet 00002C70
MIOS_AIN_PinGet 00002C74
MIOS_AIN_PinLSBGet 00002C78
MIOS_AIN_PinMSBGet 00002C7C
MIOS_AIN_UnMuxed 00002C80
MIOS_BANKSTICK_CtrlGet 00002DE0
MIOS_BANKSTICK_CtrlSet 00002DDC
MIOS_BANKSTICK_Read 00002D70
MIOS_BANKSTICK_ReadPage 00002E30
MIOS_BANKSTICK_Write 00002D74
MIOS_BANKSTICK_WritePage 00002DE4
MIOS_BOX_CFG0 00000000
MIOS_BOX_CFG0_20MHz 00000007
MIOS_BOX_CFG0_LCD_TYPE0 00000000
MIOS_BOX_CFG0_LCD_TYPE1 00000001
MIOS_BOX_CFG0_LCD_TYPE2 00000002
MIOS_BOX_CFG0_MBLINK 00000005
MIOS_BOX_CFG0_MERGER 00000004
MIOS_BOX_CFG0_TO_HOST 00000006
MIOS_BOX_CFG0_USE_GLCD 00000003
MIOS_BOX_CFG1 00000001
MIOS_BOX_CFG1_BS_A0 00000000
MIOS_BOX_CFG1_BS_A1 00000001
MIOS_BOX_CFG1_BS_A2 00000002
MIOS_BOX_CFG1_BS_DIS_VERIFY 00000003
MIOS_BOX_CFG1_IIC_STRETCH_CLK 00000004
MIOS_BOX_STAT 00000002
MIOS_BOX_STAT_AUTOREPEAT 00000004
MIOS_BOX_STAT_BS_AVAILABLE 00000000
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 100
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
MIOS_BOX_STAT_FERR 00000006
MIOS_BOX_STAT_MBLINK_TUNNEL_PASS 00000001
MIOS_BOX_STAT_MLCD_TRANSFER 00000005
MIOS_BOX_STAT_SUSPEND_ALL 00000002
MIOS_BOX_STAT_SUSPEND_USER 00000003
MIOS_CLCD_SpecialCharInit 00002DC8
MIOS_CLCD_SpecialCharsInit 00002DCC
MIOS_DIN_PinAutoRepeatDisable 00002DC0
MIOS_DIN_PinAutoRepeatEnable 00002DBC
MIOS_DIN_PinAutoRepeatGet 00002DC4
MIOS_DIN_PinGet 00002CB4
MIOS_DIN_SRGet 00002CB8
MIOS_DOUT_PinGet 00002CBC
MIOS_DOUT_PinSet 00002CC0
MIOS_DOUT_PinSet0 00002CC4
MIOS_DOUT_PinSet1 00002CC8
MIOS_DOUT_SRGet 00002CCC
MIOS_DOUT_SRSet 00002CD0
MIOS_Delay 00002D9C
MIOS_EEPROM_Read 00002D60
MIOS_EEPROM_ReadPage 00002E34
MIOS_EEPROM_Write 00002D64
MIOS_EEPROM_WritePage 00002E38
MIOS_ENC_Abs7bitAdd 00002CD4
MIOS_ENC_Abs7bitGet 00002CD8
MIOS_ENC_Abs7bitSet 00002CDC
MIOS_ENC_MODE_DETENTED 000000AA
MIOS_ENC_MODE_DETENTED1 000000AA
MIOS_ENC_MODE_DETENTED2 00000022
MIOS_ENC_MODE_DETENTED3 00000088
MIOS_ENC_MODE_DETENTED4 000000A5
MIOS_ENC_MODE_DETENTED5 0000005A
MIOS_ENC_MODE_NON_DETENTED 000000FF
MIOS_ENC_NumberGet 00002CE0
MIOS_ENC_PIN_TABLE 00003280
MIOS_ENC_SPEED_FAST 00000002
MIOS_ENC_SPEED_NORMAL 00000001
MIOS_ENC_SPEED_SLOW 00000000
MIOS_ENC_SpeedGet 00002CE4
MIOS_ENC_SpeedSet 00002CE8
MIOS_FLASH_Read 00002D68
MIOS_FLASH_Write 00002D6C
MIOS_GLCD_BUFFER 00000570
MIOS_GLCD_FONT 00007CFC
MIOS_GLCD_FONT_HEIGHT 0000057E
MIOS_GLCD_FONT_OFFSET 00000580
MIOS_GLCD_FONT_PTRH 00000582
MIOS_GLCD_FONT_PTRL 00000581
MIOS_GLCD_FONT_PTRU 0000058E
MIOS_GLCD_FONT_WIDTH 0000057D
MIOS_GLCD_FONT_X0 0000057F
MIOS_GLCD_FontInit 00002D54
MIOS_GLCD_GCURSOR_X 0000057B
MIOS_GLCD_GCURSOR_Y 0000057C
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 101
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
MIOS_GLCD_GCursorGet 00002D58
MIOS_GLCD_GCursorSet 00002D5C
MIOS_GLCD_TMP1 00000585
MIOS_GLCD_TMP2 00000586
MIOS_GLCD_TMP3 00000587
MIOS_GLCD_TMP4 00000588
MIOS_GPCounterGet 00002DA0
MIOS_HLP_16bitAddSaturate 00002DB8
MIOS_HLP_AddressFromTable 00002D84
MIOS_HLP_Dec2BCD 00002DE8
MIOS_HLP_GetBitANDMask 00002D88
MIOS_HLP_GetBitORMask 00002D8C
MIOS_HLP_GetIndex_2bytes 00002D90
MIOS_HLP_GetIndex_4bytes 00002D94
MIOS_HLP_IndirectJump 00002D98
MIOS_IIC_AckSend 00002E14
MIOS_IIC_ByteReceive 00002E10
MIOS_IIC_ByteSend 00002E0C
MIOS_IIC_CtrlGet 00002E20
MIOS_IIC_CtrlSet 00002E1C
MIOS_IIC_NakSend 00002E18
MIOS_IIC_Start 00002E04
MIOS_IIC_Stop 00002E08
MIOS_LCD_CURSOR_POS 0000057A
MIOS_LCD_CURSOR_POS_REAL 0000058D
MIOS_LCD_Clear 00002D04
MIOS_LCD_Cmd 00002D08
MIOS_LCD_CursorGet 00002D0C
MIOS_LCD_CursorSet 00002D10
MIOS_LCD_Data 00002D14
MIOS_LCD_Init 00002D18
MIOS_LCD_MessageStart 00002DF4
MIOS_LCD_MessageStop 00002DF8
MIOS_LCD_OPTION1 00000578
MIOS_LCD_OPTION2 00000579
MIOS_LCD_PrintBCD1 00002D1C
MIOS_LCD_PrintBCD2 00002D20
MIOS_LCD_PrintBCD3 00002D24
MIOS_LCD_PrintBCD4 00002DEC
MIOS_LCD_PrintBCD5 00002DF0
MIOS_LCD_PrintChar 00002D28
MIOS_LCD_PrintHex1 00002D2C
MIOS_LCD_PrintHex2 00002D30
MIOS_LCD_PrintMessage 00002D34
MIOS_LCD_PrintPreconfString 00002D38
MIOS_LCD_PrintString 00002D3C
MIOS_LCD_TIMEOUT0 00000583
MIOS_LCD_TIMEOUT1 00000584
MIOS_LCD_TYPE_CLCD 00000000
MIOS_LCD_TYPE_GLCD0 00000001
MIOS_LCD_TYPE_GLCD1 00000002
MIOS_LCD_TYPE_GLCD2 00000003
MIOS_LCD_TYPE_GLCD3 00000004
MIOS_LCD_TYPE_GLCD4 00000005
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 102
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
MIOS_LCD_TYPE_GLCD_CUSTOM 00000007
MIOS_LCD_TYPE_MLCD 00000006
MIOS_LCD_TypeAutoSet 00002D40
MIOS_LCD_TypeGet 00002D44
MIOS_LCD_TypeSet 00002D48
MIOS_LCD_Y0_OFFSET 00000589
MIOS_LCD_Y1_OFFSET 0000058A
MIOS_LCD_Y2_OFFSET 0000058B
MIOS_LCD_Y3_OFFSET 0000058C
MIOS_LCD_YAddressGet 00002D4C
MIOS_LCD_YAddressSet 00002D50
MIOS_MF_DeadbandGet 00002C94
MIOS_MF_DeadbandSet 00002C98
MIOS_MF_Disable 00002C9C
MIOS_MF_Enable 00002CA0
MIOS_MF_FaderMove 00002CA4
MIOS_MF_PWM_DutyCycleDownGet 00002C84
MIOS_MF_PWM_DutyCycleDownSet 00002C88
MIOS_MF_PWM_DutyCycleUpGet 00002C8C
MIOS_MF_PWM_DutyCycleUpSet 00002C90
MIOS_MF_PWM_PeriodGet 00002DFC
MIOS_MF_PWM_PeriodSet 00002E00
MIOS_MF_SuspendDisable 00002CA8
MIOS_MF_SuspendEnable 00002CAC
MIOS_MF_SuspendGet 00002CB0
MIOS_MF_TouchDetectionReset 00002E2C
MIOS_MIDI_BeginStream 00002C00
MIOS_MIDI_DeviceIDAutoSet 00002C04
MIOS_MIDI_DeviceIDGet 00002C08
MIOS_MIDI_DeviceIDSet 00002C0C
MIOS_MIDI_EndStream 00002C10
MIOS_MIDI_INTERFACE_COMMON 00000000
MIOS_MIDI_INTERFACE_TO_HOST 00000001
MIOS_MIDI_Init 00002C14
MIOS_MIDI_InterfaceAutoSet 00002C18
MIOS_MIDI_InterfaceGet 00002C1C
MIOS_MIDI_InterfaceSet 00002C20
MIOS_MIDI_MERGER_DISABLED 00000000
MIOS_MIDI_MERGER_ENABLED 00000001
MIOS_MIDI_MERGER_MBLINK_EP 00000002
MIOS_MIDI_MERGER_MBLINK_FP 00000003
MIOS_MIDI_MergerGet 00002C24
MIOS_MIDI_MergerSet 00002C28
MIOS_MIDI_RxBufferFree 00002C2C
MIOS_MIDI_RxBufferGet 00002C30
MIOS_MIDI_RxBufferPut 00002C34
MIOS_MIDI_RxBufferUsed 00002C38
MIOS_MIDI_TxBufferFlush 00002C3C
MIOS_MIDI_TxBufferFree 00002C40
MIOS_MIDI_TxBufferGet 00002C44
MIOS_MIDI_TxBufferPut 00002C48
MIOS_MIDI_TxBufferUsed 00002C4C
MIOS_MPROC_EVENT_TABLE 00003080
MIOS_MPROC_MergerDisable 00002C50
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 103
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
MIOS_MPROC_MergerEnable 00002C54
MIOS_MPROC_MergerGet 00002C58
MIOS_PARAMETER1 00000003
MIOS_PARAMETER2 00000004
MIOS_PARAMETER3 00000005
MIOS_RESERVED_144 00002E40
MIOS_RESERVED_145 00002E44
MIOS_RESERVED_146 00002E48
MIOS_RESERVED_147 00002E4C
MIOS_RESERVED_148 00002E50
MIOS_RESERVED_149 00002E54
MIOS_RESERVED_150 00002E58
MIOS_RESERVED_151 00002E5C
MIOS_RESERVED_152 00002E60
MIOS_RESERVED_153 00002E64
MIOS_RESERVED_154 00002E68
MIOS_RESERVED_155 00002E6C
MIOS_RESERVED_156 00002E70
MIOS_RESERVED_157 00002E74
MIOS_RESERVED_158 00002E78
MIOS_RESERVED_159 00002E7C
MIOS_RESERVED_160 00002E80
MIOS_RESERVED_161 00002E84
MIOS_RESERVED_162 00002E88
MIOS_RESERVED_163 00002E8C
MIOS_RESERVED_164 00002E90
MIOS_RESERVED_165 00002E94
MIOS_RESERVED_166 00002E98
MIOS_RESERVED_167 00002E9C
MIOS_RESERVED_168 00002EA0
MIOS_RESERVED_169 00002EA4
MIOS_RESERVED_170 00002EA8
MIOS_RESERVED_171 00002EAC
MIOS_RESERVED_172 00002EB0
MIOS_RESERVED_173 00002EB4
MIOS_RESERVED_174 00002EB8
MIOS_RESERVED_175 00002EBC
MIOS_RESERVED_176 00002EC0
MIOS_RESERVED_177 00002EC4
MIOS_RESERVED_178 00002EC8
MIOS_RESERVED_179 00002ECC
MIOS_RESERVED_180 00002ED0
MIOS_RESERVED_181 00002ED4
MIOS_RESERVED_182 00002ED8
MIOS_RESERVED_183 00002EDC
MIOS_RESERVED_184 00002EE0
MIOS_RESERVED_185 00002EE4
MIOS_RESERVED_186 00002EE8
MIOS_RESERVED_187 00002EEC
MIOS_RESERVED_188 00002EF0
MIOS_RESERVED_189 00002EF4
MIOS_RESERVED_190 00002EF8
MIOS_RESERVED_191 00002EFC
MIOS_RESERVED_192 00002F00
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 104
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
MIOS_RESERVED_193 00002F04
MIOS_RESERVED_194 00002F08
MIOS_RESERVED_195 00002F0C
MIOS_RESERVED_196 00002F10
MIOS_RESERVED_197 00002F14
MIOS_RESERVED_198 00002F18
MIOS_RESERVED_199 00002F1C
MIOS_RESERVED_200 00002F20
MIOS_RESERVED_201 00002F24
MIOS_RESERVED_202 00002F28
MIOS_RESERVED_203 00002F2C
MIOS_RESERVED_204 00002F30
MIOS_RESERVED_205 00002F34
MIOS_RESERVED_206 00002F38
MIOS_RESERVED_207 00002F3C
MIOS_RESERVED_208 00002F40
MIOS_RESERVED_209 00002F44
MIOS_RESERVED_210 00002F48
MIOS_RESERVED_211 00002F4C
MIOS_RESERVED_212 00002F50
MIOS_RESERVED_213 00002F54
MIOS_RESERVED_214 00002F58
MIOS_RESERVED_215 00002F5C
MIOS_RESERVED_216 00002F60
MIOS_RESERVED_217 00002F64
MIOS_RESERVED_218 00002F68
MIOS_RESERVED_219 00002F6C
MIOS_RESERVED_220 00002F70
MIOS_RESERVED_221 00002F74
MIOS_RESERVED_222 00002F78
MIOS_RESERVED_223 00002F7C
MIOS_RESERVED_224 00002F80
MIOS_RESERVED_225 00002F84
MIOS_RESERVED_226 00002F88
MIOS_RESERVED_227 00002F8C
MIOS_RESERVED_228 00002F90
MIOS_RESERVED_229 00002F94
MIOS_RESERVED_230 00002F98
MIOS_RESERVED_231 00002F9C
MIOS_RESERVED_232 00002FA0
MIOS_RESERVED_233 00002FA4
MIOS_RESERVED_234 00002FA8
MIOS_RESERVED_235 00002FAC
MIOS_RESERVED_236 00002FB0
MIOS_RESERVED_237 00002FB4
MIOS_RESERVED_238 00002FB8
MIOS_RESERVED_239 00002FBC
MIOS_RESERVED_240 00002FC0
MIOS_RESERVED_241 00002FC4
MIOS_RESERVED_242 00002FC8
MIOS_RESERVED_243 00002FCC
MIOS_RESERVED_244 00002FD0
MIOS_RESERVED_245 00002FD4
MIOS_RESERVED_246 00002FD8
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 105
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
MIOS_RESERVED_247 00002FDC
MIOS_RESERVED_248 00002FE0
MIOS_RESERVED_249 00002FE4
MIOS_RESERVED_250 00002FE8
MIOS_RESERVED_251 00002FEC
MIOS_RESERVED_252 00002FF0
MIOS_RESERVED_253 00002FF4
MIOS_RESERVED_254 00002FF8
MIOS_RESERVED_255 00002FFC
MIOS_Reset 00002DA4
MIOS_SRIO_DebounceGet 00002E28
MIOS_SRIO_DebounceSet 00002E24
MIOS_SRIO_NumberGet 00002CEC
MIOS_SRIO_NumberSet 00002CF0
MIOS_SRIO_TS_SensitivityGet 00002CF4
MIOS_SRIO_TS_SensitivitySet 00002CF8
MIOS_SRIO_UpdateFrqGet 00002CFC
MIOS_SRIO_UpdateFrqSet 00002D00
MIOS_SystemResume 00002DA8
MIOS_SystemSuspend 00002DAC
MIOS_TIMER_Init 00002D78
MIOS_TIMER_ReInit 00002E3C
MIOS_TIMER_Start 00002D7C
MIOS_TIMER_Stop 00002D80
MIOS_UserResume 00002DB0
MIOS_UserSuspend 00002DB4
N 00000004
NOT_A 00000005
NOT_ADDRESS 00000005
NOT_BOR 00000000
NOT_CS 00000002
NOT_DONE 00000001
NOT_MCLR 00000003
NOT_PD 00000002
NOT_POR 00000001
NOT_RBPU 00000007
NOT_RD 00000000
NOT_RI 00000004
NOT_SS 00000005
NOT_T1SYNC 00000002
NOT_T3SYNC 00000002
NOT_TO 00000003
NOT_W 00000002
NOT_WR 00000001
NOT_WRITE 00000002
OBF 00000006
OERR 00000001
OSCCON 00000FD3
OSCFIE 00000007
OSCFIF 00000007
OSCFIP 00000007
OSCTUNE 00000F9B
OSTS 00000003
OV 00000003
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 106
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
P 00000004
P1B 00000005
P1C 00000006
P1D 00000007
P1M0 00000006
P1M1 00000007
PC 00000FF9
PCFG0 00000000
PCFG1 00000001
PCFG2 00000002
PCFG3 00000003
PCL 00000FF9
PCLATH 00000FFA
PCLATU 00000FFB
PD 00000002
PDC0 00000000
PDC1 00000001
PDC2 00000002
PDC3 00000003
PDC4 00000004
PDC5 00000005
PDC6 00000006
PEIE 00000006
PEN 00000002
PGC 00000006
PGD 00000007
PGM 00000005
PIE1 00000F9D
PIE2 00000FA0
PIR1 00000F9E
PIR2 00000FA1
PLLEN 00000006
PLUSW0 00000FEB
PLUSW1 00000FE3
PLUSW2 00000FDB
POR 00000001
PORTA 00000F80
PORTB 00000F81
PORTC 00000F82
PORTD 00000F83
PORTE 00000F84
POSTDEC0 00000FED
POSTDEC1 00000FE5
POSTDEC2 00000FDD
POSTINC0 00000FEE
POSTINC1 00000FE6
POSTINC2 00000FDE
PR2 00000FCB
PREINC0 00000FEC
PREINC1 00000FE4
PREINC2 00000FDC
PROD 00000FF3
PRODH 00000FF4
PRODL 00000FF3
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 107
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
PRSEN 00000007
PSA 00000003
PSP0 00000000
PSP1 00000001
PSP2 00000002
PSP3 00000003
PSP4 00000004
PSP5 00000005
PSP6 00000006
PSP7 00000007
PSPIE 00000007
PSPIF 00000007
PSPIP 00000007
PSPMODE 00000004
PSSAC0 00000002
PSSAC1 00000003
PSSBD0 00000000
PSSBD1 00000001
PWM1CON 00000FB7
R 00000002
RA0 00000000
RA1 00000001
RA2 00000002
RA3 00000003
RA4 00000004
RA5 00000005
RA6 00000006
RA7 00000007
RB0 00000000
RB1 00000001
RB2 00000002
RB3 00000003
RB4 00000004
RB5 00000005
RB6 00000006
RB7 00000007
RBIE 00000003
RBIF 00000000
RBIP 00000000
RBPU 00000007
RC0 00000000
RC1 00000001
RC2 00000002
RC3 00000003
RC4 00000004
RC5 00000005
RC6 00000006
RC7 00000007
RCEN 00000003
RCIDL 00000006
RCIE 00000005
RCIF 00000005
RCIP 00000005
RCMT 00000006
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 108
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
RCON 00000FD0
RCREG 00000FAE
RCSTA 00000FAB
RD 00000000
RD0 00000000
RD1 00000001
RD16 00000007
RD2 00000002
RD3 00000003
RD4 00000004
RD5 00000005
RD6 00000006
RD7 00000007
RE0 00000000
RE1 00000001
RE2 00000002
RE3 00000003
RI 00000004
RSEN 00000001
RX 00000007
RX9 00000006
RX9D 00000000
RXDTP 00000005
R_W 00000002
S 00000003
SBOREN 00000006
SCK 00000003
SCKP 00000004
SCL 00000003
SCS0 00000000
SCS1 00000001
SDA 00000004
SDI 00000004
SDO 00000005
SEN 00000000
SENDB 00000003
SET_CC_3L 00000003
SET_CC_4L 00000004
SET_CC_4U 00000005
SET_CC_6L 00000002
SET_CC_7 00000001
SET_CC_B10 00000006
SET_CC_B32 00000007
SET_CC_B54 00000008
SET_CC_NOP 00000000
SET_CC_OmniOff 00000009
SMP 00000007
SP0 00000000
SP1 00000001
SP2 00000002
SP3 00000003
SP4 00000004
SPBRG 00000FAF
SPBRGH 00000FB0
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 109
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
SPEN 00000007
SREN 00000005
SS 00000005
SSPADD 00000FC8
SSPBUF 00000FC9
SSPCON1 00000FC6
SSPCON2 00000FC5
SSPEN 00000005
SSPIE 00000003
SSPIF 00000003
SSPIP 00000003
SSPM0 00000000
SSPM1 00000001
SSPM2 00000002
SSPM3 00000003
SSPOV 00000006
SSPSTAT 00000FC7
STATUS 00000FD8
STKFUL 00000007
STKOVF 00000007
STKPTR 00000FFC
STKPTR0 00000000
STKPTR1 00000001
STKPTR2 00000002
STKPTR3 00000003
STKPTR4 00000004
STKUNF 00000006
SWDTE 00000000
SWDTEN 00000000
SYNC 00000004
T016BIT 00000006
T08BIT 00000006
T0CKI 00000004
T0CON 00000FD5
T0CS 00000005
T0IE 00000005
T0IF 00000002
T0PS0 00000000
T0PS1 00000001
T0PS2 00000002
T0SE 00000004
T13CKI 00000000
T1CKI 00000000
T1CKPS0 00000004
T1CKPS1 00000005
T1CON 00000FCD
T1OSCEN 00000003
T1OSI 00000001
T1OSO 00000000
T1RUN 00000006
T1SYNC 00000002
T2CKPS0 00000000
T2CKPS1 00000001
T2CON 00000FCA
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 110
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
T2OUTPS0 00000003
T2OUTPS1 00000004
T2OUTPS2 00000005
T2OUTPS3 00000006
T3CCP1 00000003
T3CCP2 00000006
T3CKPS0 00000004
T3CKPS1 00000005
T3CON 00000FB1
T3SYNC 00000002
TABLAT 00000FF5
TBLPTR 00000FF6
TBLPTRH 00000FF7
TBLPTRL 00000FF6
TBLPTRU 00000FF8
TMP1 00000006
TMP2 00000007
TMP3 00000008
TMP4 00000009
TMP5 0000000A
TMR0H 00000FD7
TMR0IE 00000005
TMR0IF 00000002
TMR0IP 00000002
TMR0L 00000FD6
TMR0ON 00000007
TMR1CS 00000001
TMR1H 00000FCF
TMR1IE 00000000
TMR1IF 00000000
TMR1IP 00000000
TMR1L 00000FCE
TMR1ON 00000000
TMR2 00000FCC
TMR2IE 00000001
TMR2IF 00000001
TMR2IP 00000001
TMR2ON 00000002
TMR3CS 00000001
TMR3H 00000FB3
TMR3IE 00000001
TMR3IF 00000001
TMR3IP 00000001
TMR3L 00000FB2
TMR3ON 00000000
TO 00000003
TOS 00000FFD
TOSH 00000FFE
TOSL 00000FFD
TOSU 00000FFF
TRISA 00000F92
TRISA0 00000000
TRISA1 00000001
TRISA2 00000002
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 111
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
TRISA3 00000003
TRISA4 00000004
TRISA5 00000005
TRISA6 00000006
TRISA7 00000007
TRISB 00000F93
TRISB0 00000000
TRISB1 00000001
TRISB2 00000002
TRISB3 00000003
TRISB4 00000004
TRISB5 00000005
TRISB6 00000006
TRISB7 00000007
TRISC 00000F94
TRISC0 00000000
TRISC1 00000001
TRISC2 00000002
TRISC3 00000003
TRISC4 00000004
TRISC5 00000005
TRISC6 00000006
TRISC7 00000007
TRISD 00000F95
TRISD0 00000000
TRISD1 00000001
TRISD2 00000002
TRISD3 00000003
TRISD4 00000004
TRISD5 00000005
TRISD6 00000006
TRISD7 00000007
TRISE 00000F96
TRISE0 00000000
TRISE1 00000001
TRISE2 00000002
TRMT 00000001
TUN0 00000000
TUN1 00000001
TUN2 00000002
TUN3 00000003
TUN4 00000004
TX 00000006
TX9 00000006
TX9D 00000000
TXCKP 00000004
TXEN 00000005
TXIE 00000004
TXIF 00000004
TXIP 00000004
TXREG 00000FAD
TXSTA 00000FAC
UA 00000001
USER_AIN_NotifyChange 00003420
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 112
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
USER_DIN_NotifyToggle 00003418
USER_DISPLAY_Init 000033F8
USER_DISPLAY_Tick 000033FA
USER_ENC_NotifyChange 0000341A
USER_Init 000033B4
USER_MIDI_NotifyRx 00003412
USER_MIDI_NotifyTx 00003410
USER_MPROC_DebugTrigger 000033F6
USER_MPROC_NotifyFoundEvent 00003402
USER_MPROC_NotifyReceivedByte 0000340A
USER_MPROC_NotifyReceivedEvent 000033FC
USER_MPROC_NotifyTimeout 00003404
USER_RESERVED_25 0000305C
USER_RESERVED_26 00003060
USER_RESERVED_27 00003064
USER_RESERVED_28 00003068
USER_RESERVED_29 0000306C
USER_RESERVED_30 00003070
USER_RESERVED_31 00003074
USER_RESERVED_32 00003078
USER_SR_Service_Finish 0000341E
USER_SR_Service_Prepare 0000341C
USER_Tick 000033DE
USER_Timer 000033EC
VCFG0 00000004
VCFG1 00000005
VDIRMAG 00000007
VPP 00000003
W 00000000
WCOL 00000007
WDTCON 00000FD1
WR 00000001
WREG 00000FE8
WREN 00000002
WRERR 00000003
WUE 00000001
Z 00000002
_BOREN_NOSLP_2L 000000FD
_BOREN_OFF_2L 000000F9
_BOREN_ON_2L 000000FB
_BOREN_SBORDIS_2L 000000FF
_BORV_0_2L 000000E7
_BORV_1_2L 000000EF
_BORV_2_2L 000000F7
_BORV_3_2L 000000FF
_CCP2MX_PORTBE_3H 000000FE
_CCP2MX_PORTC_3H 000000FF
_CONFIG1H 00300001
_CONFIG2H 00300003
_CONFIG2L 00300002
_CONFIG3H 00300005
_CONFIG4L 00300006
_CONFIG5H 00300009
_CONFIG5L 00300008
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 113
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
_CONFIG6H 0030000B
_CONFIG6L 0030000A
_CONFIG7H 0030000D
_CONFIG7L 0030000C
_CP0_OFF_5L 000000FF
_CP0_ON_5L 000000FE
_CP1_OFF_5L 000000FF
_CP1_ON_5L 000000FD
_CP2_OFF_5L 000000FF
_CP2_ON_5L 000000FB
_CP3_OFF_5L 000000FF
_CP3_ON_5L 000000F7
_CPB_OFF_5H 000000FF
_CPB_ON_5H 000000BF
_CPD_OFF_5H 000000FF
_CPD_ON_5H 0000007F
_DEBUG_OFF_4L 000000FF
_DEBUG_ON_4L 0000007F
_DEVID1 003FFFFE
_DEVID2 003FFFFF
_EBTR0_OFF_7L 000000FF
_EBTR0_ON_7L 000000FE
_EBTR1_OFF_7L 000000FF
_EBTR1_ON_7L 000000FD
_EBTR2_OFF_7L 000000FF
_EBTR2_ON_7L 000000FB
_EBTR3_OFF_7L 000000FF
_EBTR3_ON_7L 000000F7
_EBTRB_OFF_7H 000000FF
_EBTRB_ON_7H 000000BF
_FCMEN_OFF_1H 000000BF
_FCMEN_ON_1H 000000FF
_IDLOC0 00200000
_IDLOC1 00200001
_IDLOC2 00200002
_IDLOC3 00200003
_IDLOC4 00200004
_IDLOC5 00200005
_IDLOC6 00200006
_IDLOC7 00200007
_IESO_OFF_1H 0000007F
_IESO_ON_1H 000000FF
_J5_IO_Init 00003300
_J5_IO_Set 00003322
_LPT1OSC_OFF_3H 000000FB
_LPT1OSC_ON_3H 000000FF
_LVP_OFF_4L 000000FB
_LVP_ON_4L 000000FF
_MCLRE_OFF_3H 0000007F
_MCLRE_ON_3H 000000FF
_OSC_ECIO6_1H 000000F5
_OSC_EC_1H 000000F4
_OSC_HSPLL_1H 000000F6
_OSC_HS_1H 000000F2
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 114
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
_OSC_INTIO67_1H 000000F8
_OSC_INTIO7_1H 000000F9
_OSC_LP_1H 000000F0
_OSC_RCIO6_1H 000000F7
_OSC_RC_1H 000000F3
_OSC_XT_1H 000000F1
_PBADEN_OFF_3H 000000FD
_PBADEN_ON_3H 000000FF
_PWRT_OFF_2L 000000FF
_PWRT_ON_2L 000000FE
_STVREN_OFF_4L 000000FE
_STVREN_ON_4L 000000FF
_USER_AIN_NotifyChange 00003028
_USER_DIN_NotifyToggle 00003020
_USER_DISPLAY_Init 00003010
_USER_DISPLAY_Tick 00003014
_USER_ENC_NotifyChange 00003024
_USER_LCD_Clear 00003040
_USER_LCD_Cmd 00003058
_USER_LCD_CursorSet 00003044
_USER_LCD_Data 00003054
_USER_LCD_Init 0000303C
_USER_LCD_PrintChar 00003048
_USER_LCD_SpecialCharInit 0000305C
_USER_MIDI_NotifyRx 0000304C
_USER_MIDI_NotifyTx 00003050
_USER_MPROC_DebugTrigger 0000300C
_USER_MPROC_NotifyFoundEvent 00003038
_USER_MPROC_NotifyReceivedByte 0000302C
_USER_MPROC_NotifyReceivedEvent 00003034
_USER_MPROC_NotifyTimeout 00003030
_USER_SR_Service_Finish 0000301C
_USER_SR_Service_Prepare 00003018
_USER_Tick 00003004
_USER_Timer 00003008
_User_Init 00003000
_WDTPS_1024_2H 000000F5
_WDTPS_128_2H 000000EF
_WDTPS_16384_2H 000000FD
_WDTPS_16_2H 000000E9
_WDTPS_1_2H 000000E1
_WDTPS_2048_2H 000000F7
_WDTPS_256_2H 000000F1
_WDTPS_2_2H 000000E3
_WDTPS_32768_2H 000000FF
_WDTPS_32_2H 000000EB
_WDTPS_4096_2H 000000F9
_WDTPS_4_2H 000000E5
_WDTPS_512_2H 000000F3
_WDTPS_64_2H 000000ED
_WDTPS_8192_2H 000000FB
_WDTPS_8_2H 000000E7
_WDT_OFF_2H 000000FE
_WDT_ON_2H 000000FF
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 115
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
_WRT0_OFF_6L 000000FF
_WRT0_ON_6L 000000FE
_WRT1_OFF_6L 000000FF
_WRT1_ON_6L 000000FD
_WRT2_OFF_6L 000000FF
_WRT2_ON_6L 000000FB
_WRT3_OFF_6L 000000FF
_WRT3_ON_6L 000000F7
_WRTB_OFF_6H 000000FF
_WRTB_ON_6H 000000BF
_WRTC_OFF_6H 000000FF
_WRTC_ON_6H 000000DF
_WRTD_OFF_6H 000000FF
_WRTD_ON_6H 0000007F
_XINST_OFF_4L 000000BF
_XINST_ON_4L 000000FF
__18F4620 00000001
DDRA TRISA
DDRB TRISB
DDRC TRISC
DDRD TRISD
DDRE TRISE
DEFAULT_EXT_CLK_DIV 6
DEFAULT_EXT_CLK_LAT LATD
DEFAULT_EXT_CLK_PIN 2
DEFAULT_EXT_CLK_TRIS TRISD
DEFAULT_EXT_PULS_DELAY 80
DEFAULT_EXT_RESET_LAT LATD
DEFAULT_EXT_RESET_OPT 0
DEFAULT_EXT_RESET_PIN 3
DEFAULT_EXT_RESET_TRIS TRISD
DEFAULT_EXT_START_LAT LATC
DEFAULT_EXT_START_PIN 4
DEFAULT_EXT_START_TRIS TRISC
DEFAULT_EXT_STOP_LAT LATC
DEFAULT_EXT_STOP_PIN 5
DEFAULT_EXT_STOP_TRIS TRISC
DEFAULT_MIDI_CHANNEL 10
DR55_INST_TRIG_CLR_REQ 0
DR55_INST_TRIG_SET_REQ 1
DR55_STAT_CC_DUMP_REQ 0
J5_IO_DONT_USE_INPUT_FUNCTIONS 1
J5_IO_DONT_USE_OUTPUT_FUNCTIONS 0
PIC_DERIVATIVE_CMCON_INIT 1
PIC_DERIVATIVE_CODE_SIZE 0x10000
PIC_DERIVATIVE_EEPROM_SIZE 0x400
PIC_DERIVATIVE_IRQ_WORKAROUND 1
PIC_DERIVATIVE_NEW_ADC 1
PIC_DERIVATIVE_RAM_SIZE 0xf80
PIC_DERIVATIVE_SET_LCD_4BIT 0
PIC_DERIVATIVE_T08BIT_INVERTED 1
_HW_FLAGS_H (null)
clrc bcf STATUS, C
clrz bcf STATUS, Z
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 116
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
rlf rlcf
rrf rrcf
setc bsf STATUS, C
setz bsf STATUS, Z
skpc btfss STATUS, C
skpdc btfss STATUS, DC
skpnc btfsc STATUS, C
skpndc btfsc STATUS, DC
skpnz btfsc STATUS, Z
skpz btfss STATUS, Z
 
 
MEMORY USAGE MAP ('X' = Used, '-' = Unused)
 
00003000 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXX----
00003080 : XXXXXX---------- ---------------- ---------------- ----------------
00003280 : XX-------------- ---------------- ---------------- ----------------
00003300 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003340 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003380 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
000033c0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003400 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003440 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003480 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
000034c0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003500 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003540 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003580 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
000035c0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003600 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003640 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003680 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
000036c0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003700 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003740 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003780 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
000037c0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003800 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003840 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003880 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
000038c0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003900 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003940 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003980 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
000039c0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003a00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003a40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003a80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003ac0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003b00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003b40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003b80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003bc0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
gpasm-0.13.7 beta setup_DR55.asm7-17-2011 18:35:00 PAGE 117
 
 
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00003c00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003c40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003c80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003cc0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003d00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003d40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003d80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00003dc0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXX--------
00f00000 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00f00040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00f00080 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00f000c0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00f00100 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00f00140 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00f00180 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00f001c0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00f00200 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00f00240 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00f00280 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00f002c0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00f00300 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00f00340 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00f00380 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00f003c0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
 
All other memory blocks unused.
 
Program Memory Words Used: 1982
 
 
Errors : 0
Warnings : 0 reported, 0 suppressed
Messages : 0 reported, 0 suppressed
/playground/Antichambre/djo_mb_dr55/setup_DR55_easyPIC.cod
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/playground/Antichambre/djo_mb_dr55/setup_DR55_easyPIC.cod
New file
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: Antichambre/djo_mb_dr55/setup_DR55.hex
===================================================================
--- Antichambre/djo_mb_dr55/setup_DR55.hex (revision 0)
+++ Antichambre/djo_mb_dr55/setup_DR55.hex (revision 1225)
@@ -0,0 +1,253 @@
+:020000040000FA
+:10300000DAEF19F0EFEF19F0F6EF19F0FBEF19F026
+:10301000FCEF19F0FDEF19F00EEF1AF00FEF1AF0B8
+:103020000CEF1AF00DEF1AF010EF1AF005EF1AF08E
+:1030300002EF1AF0FEEF19F001EF1AF01200000093
+:1030400012000000120000001200000009EF1AF048
+:1030500008EF1AF012000000120000001200000039
+:103060001200000012000000120000001200000018
+:0C3070001200000012000000120000001E
+:06308000FFFF000000004C
+:02328000FFFF4E
+:10330000036E0F0EC16ED00E921603500F0B921269
+:1033100003B8928AF80E96160338E830070B961217
+:103320001200036E8950D00B046E03500F0B041073
+:1033300003B82009896E8D50F80B046E0338E8300D
+:10334000070B04108D6E1200E8B41AD0E8B20CD04E
+:10335000E8B005D003B0898003A08990120003B0C3
+:10336000898203A089921200E8B005D003B0898455
+:1033700003A08994120003B0898603A089961200E5
+:10338000E8B20CD0E8B005D003B0898A03A0899ACE
+:10339000120003B08D8003A08D901200E8B005D01C
+:1033A00003B08D8203A08D92120003B08D8403A020
+:1033B0008D94120004EC16F0116E106A46EC1AF0AF
+:1033C000000E80EC19F070EC1EF0C40E036E090EB6
+:1033D000046E000EBCEC16F0BEEC16F01200D4EC3D
+:1033E0001BF08FEC1EF0CEEC1AF01200AFEC1BF0CD
+:1033F0007BEC1EF0120012001200120074EF1CF0A1
+:103400001200120046EF1DF012004DEF1DF01200E9
+:1034100012002EEC1CF0120012001200120012001A
+:1034200012001200180E086E096A0A6A180E086E59
+:10343000F334F436F5360A360936F33607500A5EA9
+:103440000650D8A0063C095ED8B0F380F3B003D094
+:10345000092607500A26082EEBD7120064C1E8FFA0
+:10346000100DF350E126F450E222120011EE00F0AC
+:10347000F5D711EE02F0F2D711EE01F0EFD711EE11
+:1034800002F0ECD711EE04F0E9D71200A96AAA6A9B
+:1034900001EE00F0500E066EB0EC16F0EE6E062E49
+:1034A000FBD70101B0EC16F0626FB0EC16F0746F50
+:1034B000B0EC16F0766FB0EC16F0756FB0EC16F05D
+:1034C000886F01011200F29E0101A96AAA6A01EE49
+:1034D00000F0500E066EEE50B2EC16F0062EFBD742
+:1034E00001016251B2EC16F001017451B2EC16F018
+:1034F00001017651B2EC16F001017551B2EC16F0F3
+:1035000001018851B2EC16F00101F28E120095D83B
+:103510000450F60FD8B0F60E0A0FC8EC16F009D01A
+:1035200009D00CD011D017D01CD021D026D02CD04F
+:1035300031D0120003507F0BE76E2FD0C00EE7167C
+:1035400003503F0BE71229D0080E036026D003502A
+:10355000070BE76E22D0F00EE71603500F0BE712B1
+:103560001CD00F0EE7160338F00BE71216D0FC0E36
+:10357000E7160350030BE71210D0F30EE7160334DF
+:10358000E8340C0BE71209D0CF0EE7160338300BE6
+:10359000E71203D027EC1CF000D0120061A112004A
+:1035A0006191066A0650ECEC1AF0076E045010E0C8
+:1035B00007BE0ED062C1E8FFB00924EC16F0065039
+:1035C00024EC16F0075024EC16F0080ECEEC16F0A2
+:1035D000062A06AEE7D7120030D80450F60FD8B04E
+:1035E000F60E0A0FC8EC16F009D009D00BD00DD09A
+:1035F0000FD011D013D015D018D01AD01200E75028
+:103600007F0B1200E7503F0B1200E750070B120030
+:10361000E7500F0B1200E7380F0B1200E750030BB7
+:103620001200E730E830030B1200E738030B1200FA
+:10363000E738E830E830030B1200010111EE00F02A
+:10364000D890E8345C0FF66EF76A360EF722090060
+:10365000F5CF04F00900F5CFE1FF120000000000F3
+:10366000000000000000000000000000000000005A
+:10367000000000000000000000000000000000004A
+:10368000000000000000000000000000000000003A
+:10369000000000000000000000000000000000002A
+:1036A000000000000000000000000000000000001A
+:1036B000000000000000000000000000000000000A
+:1036C00000000000000000000000010001100120C7
+:1036D0000130014000000000000000000000010176
+:1036E0000111012101310141000000000000000032
+:1036F0000000017400000000000000000000000055
+:103700000000000000000175000000000000000043
+:103710000000000000000000000001760000000032
+:10372000000000000388000000000000000000000E
+:103730000000000000000000000000000000000089
+:103740000000000000000000000000000000000079
+:10375000000000000900000000000000120001014C
+:10376000505105E0552F03D05007040E556F5151AD
+:1037700005E0562F03D05107040E566F525105E055
+:10378000572F03D05207040E576F535105E0582F9F
+:1037900003D05307040E586F545105E0592F03D03E
+:1037A0005407040E596F1200010121EE50F0646BB2
+:1037B00064510EE174510CE011EE01F0E7502EE07F
+:1037C0006451DB502BE142EC1AF0010EE76E26D07B
+:1037D0003FEC1AF0E75022E06451DB501FE17451D6
+:1037E00019E011EE01F0E75015E16451E804C6EC70
+:1037F00016F0066E765105E0775106180BE1776BEF
+:1038000005D0775106187717775104E111EE04F0CF
+:10381000010EE76E42EC1AF0010EE76E42EC1AF070
+:103820006451E7B009D0E7A20DD0E76AE8B4E82810
+:10383000C6EC16F0891206D0E76AE8B4E828C4ECB2
+:1038400016F08916642B040E6465B2D712000101CC
+:103850008990899289948996899A12000B6E010148
+:10386000F80E0B620CD08551866F856B835104086E
+:103870008227836B8631E8303F0B846F1200FA0E8B
+:103880000B6206D0210E8013826B030E836F05D06E
+:10389000FB0E0B6204D0220E801380951200FC0EEA
+:1038A0000B6203D0240E80131200F80E0B601BD0A5
+:1038B0000BBE8C6B8C5104E0FF0F09E0FF0F0AE098
+:1038C000F20E0B6202D08C2B0ED08C6B0CD00BC086
+:1038D0008EF1F9D70BB08E8FD8900B308D6F826B35
+:1038E000030E836F808712000338070BC8EC16F0B5
+:1038F00083D006D0CAD0B9D0C6D0C6D0B5D01200B9
+:1039000001010550D8B478D0646B625103180F0BD5
+:103910006EE1645119E174516AE136EC1AF0E75036
+:10392000041865E13CEC1AF021EE50F06451E7CF49
+:10393000DBFFE7CF06F03FEC1AF006C0E7FF42ECF2
+:103940001AF0E72AE72A53D036EC1AF0E7500418A9
+:103950004EE13CEC1AF0E75009E021EE50F06451E2
+:10396000E7CFDBFF3FEC1AF0E76804D03FEC1AF03A
+:10397000E76A00D042EC1AF0020EE76E745137E0AD
+:103980007551056434D011EE01F0E75004E011EEFA
+:1039900001F0E75014E13CEC1AF0E75010E111EEB1
+:1039A00002F0E76A6451E804C6EC16F0066E765140
+:1039B00003E00650776F16D00650771313D021EE30
+:1039C00050F0DF6E11EE02F0E7686451E804C6ECD7
+:1039D00016F0066E765103E00650776F03D006505E
+:1039E000771300D011EE04F0020EE76E00D0642BC6
+:1039F000040E64658AD712000101646B62510318DA
+:103A00000F0B2DE1645102E1745129E136EC1AF0FB
+:103A1000E750041824E13FEC1AF0E75020E174511C
+:103A200019E011EE01F0E75015E16451E804C6EC2D
+:103A300016F0066E765105E0775106180BE1776BAC
+:103A400005D0775106187717775104E111EE04F08D
+:103A5000010EE76E42EC1AF0010EE76E00D0642B07
+:103A6000040E6465CBD7120012000101045001E17D
+:103A70001200625103180F0B05E105C003F004505A
+:103A800087EC1AF012001200120012000101906B74
+:103A9000916B926B2AEC16F017D001010350936FD3
+:103AA000F80E9361120090BF1AD090510ED8936314
+:103AB0000AD0902B9051070B060A06E1800E906FFA
+:103AC00028EC16F001D0E2DF1200070BC8EC16F06C
+:103AD000F00C000C000C7E0C4C0C1150120090BD30
+:103AE00004D0908D93C192F1EFD793AF04D0F70E2D
+:103AF0009363CCD7908B9251F00FD8B0F00E100F8B
+:103B0000C8EC16F0C3D767D086D08CD073D068D0FD
+:103B1000BDD7BCD7BBD7BAD7B9D7B8D7B7D7B6D721
+:103B2000B5D787D090BB16D091B104D09181935175
+:103B3000030BCAD791B304D0918393C196F1C4D734
+:103B400091B507D09351956F96B1958FD8909631D6
+:103B5000BBD7BAD791A59AD778D8060E24EC16F021
+:103B60000101000E24EC16F00101D890963195BFAA
+:103B7000010924EC16F0010195517F0B24EC16F09D
+:103B800001019BD801017F0B24EC16F0010E70D8C7
+:103B90007DD790BB1BD091B104D091819351030B81
+:103BA00093D791B304D0918393C196F18DD791B5FA
+:103BB00007D09351956F96B1958FD890963184D751
+:103BC00061D80101952BD8B4962B7ED791A55ED7ED
+:103BD0001FEC1EF05BD790BB01D076D7618156D722
+:103BE00090BB03D093C195F16FD7010195C162F1EC
+:103BF00006D84CD790BB01D067D701D847D725D876
+:103C00000101925124EC16F0010162510F0B24ECDA
+:103C100016F0010E2DD090BB02D064EC1DF036DC06
+:103C20000ED834D790BB02D064EC1DF04CDC07D822
+:103C30002DD790BB02D064EC1DF001D827D705D852
+:103C40000F0E24EC16F0010E13D090AF07D012EC3B
+:103C500016F0010B03E0050E066E01D0066A065051
+:103C600034DF24EC16F0062A060E0662F8D712009E
+:103C7000E8B005D012EC16F0010BD8B41200F70E24
+:103C800024EF16F001019651FC0BD8A4120011EE9E
+:103C900000F096319531E1269631010BE22695B17F
+:103CA00006D0F00EE71693510F0BE71212000F0E1D
+:103CB000E7169339F00BE712120001019651FC0B45
+:103CC0000DE111EE00F096319531E1269631010BB0
+:103CD000E226E75095B1E8380F0B1200000E1200F3
+:103CE00095948C9494988B888A6B949A8B8A8B6B1E
+:103CF00095968C8612000101852B840709E183517A
+:103D0000030A06E0832B822B8631E8303F0B846F59
+:103D10008A5101E08A078B5101E08B0712000101F3
+:103D200080A102D0809123D8010180A302D080938A
+:103D30002BD8010180A502D080952ED8010180A743
+:103D400003D08097F6EC1EF00101825106E0820755
+:103D500081A103D081B301D027D801018251CBE1E9
+:103D60008A5101E18B888B5101E18B8A120001019C
+:103D70008B98500E8A6F8C9601018181010181A17F
+:103D8000120001018181120001018B98500E8A6F8F
+:103D9000806B81818193120001018B9A500E8B6F91
+:103DA000806B81918C941200010181B103D0876BEB
+:103DB000896B0FD087510CE188A58C84892B8851A1
+:103DC000E8B4030B010FC6EC16F0FF0F876F03D0AA
+:103DD000870788A58C94030E8961896B88A505D017
+:103DE000895102E18C8401D08C94120001018D5123
+:083DF0008E1101E18C86120026
+:0200000400F00A
+:10000000340A0000000000000000000000000000B2
+:10001000300A0000000000000000000000000000A6
+:10002000320A000000000000000000000000000094
+:10003000310A000000000000000000000000000085
+:10004000330A000000000000000000000000000073
+:1000500009007F64060000000000000000000000AE
+:100060000000000000000000000000000000000090
+:100070000000000000000000000000000000000080
+:100080000000000000000000000000000000000070
+:100090000000000000000000000000000000000060
+:1000A0000000000000000000000000000000000050
+:1000B0000000000000000000000000000000000040
+:1000C0000000000000000000000000000000000030
+:1000D0000000000000000000000000000000000020
+:1000E0000000000000000000000000000000000010
+:1000F0000000000000000000000000000000000000
+:1001000000000000000000000000000000000000EF
+:1001100000000000000000000000000000000000DF
+:1001200000000000000000000000000000000000CF
+:1001300000000000000000000000000000000000BF
+:1001400000000000000000000000000000000000AF
+:10015000000000000000000000000000000000009F
+:10016000000000000000000000000000000000008F
+:10017000000000000000000000000000000000007F
+:10018000000000000000000000000000000000006F
+:10019000000000000000000000000000000000005F
+:1001A000000000000000000000000000000000004F
+:1001B000000000000000000000000000000000003F
+:1001C000000000000000000000000000000000002F
+:1001D000000000000000000000000000000000001F
+:1001E000000000000000000000000000000000000F
+:1001F00000000000000000000000000000000000FF
+:1002000000000000000000000000000000000000EE
+:1002100000000000000000000000000000000000DE
+:1002200000000000000000000000000000000000CE
+:1002300000000000000000000000000000000000BE
+:1002400000000000000000000000000000000000AE
+:10025000000000000000000000000000000000009E
+:10026000000000000000000000000000000000008E
+:10027000000000000000000000000000000000007E
+:10028000000000000000000000000000000000006E
+:10029000000000000000000000000000000000005E
+:1002A000000000000000000000000000000000004E
+:1002B000000000000000000000000000000000003E
+:1002C000000000000000000000000000000000002E
+:1002D000000000000000000000000000000000001E
+:1002E000000000000000000000000000000000000E
+:1002F00000000000000000000000000000000000FE
+:1003000000000000000000000000000000000000ED
+:1003100000000000000000000000000000000000DD
+:1003200000000000000000000000000000000000CD
+:1003300000000000000000000000000000000000BD
+:1003400000000000000000000000000000000000AD
+:10035000000000000000000000000000000000009D
+:10036000000000000000000000000000000000008D
+:10037000000000000000000000000000000000007D
+:10038000000000000000000000000000000000006D
+:10039000000000000000000000000000000000005D
+:1003A000000000000000000000000000000000004D
+:1003B000000000000000000000000000000000003D
+:1003C000000000000000000000000000000000002D
+:1003D000000000000000000000000000000000001D
+:1003E000000000000000000000000000000000000D
+:1003F00000000000000000000000000000000000FD
+:00000001FF
Index: Antichambre/djo_mb_dr55/setup_DR55.cod
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: Antichambre/djo_mb_dr55/setup_DR55.cod
===================================================================
--- Antichambre/djo_mb_dr55/setup_DR55.cod (revision 0)
+++ Antichambre/djo_mb_dr55/setup_DR55.cod (revision 1225)
/Antichambre/djo_mb_dr55/setup_DR55.cod
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: Antichambre/djo_mb_dr55/doc/dr55_midi_implementation.txt
===================================================================
--- Antichambre/djo_mb_dr55/doc/dr55_midi_implementation.txt (revision 0)
+++ Antichambre/djo_mb_dr55/doc/dr55_midi_implementation.txt (revision 1225)
@@ -0,0 +1,109 @@
+$Id: dr55_midi_implementation.txt 2011-07-12 bd (Antichambre)
+bdupeyron@gmail.com 4 Djo'Boss DR-55
+
+MIDI Implementation of DR55
+===========================
+
+Note Event
+~~~~~~~~~~
+
+Triggers a drum according to the preconfigured channel and note number
+
+By default, drums are assigned to MIDI Channel #10, and they are mapped
+to CCs Trigx note
+
+ +-----+------+ +-----+------+------+
+ | CC# | | GM Default Note |
+ +-----+------+------------------+-----+------+------+
+ | Dec | Hex | Decription | Dec | Hex | Note |
+ +-----+------+------------------+-----+-------------+
+ | 56 | 0x38 | Bass Drum | 48 | 0x30 | C2 |
+ | 57 | 0x39 | Snare Drum | 50 | 0x32 | D2 |
+ | 58 | 0x3a | Rimshot | 49 | 0x31 | C#2 |
+ | 59 | 0x3b | Hit Hat | 51 | 0x33 | D#2 |
+ | 55 | 0x37 | Accent* | 52 | 0x34 | E2 |
+ +-----+------+------------------+-----+------+------+
+ *In 'Note' Mode
+
+
+CC Implementation chart
+~~~~~~~~~~~~~~~~~~~~~~~
+
+CC # | Hex | Description | Range | Reset
+=====+=====+==============================================+=============+======
+ 0 | 00h | - | |
+ . | . | - | |
+ . | . | - | |
+ 54 | 36h | - | |
+-----+-----+----------------------------------------------+-------------+------
+ 55 | 37h | Accent Assigned Note | 0-127: val | 52
+-----+-----+----------------------------------------------+-------------+------
+ 56 | 38h | BD Assigned Note | 0-127: val | 48
+ 57 | 39h | SD Assigned Note | 0-127: val | 50
+ 58 | 3Ah | RS Assigned Note | 0-127: val | 49
+ 59 | 3Bh | HH Assigned Note | 0-127: val | 51
+-----+-----+----------------------------------------------+-------------+------
+ 60 | 3Ch | - | |
+ . | . | - | |
+ . | . | - | |
+ 64 | 40h | - | |
+-----+-----+----------------------------------------------+-------------+------
+ 65 | 41h | Accent Time | | 10
+ | | 0 : depends of Accent Mode(CC75): | |
+ | | if 'Note' Mode release on NoteOff | 0:NoteOff |
+ | | if 'Velocity' Mode copy Drum Time | /Copy |
+ | | 1-127 : 1 to 127ms +/-0,25ms | 1-127: time |
+-----+-----+----------------------------------------------+-------------+------
+ 66 | 42h | BD Time | 0:NoteOff | 10
+ | | 0 : release on NoteOff | 1-127: time |
+ | | 1-127 : 1 to 127ms precision +/-0,25ms | |
+ 67 | 43h | SD Time | see above | 10
+ 68 | 44h | RS Time | see above | 10
+ 69 | 45h | HH Time | see above | 10
+-----+-----+----------------------------------------------+-------------+------
+ 70 | 46h | - | |
+ . | . | - | |
+ . | . | - | |
+ 74 | 4Ah | - | |
+-----+-----+----------------------------------------------+-------------+------
+ 75 | 4Bh | Accent Mode | | 0
+ | | 0 : Start with assigned Note (Use CC55) | 0: Note |
+ | | >0: Start with Drum velocity (Use CC85) | 1-127: Vel |
+-----+-----+----------------------------------------------+-------------+------
+ 76 | 4Ch | - | |
+ . | . | - | |
+ . | . | - | |
+ 84 | 54h | - | |
+-----+-----+----------------------------------------------+-------------+------
+ 85 | 55h | Accent Velocity Threshold, use in 'vel' Mode | 0-127: val | 100
+-----+-----+----------------------------------------------+-------------+------
+ 76 | 4Ch | - | |
+ . | . | - | |
+ . | . | - | |
+ 84 | 54h | - | |
+-----+-----+----------------------------------------------+-------------+------
+ 95 | 5Fh | Accent Release First/Last, use in 'vel' Mode | | 127
+ | | 0: Release with first played drum release | 0: First |
+ | | 0: Release with last played drum release | 1-127: Last |
+-----+-----+----------------------------------------------+-------------+------
+ 96 | 60h | - | |
+ . | . | - | |
+ . | . | - | |
+ 99 | 63h | - | |
+-----+-----+----------------------------------------------+-------------+------
+ 100 | 64h | Ext Synched Clock Frequency | 0-7 | 6
+ | | 0: 48 ppqn | |
+ | | 1: 24 ppqn | |
+ | | 2: 12 ppqn | |
+ | | 3: 6 ppqn | |
+ | | 4: 16 ppqn | |
+ | | 5: 8 ppqn | |
+ | | 6: 4 ppqn | |
+ | | 7: 2 ppqn | |
+ | | Note: Midi Clock is 24 ppqn | |
+-----+-----+----------------------------------------------+-------------+------
+ 101 | 65h | - | |
+ . | . | - | |
+ . | . | - | |
+ 127 | 7Fh | - | |
+-----+-----+----------------------------------------------+-------------+------
Index: Antichambre/djo_mb_dr55/doc/Boss DR-55 MBHP Connections.pdf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: Antichambre/djo_mb_dr55/doc/Boss DR-55 MBHP Connections.pdf
===================================================================
--- Antichambre/djo_mb_dr55/doc/Boss DR-55 MBHP Connections.pdf (revision 0)
+++ Antichambre/djo_mb_dr55/doc/Boss DR-55 MBHP Connections.pdf (revision 1225)
/Antichambre/djo_mb_dr55/doc/Boss DR-55 MBHP Connections.pdf
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: Antichambre/djo_mb_dr55/doc/datasheet-TC5501P-1.pdf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: Antichambre/djo_mb_dr55/doc/datasheet-TC5501P-1.pdf
===================================================================
--- Antichambre/djo_mb_dr55/doc/datasheet-TC5501P-1.pdf (revision 0)
+++ Antichambre/djo_mb_dr55/doc/datasheet-TC5501P-1.pdf (revision 1225)
<
/Antichambre/djo_mb_dr55/doc/datasheet-TC5501P-1.pdf
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: Antichambre/djo_mb_dr55/doc/dr55_sysex_implementation.txt
===================================================================
--- Antichambre/djo_mb_dr55/doc/dr55_sysex_implementation.txt (revision 0)
+++ Antichambre/djo_mb_dr55/doc/dr55_sysex_implementation.txt (revision 1225)
@@ -0,0 +1,30 @@
+$Id: dr55_sysex_implementation.txt 2011-07-12 bd (Antichambre)
+bdupeyron@gmail.com 4 Djo'Boss DR-55
+
+
+MIDIbox DR55 SysEx Implementation
+=================================
+
+Which Actions are implemented
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ o F0 00 00 7E 4C <device-number> 01 F7
+ Request a Dump of CCs
+
+ o F0 00 00 7E 4C <device-number> 02 F7
+ Restore configuration from EEPROM
+
+ o F0 00 00 7E 4C <device-number> 03 F7
+ Save configuration to EEPROM
+
+ o F0 00 00 7E 46 <device-number> 04 F7
+ Request the MIDI channel
+
+ o F0 00 00 7E 46 <device-number> 05 <channel> F7
+ Change the MIDI channel
+ Value 00 (for Channel #1) .. 0F (for Channel #16) is expected.
+ Not directly written to EEPROM.
+
+ o F0 00 00 7E 4C <device number> 0F F7
+ Ping (just sends back the same SysEx string)
+
Index: Antichambre/djo_mb_dr55/doc/datasheet- LM14520B.pdf
===================================================================
--- Antichambre/djo_mb_dr55/doc/datasheet- LM14520B.pdf (revision 0)
+++ Antichambre/djo_mb_dr55/doc/datasheet- LM14520B.pdf (revision 1225)
@@ -0,0 +1,3364 @@
+%PDF-1.5 +%âãÏÓ
+1 0 obj<</ModDate(D:20060426093218+09'00')/CreationDate(Tuesday, May 7, 1996 8:58 AM MST)/Title(DATASHEET SEARCH SITE | WWW.ALLDATASHEET.COM)/Author(Provided By ALLDATASHEET.COM\(FREE DATASHEET DOWNLOAD SITE\))/Keywords(PDF, DATASHEET, PDF DATASHEET, IC, CHIP, SEMICONDUCTOR, TRANSISTOR, ELECTRONIC COMPONENT, ISO COMPONENT, ALLDATASHEET, DATABOOK, CATALOG, ARCHIVE)/Subject(DATASHEET SEARCH, DATABOOK, COMPONENT, FREE DOWNLOAD SITE)/Producer(Acrobat Distiller Command 1.0 for Solaris 1.1/2.3 \(SPARC\))/CreationDate--Text(Tuesday, May 7, 1996 8:58 AM MST)>> +endobj +2 0 obj[/PDF/Text/ImageB] +endobj +3 0 obj<</Pages 118 0 R/Type/Catalog/ViewerPreferences<</DisplayDocTitle true>>/Metadata 120 0 R>> +endobj +4 0 obj<</Contents 54 0 R/Type/Page/Parent 5 0 R/Resources<</Font 56 0 R/ProcSet 2 0 R>>>> +endobj +5 0 obj<</Count 6/Kids[4 0 R 57 0 R 70 0 R 82 0 R 85 0 R 88 0 R]/Type/Pages/Parent 118 0 R>> +endobj +6 0 obj<</Type/Encoding/Differences[0/Aacute/Acircumflex/Adieresis/Agrave/Aring/Atilde/Ccedilla/Eacute/Ecircumflex/Edieresis/Egrave/Iacute/Icircumflex/Idieresis/Igrave/Ntilde/Oacute/Ocircumflex/Odieresis/Ograve/Otilde/Scaron/Uacute/Ucircumflex/Udieresis/Ugrave/Ydieresis/Zcaron/char28/char29/char30/char31 127/quotedblleft/aacute/acircumflex/adieresis/agrave/aring/atilde/ccedilla/eacute/ecircumflex/edieresis/egrave/iacute/icircumflex/idieresis/igrave/ntilde/oacute/ocircumflex/odieresis/ograve/otilde/scaron/uacute/ucircumflex/udieresis/ugrave/ydieresis/zcaron/char156/char157/char158/char159/char160 176/char176 181/char181 190/char190 192/char192 201/char201 204/char204 209/char209/char210/char211/char212/char213/char214/char215/char216/char217/char218/char219/char220/char221/char222/char223/char224 226/char226 228/char228/char229/char230/char231 236/char236/char237/char238/char239/char240 242/char242/char243/char244 246/char246/char247 252/char252/char253/char254/char255]>> +endobj +7 0 obj<</Type/Font/Name/F4/Encoding 6 0 R/BaseFont/Helvetica-Bold/FirstChar 0/LastChar 255/Subtype/Type1>> +endobj +8 0 obj<</Type/Font/Name/T1/Encoding 16 0 R/FirstChar 0/LastChar 27/CharProcs 17 0 R/Subtype/Type3/FontBBox[-3 -213 876 719]/FontMatrix[0.001 0 0 0.001 0 0]/Widths[0 0 666 666 666 666 666 666 776 777 776 778 667 944 835 776 724 834 667 666 335 667 667 668 444 609 445 667]>> +endobj +9 0 obj<</Type/Font/Name/F2/Encoding 6 0 R/BaseFont/Helvetica/FirstChar 0/LastChar 255/Subtype/Type1>> +endobj +10 0 obj<</Type/Encoding/Differences[0/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/logicalor/arrowright/arrowdblleft/arrowdblup/arrowdblright/lozenge/arrowhorizex/angleleft/registersans/Upsilon1/plusminus/second/angle/greaterequal/radical/ellipsis/Ifraktur/spade/lessequal/minute/degree/fraction/florin/infinity/approxequal/integral/propersuperset/parenrightbt/arrowup/bracketrighttp/aleph/arrowdblboth/bracerightbt/integralbt/notsubset/bracketleftbt/trademarksans/bracelefttp/braceleftmid/braceleftbt/bracketlefttp/braceex/apple/angleright/parenrightex/parenrighttp/arrowdown/divide/element/summation/bracketleftex/parenlefttp/parenleftbt/dotmath/copyrightsans/integralex/parenleftex/integraltp/registerserif/intersection/trademarkserif/arrowdbldown/gradient/logicalnot/reflexsubset/equivalence/propersubset/partialdiff/arrowboth/circlemultiply/heart/bracketrightex/bracerightmid/emptyset/bracketrightbt/Rfraktur/proportional/reflexsuperset/carriagereturn/notequal/notelement/diamond/club/bracerighttp/arrowleft/weierstrass/bullet/circleplus/multiply/arrowvertex/copyrightserif/union/product/logicaland/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000/n636861720000000000000000]>> +endobj +11 0 obj<</Type/Font/Name/F6/Encoding 10 0 R/BaseFont/Symbol/FirstChar 0/LastChar 255/Subtype/Type1>> +endobj +12 0 obj<</Type/Font/Name/T4/Encoding 51 0 R/FirstChar 12/LastChar 12/CharProcs 52 0 R/Subtype/Type3/FontBBox[0 0 0 0]/FontMatrix[4.2333 0 0 4.2333 0 0]/Widths[64]>> +endobj +13 0 obj<</Type/Font/Name/T2/Encoding 45 0 R/FirstChar 1/LastChar 1/CharProcs 46 0 R/Subtype/Type3/FontBBox[111 406 392 686]/FontMatrix[0.001 0 0 0.001 0 0]/Widths[516]>> +endobj +14 0 obj<</Type/Font/Name/T3/Encoding 48 0 R/FirstChar 1/LastChar 1/CharProcs 49 0 R/Subtype/Type3/FontBBox[207 24 793 572]/FontMatrix[0.001 0 0 0.001 0 0]/Widths[1000]>> +endobj +15 0 obj<</Type/Font/Name/F8/Encoding 6 0 R/BaseFont/Helvetica/FirstChar 0/LastChar 255/Subtype/Type1>> +endobj +16 0 obj<</Type/Encoding/Differences[0/space 2/C0048/C0049/C0050/C0052/C0053/C0056/C0065/C0066/C0067/C0068/C0076/C0077/C0079/C0082/C0084/C0085/C0097/C0101/C0108/C0110/C0111/C0112/C0114/C0115/C0116/C0117]>> +endobj +17 0 obj<</space 22 0 R/C0077 32 0 R/C0079 33 0 R/C0084 34 0 R/C0082 35 0 R/C0076 36 0 R/C0065 37 0 R/C0114 30 0 R/C0112 24 0 R/C0108 21 0 R/C0101 29 0 R/C0068 18 0 R/C0111 26 0 R/C0116 28 0 R/C0097 20 0 R/C0110 27 0 R/C0115 31 0 R/C0067 25 0 R/C0049 38 0 R/C0048 44 0 R/C0050 43 0 R/C0117 19 0 R/C0052 39 0 R/C0066 42 0 R/C0056 41 0 R/C0053 40 0 R/C0085 23 0 R>> +endobj +18 0 obj<</Length 317/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.9NYJH3JN2B0J#"*(+RDD<,e%"f*ffPE/[`^\=MBIIIH(rddS827=_1`21I6^]'I
+BK;!j@j24U_JCt=%7[Rhppt;b&/aE2.9p\.1nRKs0X7#-<tU6X`q7u0J7^[::W@Jf
+<DK)?LlFk\M>5L/33UE]ius+'JQTA5+RhI8/qc)"%;;uNNU#R])IK@CaGA&R1VL]c
+1aodZ+<ZkXAl6)e.*r;=9J9lf`7C.qNojq.WQ<?u-5hfG3^Kp<+X\3=07)8FM@;>K
+?"YB!2.!UIXki`89?k%e1`P`AJdgdfJQIGEG>p.0D`bOo)1bTq~>
+
+endstream +endobj +19 0 obj<</Length 316/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.77NE<*d>2&QZ'UCj/LCb^U&7Um#2OCAQPN((XOi8tO`(CVQcP@u@X0H*F@K4t0t
+6nj:`,gqNGk#aAWN[-A7"NjLhNlqVOJ[FiA+;p0Z1Jtr<@Po!"Td):RhJ411e7J-5
+(b2R)Nmhc$+U$f,@AaS]27k9fcQ&h8W5C=nG3*Co9;dssXb,L`Z<o9&Ru#XR08a/:
+Pi9$QGnQRh,F:+bjCaU-etc/8lpBSf&5K?[&\`]#$d6S#_^Rc&;-1>\U3'QI-tB6:
+dK\`:AJusR)%<qUI2%PX?/T\0:g*-m@tTh.VGWn<k5kuH!h^Y~>
+
+endstream +endobj +20 0 obj<</Length 523/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.77NE<*d>1kQ0*,EVuYAHWp2@)bKg-tk@Q$\pIH,T,5BLCI`jZ,@>AClf($;6e?0
+@j2a`7T+L3`+($OLa>CPLr*a^(_#R0BKY-t1ks@jFID4.@N[DH.8n;2b\B&5c_cp6
+'iGPQXN\\ZRCogt1kF:I"&YHBE@$H8-<1%F87u]U%VmokT[(Lh&.Is4Lh&sa;4$%6
+OUM6BBnV,!#8X7[iWq=Z?Dk+jLraFEP$i>hWCD28*.s1SZ_>Ag=^RTTYCeCa.bf9U
+Cc+3KoHQ4J]>?Lh\u=IY;;kFAg\TK25rlbZ1W(hAb)J-O@KnQUnB>=mT\t#68^Q3>
+S+0D<nXi6<BB'uZ0=S1kDc[:fmWP,q-fX!o0.OiOs#2F6:6r+99Cg\hY62(g,7LkO
+PRRo(I/epp)LB#jkX)l12NKo^%mj$s)%nZ<e$c?\mR!f#"t2gf[^C#,9(,%/,]*N5
+/^/AU#*!^9(phV!FWeH`HEdpp&ju:./^e.B+X)ZZf\eV>U\,'h$Acn0+<U~>
+
+endstream +endobj +21 0 obj<</Length 78/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.0G-;#nBs2Aj7u"!P1q5W9O?6j>r5.M3"GJt[f/E998BKc;76#jd!^&J.L-nHbAZ
+'*aR:JPZm~>
+
+endstream +endobj +22 0 obj<</Length 20/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.)Pl-mT92A/Kok+9~>
+
+endstream +endobj +23 0 obj<</Length 258/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.;cn5le\c2B2u+UF7hOCCM,@6j>r5-u:gY%V&?Z]L5#%Maeq2+ct2m/f72M63CbQ
+1E-l7jRSFd&7RU=bMuEtN9G(#)@T*aW(=@D)kWMW_a1*`,t=EQ-6m8ADA+di8mm9t
+V%>p=REC0sWo[8==-$!DUFA<AD_\VNX`i@I]Ob?LN!;&\Q*PONLrLco0a'UKIh5GQ
+F;c0(&iQ$'L1;s(,8;7<c#Ftu'W28*JmIS]9AW<!*JmEuo]q7-'P7M65Q~>
+
+endstream +endobj +24 0 obj<</Length 376/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.77NJH3JN2&h>TUEPH;5W0L?@,jPOJB0GK%7\4nb]I\/L-prnTodcD*0.mEE7"]l
+8LBZ3@3\X"\7%<5b@H6fXMtn`)3"i!kYT390o6>D&\.&e#VDfL"9pj,dT'/A`1dlj
+aFJ=lXji(m@AMUq%]WWHUHtDLCM]tSkHf/Ya?VR!c"XLDV4-^K"Use)(a[?'Fr:c<
+FP-B<@QC]"."b'EqU$S1?JsiuNZN<]R,`7Ul#q[s+I5Z[!39\r;BW6tDNZSZcWr:;
+$qD6c^"Sa\KT&Bi_1^s'AZkO4PFA?qO3-A<V_VH<^NIK59J]lm[KEKsTZQVS9nr*B
++;p1fpJ*VF_<U8m.76=LY&S[?GUhSkD%jG4YQHQnJ:I~>
+
+endstream +endobj +25 0 obj<</Length 346/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.9NY@0").1E2,RUF7hOBaG`;`rZ>c`"Y'H_1k<saLGY#)$g\VEKJ7H3KufQP%aX+
+@N^Gd,k@&t`,%,g81"EFPbM#4S'FJ9',W-00cJ9V0fcW#>9OjnL@hF7Q=Wi'<,-L<
+R*9=dQAi`r>1HMY3L31soPokXC,N'4lpFAc]&>u\;.8reIDfQ')U56KOT<rMKc(<g
+EsR1$L^Jo/Vq=;42R%#=%&^EtYg4%dRuOCD8<*I41R)%L\Eat[@ft7L[=^UVqY3&h
+62%WWon);-g1]WD+fs138]ei(1#95'Bu1YVpf(D21/SAAonPS%opBeqSO9l-ptkk&
+Xc,`ER`rU8'`e~>
+
+endstream +endobj +26 0 obj<</Length 306/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.77NE<*d>1)u)RUDQPU&0MmN@)bKg-tG:R%V&=$PR(MJO:4M]fX,*E3J%`1&bu]_
+@PetB@rS-#RPZu8%-LP4aP(>d*6nt#Tr?%D4J+t('7mC5E@R7_,ZNI8FDXm;;!NW5
+T[76]UJ`9J.Eq3U5)@%REqtZc$#,%=+I1[Y??mNO81Hq5)58]gSlK\afc\H=-_(Ub
+d_""d4*%J4-9%t&lJ!5L%5Lp%r=!=)SjIL$3<alF8!Cf0=NPHQ6O1Hak^)Vi\8RYZ
+D+67,/m`lWhGEb:IK`d`2qqV_oGrWm)ghf,JPZm~>
+
+endstream +endobj +27 0 obj<</Length 305/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.77NE<*d>2&ehL"(@-6C,?ib%"f*fe7pTU`aFm<BIIF#N(0L1aRk'>3J%Zoj$@Y$
+>Vcp_,NBXMTKk:O%AgAhOFUk$Jdf[%)8-Al31J:5"u&ltEu1%#Bf&,K^i;62:+Ghn
+JC$S^X41e"GeJ-E9X%PC@&RVA`<MK0D,R@`Ef"cQgSFF\[3?GCUY!M,dAYo9-_q2"
+F0UFj.Pi%%7\_De.jKk&`%dJ'TZZmeLM!X;\nKH321e3^ZcV^t@;6^>Fa2U5G&%D?
+%.TMgApXP+LCE=63@%g+#N9:W0j96fi!M7ATHF~>
+
+endstream +endobj +28 0 obj<</Length 315/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.2^8;#nBs0cPoPUQGQ'?o&?'LG2(<`"Y!EN((XOi8P5,)iKF`3.\Lk)3)[FUB/Sr
+7PkYq!CK//dS`(E9'*?5KYh:WRn"h-!N]a9&"(K!<%.DT2*?[gUD17<88C^4dRPNB
+]]Q=uX]HoLRWT[G$A;8)eI#$J*BTV?CU:$'p_@#Dc"iWeQ/]e+)%J4EGSSG,JtYMM
+,72"=%l]0/io;2J65><:6:PI$`,ZPM`kt8,$=kX*64d\)RRpK0iB=!SW%lE<f*+:<
+N8f(V]T7(mX6FfY%$8\GQ,N,B'fipO@Puc]3LhN&%jY`j5X5~>
+
+endstream +endobj +29 0 obj<</Length 361/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.8/<!J#]23=lQf0S-IPC`jXU@&?5G-tk=S$\pIA^jolO)iKF`0p$q?()TMNA!lK"
+%jI-p_uha(i\`6I$q>:=KTp++S&XVI\K(6,@g*9qj*D^98hu=OBp%qEn7)Y@5t4\^
+3%>h(TZ:heK4T:?@$TB!@k+^7b?qK0#*ucQDW;=\cf]>YIH%gm)@\)RfT[:k/#HS@
+o7<2YF%dG\WjGoo,9'Ml%W.V)nBsr:a%'uiLu]gkTrs@[".BWC6$LlA1Xt@f92Qdm
+d:BV?]W4]8g0%,aR`rue@*V@/(<bd_EFPd"WYX:d<n#L5;/5`SR-1S2cZWiAI.cr$
+h9#Hg;B/1GOYO#g00FO@b0"<"5X5~>
+
+endstream +endobj +30 0 obj<</Length 241/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.3Vf!J#]82M)2=K-@<5Balg+5snMJ\8rH*_G-\sOP"+[Mo$U6aQ.Y43J7fq,CsgN
+>VZj^,I.$VTKk<"#R4.O4<S5l)p;g1)7\[?(E?05'Hr/A`X3TD@^AqV.YB@N_M/]G
+V'p1SQpSfVg/--^:U+%,YknRA'JpY+k-4'O@UUN"N2Yd(c*$@cSIP%,JZ-RQ=J?5+
+P?:)sB4JPVj-[@c(hPM2aWcmpmU%a`\R-L86SKtk~>
+
+endstream +endobj +31 0 obj<</Length 447/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.758OT<0^1DkoOUDP-'E<[>@@)bKg-tY.L%V&=$LtHSt(e@+_")M(\)3#)Y"$rH/
+6O=TgLD#Em-t>&mNW]G4eC%>)S49DG0Mp,81n"m9e.KpgC,_?rj\j3r2PE;G7n03[
+,sJ(QS\rAX+gk>]".'EA@kjg-F%WkMD'M+".V2/@_;J@]8BN6)N(?DSg\B'`Fh^4s
+K-?6FFuH3qV3SR(au>J$f'&FAD+[lt]j%C%6&d)m#oS`B;b>?[E@o!tl_A95k?Y<S
+#Ru<XXW(Cn*9uR'6(ltd)mS?k"&;N.LbTe;nF7Juj,lg!lt(TZY,:<4k"u>Ra<8Q@
+F;VnSj""]d_k#jU+ITnhRVud,6,re/LuR"a^<[`<c+jf-ZAu%;>)]PY/93B-.7&n2
+e$07,IgIeXH?T"c.>q6C/rsMPSKk*1[*>?W1eRt\5Z#Z.+<U~>
+
+endstream +endobj +32 0 obj<</Length 383/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.>&$5le\c2B5"N"+du75W9O?6j>r5-tG7TMha$sPSi-jN(0Ro!LV5O/f72M+p2A-
+1E;5[`oBWYUhV$1bpEJmTYth-(_#R0EKl>>4<+bX'!iQ[ECGmS7Y</fVLpiJN+gS#
+R,DUBRuG?%Wf3)G9+Y#kFdb.1=:,t+Clu5$)Ho$;;Q""ZXVS#h]8[$Gfd&Jl#9(_N
+ZdI#!KJje+Y*=fDrmD,m%C*FJN+T2QbuX>Cl*MO"A\LkoeD/>"-[#Y\-1X3Rb6\a"
+je\_LcHghJLtX/M8/.85_?CAR',mF:Q'1%WV"siK7ZB>E>]B>_T[sDgLCD0^3j?bP
+`1qQp>j42E82c*(]s5\nj,oFu%JUm1<PS$`5>?_^h^ur`bQT+3~>
+
+endstream +endobj +33 0 obj<</Length 325/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.;cn;#nBs1E6Z(UF7hOE<I5t"9q/J-tYCS%V&>&)!"pUO:4M]fX,*E3J<>\:dKoq
+AJpI:iBnISS8o_j$qA\P7*]Qq&/`5N@Aq1k#o:c5PB"+nCI\q.U(lmGG!@.CJuQ-Q
+4="Z%):c_>.O?"E+GdmI1V5fIZRqNck#U]Z6GHrj=Q&a`g`F4>O\h#;Tp/$5IZIfG
+;G8ZsD)`Mp/5SX"`qVQ^%7[U\aNAK`]4UD4l4k)f5g<pe)=5`0Gqp:KEafJq^Cc!t
+m;>5kONSr-g1W54W\rjOT@;,2Q7b<./!lZEptO"N5C:/H@rV*Y"UN<ZJ:I~>
+
+endstream +endobj +34 0 obj<</Length 138/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.9Lc5le\c0c@eq"(A8BDD<,e%"f*faCc*;)aQhWaMnp1NQ4Eh;4,.(0U+jK&FkRd
+F"\J'jKa&%JlXUlbJuCUGiiZnO%9I".<Oc>4eL(e<&uSEAL<WM,uIdX5(?Lh7OGpG0Id,~>
+
+endstream +endobj +35 0 obj<</Length 441/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.9NY@0").2B9P$"*'hVDD?g4"sBVDi*8:$%H0e':s<<$MoGu5UL\O4+WSSC6V/8`
+)EF$SV1K"%cu(V'%7Ci>(tLo5),;F:!Jl>U"rPU=e1mVH`X8KX`jE8Nb%X\ENMo_E
+SJY`jPX7iLHD&-D2&OU`&VsFLDD[_ai@nst^>j""fdW22A:fS*),)]-gFX+R@):c?
+Yd($jX_sEL6j"BVQFh8W%!"]a]p>-&)bM>B4Jk.L0[S^q"#6B*LQ@<&.X&KF<YdHp
+>3A7HN=NQZgr:^BMV,dgOPl.36Z-L>&"Kl@iY\qn`[ttg_sgP"/Nt\Zl#u9UIf@bd
+$8b>M*J"Grr?%oW,MosG(hlq+<Q:7pO5'0,5>:Bbs#J3mB"S>AS,T`EcoTgK02CMs
+X?jp#Gf2iRZPrqYbk'O*/<==&]rCIiq[pOL\BG+!+9~>
+
+endstream +endobj +36 0 obj<</Length 124/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.77NE<*d>2]0A!"(@#>%P\rZ%"f*fggD`S`aFm<BII[Q*6'3X(br<Z+H],]&HR]t
+@4rK(,f;?q[RUId9;W@F<75V%LWF&e#Y^[=.=sl7;YhqF0/nSVN52@t~>
+
+endstream +endobj +37 0 obj<</Length 190/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.9NY@0")./K)Am"*'^b(,6eb%"f*j+C$UZ%:M`Q:rm6+(CjtQW%kS=2NUJ*635;^
+0JF?",f<K0hErcY9;<.<S:5?9*($IJ.C?+-,m=`I,7499D\.iPk#-2i2BFlWbURUH
+I$1@?"UrBcM,ZHF1kJ4%@tD$iBe?F+Ut1*]rX!4h8ZYra'q3NK1BO3l~>
+
+endstream +endobj +38 0 obj<</Length 173/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.8/<!J#]@3"QHeJcVP$$P")2%"f*faD<UJ%V%k>+Fr/QL5[?3W'h?Q+GWMGiWsMA
+>VMNRKG&9l^i:iW94d]4S5aP^NCq3cOf[nX$Q0B:&YZ^bC,Hr-L*?YS_Nu1=%7ZRq
+=c=(qX,^VPC6\ED(nenRQ:Zd6bnlX8,f$0/.KT~>
+
+endstream +endobj +39 0 obj<</Length 228/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.8/<!J#]221c)<_`0("?ni31"sBV,e7($M`^__HBIIUQ)FbqrLe4m8+H[.EK+Xd/
+>VMNS";5BMi_pe^9;VdtPgF&$NCMlZ=a\"t1R#mi;G%rD@7QMOku'5=3\NQ4;BiF1
+d,(f6VcI?G.\*G&1DnE7(*HV?;_+0_Vm/e"gd*s2<j&eI-n*FL(legOEJ5$L7ul0^
+2<_C_9o?+40[si,#7!u@dL<pi#Q~>
+
+endstream +endobj +40 0 obj<</Length 398/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.8/<!J#]20b=^^:f4S>5W9NH%"f*j/6k2o%R^C2^t;mGO:;<scqr)1(Q8gA"&Z^[
+5mS<eA'pFW,\&3\NJ%BnE40[5*6sLNTr>tD)4OAG'<#arF#=oYj9#FEJt##oN.us&
+E56'.U"/:hZ+RNC<>s13';;)OCL)T%a!1ooWnVHk_C/nUjfCal\3YldBp9HJ1S@4A
+oi`3RCc&4cm8e3-ZA:FW?#j)<VHR,jN67k0bigHb(7`;%2;53Zj/9'3o$sg0Ai)99
+lS>_MIR\UYOMQ]5#u'\uG`Z"iP23SdO^>6nL1?5i5Fo'oN2jLGp/#JWK+.X_rf;N.
+0cQ-,4[#t_A)EjNZX3Q?<,Z^%`r6^UXQkb_.VejfUSA)K@%edFURI3*@=gnj%)>aB~>
+
+endstream +endobj +41 0 obj<</Length 545/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.8/<!J#]22%U-b,CojIA2t21`_]SV`"XpDN^^jQj=k1)(lO+]0o1A6$6)NGK:)/T
+@3Uk#L69"4(iVF%9dPm0JDsrj)$gXYTp3i(%"V4<0nGk[E=*Z1UVf)ketH!8!f!I!
+oWFc?W6sS!3^DDa@tmD7dQ.PBD.K,2#/^eLE'Q4G:ZSpgPiut.OC"t4;8Cbf/uIA-
+E7'[a`&&B#,rk.ff,J@rjQdTVegNhM]$;Ktr:&"2=OGIbF?FBR]b-+dKEFjUY/d)q
+iqAS7L0G+'T[<FR\;!<m2mZ-Fpl1MI2.DWfD3A'?U5:MKcnJ@D//2hU`6:\<H,.pJ
+^YIZ;p+J@t@B0Q716]IjaCm?%p\ZsETB!5k\n]FVTSAL'cA]0Pic+e.aX^&rTo`ae
+TtG1,PlALuOp_>gD?Mfr_I-<D))TUt%+q\5U.h:LXs+;F7IWq9W\fQk*iqhn$8W&:
+Z-3:HU(80e+//3eC)BB7'T*a,0hUjRTa8Ru)a.o:V%AAIZF^8C'"e;Z.C!u_+f'*W
+_%T$G4H]jV^et4~>
+
+endstream +endobj +42 0 obj<</Length 500/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.:F'!J#]="bM`R,A8dLEZd+G5so)%\8rH*_#sth:s<r;MabYuUL5K`306SL0ZYZl
+CDE+-"9W(odR+f^%)tWmK_/dt0uV*W3P:;e2P*^;__I,,(blne.3f/ohO.+M%&%bC
+<EbkHSCK*1pnXce3?$<n[7Ql@YVR7nX^`:-fPbAl%0e%Z0Z*>j)@`iKW'1&D2&Si#
+Fj)Dn*]=k\m://J$F+cOil7aMKO,N1*)u?j&ZF!3.YkmJ34o]M4Um1*iE5K$E+a`k
+`aM^>/5pVthWIB`Qn4KK$H2.>;DG!42om!0Uf_t=Ld<=)jg?+%<;,Q&)@^FZW6Dlb
+0Y0jE&BT*-H8H1ZWrkZ5$t5Bnr2]up`NS4hW=E.lk9J=\0`e3;$^.7#%_*55_/L#&
+e[s+S,3c*\E+&H'!JCmFX>&-`P6UOR@e;-gK>d"6C<BAXYi17;N.sWe5deEN<*%n2
+0md"A`JSnW$9\oYAD0@fZkV`?P"QRRN5/<m~>
+
+endstream +endobj +43 0 obj<</Length 412/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.8/<!J#]22M)2=_\&8dDDE&b%"f*faDVACJtZ\:E99;"Jt!uP)!#p_(Dt'/_[0jC
+6o1-!AASXDb#^/+9?+jUOQI*0TM<E<&YR9l-B!h;ZY<g_A0;d"kjdWM(i`68;p8XC
+W7jlcKFI(O-tq<X4WK7^@tD<#T4Sqo.Kbg0O?m*\>ccIQX>8lJ\C50P0qEbh%^Y)r
+i1Z,_s,!i2YgA23[[RlGcX?oLjgu=sP@j3(.O@hQ:`823,>C%mMfm!>kQ?do5\71@
+aL6FmTZh7>)GXb:/Z+1e9@XFoY^;=tpbj#S/R1m95GORkN]FF,mp9ri(u9GS=bT5\
+]Gp9!=MG)u_,.%K/QOB`b\f<6:cWcHf]T]lW6+r+UaCs+Rc(/:l;3DI:`;Nd3A+Jf
+hn'0"'!7,.;??~>
+
+endstream +endobj +44 0 obj<</Length 314/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.8/<!J#]20b=^^:f4I@DBKn7`!/M`.MaWV`^_3RR+;gcM[UgBT`E#=30K5U&ie)\
+@QB_`UOt:cZ5tTabX;Xh:t?X<PYNP;WK>bG25!N1"*&:sSHtug,>s?a,'d%]NCPg_
+E56'.T2R4Z#X()917?Bs;##jdbV6D""u</gDVK*:7H77VeT.3f]h'][YYh&-1`9-M
+2+[4g6&<JiAIuD+Fq?L,cA!Q0V;fr^P34XM_3!/`FjT;e[um8*a-='M#$T_U%nX.5
+N<_EP2P=hhcOAs)%K9DSKZmPn1G1;,+\CKkq=ZtU.*N$KJ,~>
+
+endstream +endobj +45 0 obj<</Type/Encoding/Differences[1/C0095]>> +endobj +46 0 obj<</C0095 47 0 R>> +endobj +47 0 obj<</Length 367/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.4sm@0").0n]f:K*WUDE\\18LCcfq`"XsF_4b@IE5F^l&0!o&0p(0q3L!&ZES1&<
+*&3Z"+p1B#Y[B;S%V??0G^sNc)MefB3Rl&p2Alq#d*[s;N&c^4k/2`Q@Ws6#7&,n'
+Ki3X[)iX"2R[%om#T-F7'S3(6K4qYgL6?<56G>1]cQtr*9l_CbX3)S^ag?XS)T#Q$
+'KePh[k0K>N<#Z3cGst:8#d1QXI=E;(g*i#6&=[X4<)4.PjDCN"d^0Cn?aV]_`]E"
+CitogSGnL6)[n/sl#uoK6(cM;HegfYJi"HboJ5bYnn'`+8#hs(VdcR2db(IM3*1FN
+#Kpc=6_!Fh;k;+Xo-4XO;q"jm9r]'E0Id,~>
+
+endstream +endobj +48 0 obj<</Type/Encoding/Differences[1/C0118]>> +endobj +49 0 obj<</C0118 50 0 R>> +endobj +50 0 obj<</Length 211/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.+mY0`]!S1)LJYj$<\#E\e797cPWmOCAQM%L'b;i7L:N)%D;H0n`BW$AT%bEQFfk
+BJYdd`hEQGTQ;TC:#P%4N5eLIN'l]:Qr)"B)NmFaZC2b0CG)4hBGAS53[[+G9k-">
+nB>lCR8>DTRd>cW'UkI;dtqTfHnc1(lB]i9Wfpm/8>d\`"kJ)oN*^1A_3!+&;k)6Q
+dS#8CbR/lN~>
+
+endstream +endobj +51 0 obj<</Type/Encoding/Differences[12/Icircumflex]>> +endobj +52 0 obj<</Icircumflex 53 0 R>> +endobj +53 0 obj<</Length 136/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.76b!JD'p!Y>`J#!n%niX1?)@'HRL83gZCJqugV:qWqRJO`9E!Mjgj:a(W<U@Ll4
+5]f",9VA+O&4$8c:1mM9jS"!dTMT<$3[GQ$8#0$s<4ZX!SPQ1`C/m<k<f@A0`sNrf#Q~>
+
+endstream +endobj +54 0 obj<</Length 55 0 R/Filter[/ASCII85Decode/LZWDecode]>>stream
+J/gjB!<Cnq1)CA>,@SZDCb^SO`e+;JJ6N52%0iR^Y^keG"Vnr[i)C$i(`*U8YipaD
+0clEIUkBqf$p[cP9oS#(Go13;MNnUcW,*(Q%3#bQ,C02X>W3R[L@]J&fVi;\*Pk'o
+Bfr=C.N3k+=fFe(As5Mgn<dK*+UO"E@eR=]Ea^,Ra_&tX<3TpdKAGZTWMNd>"J*kO
+oGS_a5t;Ir.74]'g/h%J<2u3u`"8nO/W'kr,'bko+<f?/@KKt#N_(CM#_Wd\cuVts
+=6]kGYbPl;.M@;";1Q/k2i:%Y,2n@=@3$g8.rd;gK#B5\;oU&<Y:lBkS+Nb70oTnV
+64afXOeIlPL"<NR@"`Ju<7=)D'#+XN!4Z\ZL>eLb4/`E-RLfj9l3QVYXh2*#L4Q(j
+*%?F?WZ$W55\(`bd#9=ZNIXj&_Btt$W:$PJ)n*f+O^&e@60N?VKYo>8W2d3Ki[>\b
+6(E0:6ZLI`)?h:"MAZR0csR\]Z1)Yf8MU9U+U7L:QkmflKQN#@6*tt\V,?Gf+\1LY
+@31.H97YtKX8<a.7>ub5m"Y,#<m*g)HnrsU,='EH3FTOgWO'm7N#+M5N!.J-DbJY"
+]\rk33fG:k5TpDB+@%Z@j/C`o%&8nL0TEsm5WV]jF3:Gpe<MIU$q!S@0TJNF2bqip
+$fDeo'G=F^\T$>?kqgK/;-Hc]$gR`rMsUk&d0MTG@ohW/juNu>W5h_6_mn/p4X,5R
+-jtTh*\iWh+P\a#eKDt!8a)OU69I/YSqbXD5X6]%[lr.u?$*<n2dbS^au80fUb"H`
+Q:nCJ`YY*D?mQtPC)gQg-kt%ap&g0lKbOGJ(M!WTMTWHF5gtq/_*H&)WBm[SPN1Ue
+k;>4A:hK_f%!/1W@ap!JC1VQeMPQ"$VLIOaaC^1/NR\k3S(U?REfEMV?CoO*Fp;,/
+Asjc<1[I+%fpk#s>!$B]LtYpXN3K\j(e;ZMfr]r1I``@@)'2)WDo"ohY;r"O=i-2h
+3,fQ@)r=XRk=J?%V-&acD6.(h*iHQD=r-Qr1d"P?`K"(bGF8rQhHsZ&+\+rC7KH"X
+_">&?:RUbkfOu6036'V56Q:H4(Badlk(O"D[PPQ)4]]sAL&o)%Q1t'_H)L1shWEf%
+^8I=ED`chP)!8BD=d86cJ7G'\),Cpe+VUJpXRa*5nRE&;#5)OfIcnAlgp2fa!LZlq
+1mUG"TiimSh"Vjg!p(=$)^jt42hD6k=I':5JLkMq2mu-M)\_7DY.Wl+\'iH*>:=)Z
+28H^\e-Z4dcW>kVs-G,hYfb\*@A1MgYgkrH<_tY&i7JpZjt`YD)]2p9=^6_.AfCh]
+[LQa,2_KXA)oH]eIj!-fK,(O+6T]9dMKr#'+Qi1qU8a)k25u@%^_p=Lf8*#L,+PM[
+`SUE`=QpP117)adS19#/#;"U3-@Gbulq1HA-)21DB*9@8-kA'%gV0oMo?QsTOq.Pg
+]nYODK/)j?-P2o\q"3M)kVmJ'nX[h%0.Ro6?&t$&:ohM[%3-(g2\#mQZRK67?XpW9
+#"c5@GH?di0J#J,E/2S<o#BcrWHHNLie(<V#2T@nHNBiK2`*K'-7`8I%JF0j,_gf:
+S?QU&r5l8/.,eEIlAp#/E]\Hd4IHo!Kp)Kk9;Z7Qgjr'Q`Vo(lGUB\bLdQ&n"N`s<
+nL>i#iLW`W6'.M9J>b!M?QlOK]sG0<V\7!c&iAX$QiA6>44mNY)?(Sm\KTm.Tq8?_
+ICje%4K&?B3H"I-;2L6a8t0c&%A&l]0O[X#Md;cNc'_*PFFSjno:$.j*7Peo#UKpK
+3g;Yo9?1r7>_6'%/6Y+d-0iXIW?5OUI9AI!Jp+$?eKI^srA>//\'soB<=Ql+#4Uca
+_anqZZ#hdVqV(q6''ftbKK<3S#.];EKs9lO;HN`7()7g/!C4(RW1na[*_e)Z-#AWt
+&F(0)qX7Q\m)qUPILI:`_GR#_5;a"l(djk'%$hkkLJZZ66\&uj0n(grGD[5=6FVo2
+Kh\R45T$72_H@550hF6eQ4;g_@hsWR<#(5_!sikU+m-5*$!LnS4e"F(_)"c=)Aka?
+BFQ,VDHn[pV6%X_"9D+S#$)EW'p*!OJL.7L&BShV\8I^9kk-F5,.F;#b#@Tno9j@:
+#-Ahi%^Ihu&<LlQ/U01"2:+:t74P-uo*l,\"]Ik_5lOgTW)cN\42Fb5)Zt=pUQFt*
+#*p-HUJ:\fiO7[KFqUo0ZOat$ipK<q12<Wt.0gZpWKR%B*CGPoN3DCZW`.i>_9-AR
+BE76J5iIbkDFam2e2auXB5_Y^BoBG5iPe?i(*_:b,Jg8I>U=S"*_\I<3+D?j#ZBtn
+"<_4bcUBe4pB_k!-ZH;HYr51,A</<@#0GH-4PEt-(2[<;;SP]d7V`C"DN]Eo*h$d:
+'e80kM.Wl@a<;`QO><pC.rXOte68n4F=_`jm*n#(]bo"::agLe.J,TDf<#q64*ina
+lH.TI)<r3u,$P*P4rQsiC-g(Dcn#`"H<W`pjH8"fM?YU=RjJ`"4ju[V?#6>_n`IK]
+RN!RE6DrK3fp9b0c&*9Mh'!*5F5`KOh$q;9!I>j":ntD*$t9*'1c1sMA%FK5lLsm>
+6-7Ec/MO&>4m_3CCX]2o?*8.;/C%!D%XtjpD3?idS[i;EdC\rBmeXd/c<JaI'p\)<
+<k')ck\aVq9^Xe]>k?)%*DPT,M@fV@GbANg9rHpC/?ib1W<(F(+VPqOdq[i-!)SR<
+JSjH0ULjQ;&\rt8%C:7%e9^(@@\%ldkTV;c]#!n%Btp>7#SLf;SliX5J1C\e0.uYi
+Dng%M0S0:N#WA$.%$#!^5u^l"]\cNkh+8=6^C/q/[jk7(#H\,>h<B>P@4QR81;rs^
+#QgT@%1untk/snIeIY9cF*$%b(nR\V/&`#?eOo^pGSrjpRdUQt^%cL>2;.aQlQqJ*
+qZ7GiQ?f/1J\3dnQS]:A,[lV)%if)_TPUBWo4fFiYE2E`)!b*,rUsVI=6fjj6>l>4
+in6sSYR</'WMm\tE&96#a!s(D"niA*(9t(D/)iNI!9F3^'!A-i<a`klcL1=Bo(:8B
+oae4p#Suo*>m,(TnDI+KCVgK65&MoD2GAE,b76&`jrlCbK!30(kdmsjm^[kH$@nL$
+JDS)^o)\o`?#Yo3$R#dEFE.kiL@1!(!2a$%h@>)"%:sA^Y`AWt$j6R%YY+Of+Jc9'
+hCIS.R\iEmKgN%pl6GaE%EQD3ilF<V5UU)K7Oi^56b%I,$p,r!dj9Nn/j_5N4ompm
+"[^NIiWTjf-j1+\7K^(BYm+&8qQo2<+bKk/@'0Z"nh?h$0_"c`J>b2@9"eja:*M8)
+NAhK%Pn9_o,>DuuL%$Re4>Wn>95(ib&UbKNJJ_n?(f?2.Oae5<Po2<E(t"fj#T<gI
+UgrQPXRVi"nW=b&QQ&eo)f`2'j3&>qVIY@-3Wm>?OjP-\],bn?)q!G3Kp</mcnAkZ
++\%tFiZ^!"!0gs['E[hW,5=pm=tXe/-8@tR6>mRU&gu$q0uW/8+E.Per`Q3M1;t%G
+6>mZq^^6Zc$NQ=rTW198Uc*o0SH,Sp+Ii_qV\Dopp$TDI_?aWU/8&Z*dul,"_DX2\
+EWlsl39F*Jmio97;V?g@^L51m`BmsE$rkP6nVJr::TR+UYj>2j"X[skD;[q&3&0Dk
+.UogoJ5ZVK<9pMkbUU\CL6=e/cM&I8$rVU>&Fr#(oKM7a5=-haO^KYL#^h9Q5m.m"
+6\[nS-<[,i15`+_K]^F4CaC9g,-_ml;&p9;+Ir$3.Uj_a_@A1fNlkl91%?5;Z=#F3
+J48L[Y%.Gt;%b9$WW`Bq<e/%q#g4h%C4(Yk,=goNK:#JV&Mo')-Bf?#o,p5mQ9WR#
+&sFb'8$+^$/5YpO1SR/p1I2bq0Et38-P:)UVF`R!FXN7RVL[;/Wgl%Fng-Z/LlR$G
+dgJ*52_e$o>f%RB&KNudGoF#/185+O.]Ot>R5^<l7"?"/-88(A$6c`O4"$1eJ?%j-
+3'J[2lf:5WoBSP3>s4C"4nJO67S$&a+ZT'(4_+^NF58S"T+TMZ61`J_1Cb]tStsk#
+6dt!YcatLpU`cWBGD7e(-($?]DC]WDOeS%&jUR,$XpB]<jrdMlLER0a,nc#!_rmpV
+F4f'dHTAkV3&HpcmUC%\.%7KM5A[;`Z_Aks7!si03g"/$P]CX%ECf,!nLXN;cPm+$
+s!T\@6'H"BPAa%"[7/&c8jn(ro^=]fDbj?)3?ot5FBqQACHrK-3=(`'PdZ[-RnZep
+Z4aYnEgd/@JIn#U!E8)B`$%s4WBt\k3s$^(oD;JXku:UM'1S0#ogqUE_F9[j=gKh1
+1iPc<FZ"8e/5Yq+TPd)\+]Xd&<7Ig7oIr;DLIm`:8bJ!;e>YDbJQPp>7MN7!64G;!
+]im3V;06DjoM@#NMFm*.=*/\<UNf*L)b;`sje<sHd&8D](mM><"UJNcb$$R!2-l;?
+1a_lBLL^QH!.F!N8Q,a9Z0aN&m9/H-<>7qW0eHf8(L]Wl1?9B>os[t%]hD=7W[%I9
+cS.\>&Q3\YmVFf-5b>l2k[@7*3QCYcJ3XL,f[!B98FQmg^sZXH_%.2l3->Aq(+(Z2
+f2aa*@C<X*;enA$'51<64#ILLob1d,B-o@/.4#P=Q4[Y-b>NjeR\`c2[<cjK.:$tj
+?aPkbVdi:*SjFo*CoYb`'f;Ae4&o5*Bjs#7F.,*hTge\>@R?>oKP%1U?Xkr.5P/P3
+64cGgF'NlY>gp5),&:@m.rNoSBU+Qce>l!#I9An+BK#<O'h`Ie01"-@Ed'VueZhQ.
+@;e(4;3n;-NB!'`j(+Bt"TX`l!i0l0@7Wk;?-miM",)6Uk:;mD4@tf]ko1gC9l8L.
+Ho:tI2@!l\+@[c:+U__![doa(8R5;&8U%13(I)BY]4s8\5LgWFQ9KUj0]A;G>f/p>
+`YAfG<Fk$C%UqV#p1%]R+=lItE3M-2(3B^.@g\+9@S4qdNm^s.4&@i#,$2U-'7"po
+Xu=f2B@n/Lf0<*Td<0O+C.(\t7,Lk*W(HP(PIG+O[^ZK[<@,M:R\DWj"n[2.k4/+1
+A2l;q',6u3-6]cqL68N`pT>aM"$\b*9DCYhei<7&'QQg@I<T=D^tL]5+[MrO>*sk^
+o_F8D\O-$L6We2Vp@3_o[=X`8MROsafRk)5kB0i4M"MTSBT!L4,Y?u4e!FeV("#PC
+2.!</8=6<%dX6Fq.<H?t5M*MTmkKnQ2+r!F@i*6J(,o9I$V\%[Nam=cjS8bZL/^ph
+%VktQ$Q/9QQ%9TPa%5&oTOi\!/:M[qO@9Ira_ud>PEhONOE`W['k;BnB0([N+_^2)
+f]kL2<]Gc#MK\lZ,bL@T$#$&_LU50Zq._C(LN%M\>I]fY7"&df!\aA#P8@sCTW_;'
+,Up:!R<,X$[NAX3]p6,E@@>Mj\]:*?R?;\l>?S"Se7X2_1+pLn-CMP)@_Ru"D+GJ2
+.Yl5\B@_&Le80?*Hdupm$6*E=:MBSE=/Vg&[(2=PF,e[^I0H+'UjOIKrgEhao<:"@
+Yh8.D`*hqW%RNC+=;dBm+/8SUFB0K\2/Ar/)j^2kUNamrF$qKG1a,2TUbZ_Q<@^6!
+/Q4GqR'h;g\W:_3T;J&'=S\LOG3c#?)k(j@T&U/GfNF[:W7KsoW;)XO%I#)-^.Dk`
+ot&#/U]@==ZCtBuSiW^B(rJs(NEI+1=aKP:R:3:Db=((`Tt0JX\p]_[`ABr+Q^P?m
+(La9FF,qf3VmhO6@$ss&]fL`YS\"uuGn4@;0scPXOE\[=='8u+]fQHOV)qJ6HW-j<
+,ANZ1A.F,O4!IINQjg4>TH_;t#CBUml;6g!Rmu?H&2F`Wk&*(f#7.mJ@*2E/OpZ5[
+@B=ecep!!tEO95^[(0Oj2_SkA[d3h&Oa;;/]>^%W"1=M'BsX)&]48*J73X'LLn!#*
+)Fe4%:gD_F6(4RURm"D&D1&tq]X\9JS'c/AI;Z[LV*#?L]4D]q_bllE)IaYoj<iA8
+C.VU_qiFkD@u[W>'*\3NFI92G)$d1N0j7cW.D/Nip`mF/Oi5j!`V@tPH0qjn8]H@O
+_4mj3r"GE!PC(kCGD@n1?r^JK's9t6]k>F1U:(B$_@HXp\"MIGCE!c(nlZ,k%1<#N
++RE"4^jdl-%k+YdX5pf6aYiN5.BE)LY]+!g/.<h@`urD4CWpB7U?51]l0GL7j-Z;$
+6%IRVPm!O6i+K?*.5_[oV7W!&J;FauZ4,Z5H2"C#_E,%20!+!(%?#21V_hYQU'_Em
+<5=:ni.qa%b2JB/\H(3?i8t8F@oCju6GTbaY-\P)_E"a;G=A)q+t84b8$2ss`+*6^
+aKNbH/FZqf"Crc<#J7p%3S7S%;B:Ym0OFf).#qp1-j!B5*L]^bG'B]=fDVVLh1rp3
+Y,qK`3p@&;fJ^)CS)'1c%Bn%-@\O1"<\O8Aea&.E8A!X4D:]</gb3&%7-D'UZeYIA
+Xo6elK"'D2P!HYVX:RjW;p"#>J]"4-_spgen6@k*fODsHgV@U[)T1?N-&*HYj1ZPf
+hDO-'4"Ok\'uCkOYm@3$e9(&r4(+uo5cP0AO@Z1>d4bVsWR(nnKF*EmEYTEObH`e^
+3'/@@:dk*[XE@I>Ulid$)Fns8c7N.sKZmCaI(m$S5.ZS7^bY,-Gui&-=n.=m+P,.c
+)G#`F^gZN[C'_%+ceGkZKPTnkZ?LF]]H5,^50GoA$o`u"m9^0^,[c_jhnD+QI,m(n
+ihPquWUU,d^Ppo5E:R[+nW85@lo-NcriJE"6o^f1li/#PIj3r9K;4fs6YIM05,[ij
+oeg-/mAR:@DYbrJF7d3T`]m>j1ZC?)(%4?jm<QtOo`=h3(&38`im$`E%%3^dcK/C"
+Ta-aU+&B5X;do^8m5dQX#R0oCh2&W!YuG0\GL,sfP$HD1O/'lopM8f]6gu0:r;XJ6
+!WXnj%>P#dR"/?p)N0>[!P$'5E\`6*6D./n@QB!uL-bp&b[rIEN.s$+S1JV7*0+G=
+-m6<>&W+Im6mA9PE$,umKG0K,4BsS*a((8ELseO2.N:Z?JUjPpC'>2]n>KI=?oT+G
+U_5+%*aJr%_I7E9I**lRWsbsCWoY/5+Hq_[1:_32$SdKAB!Zd,mWUZ/$m7nT9l>k5
+Ud=6QU=c-%DDB(hVGhK];DB*uLE_9M%,Q-MR8-)3ktmXDWfBP&_8t1<+1OmT=,8[W
+'b#jc069F@hA7Jn>O1$:%c5==ZgVa7c$%!],MEV3K&NLTE\6>.VK$=Wid$(d9&YCG
+[!Ea7)3(E$g3#`Y<1HKKnp-1UDfhbm3;,MXbhbFbQsBKBYI]2]3pVr*PpMI>CkK9S
+\h]8DO?dd`[]+WOZF=U9BT+03A1[Yr&5qZ%_9_I3mk;uoH4VIkC4mS*O%=6_]rGT!
+W3o1+C9+Bd6n\tfDG1'H8+I#Br';`a;$O2mglh-0l/Mo`,YU;I'#uJ$G0$t!.k8`K
+m0cD3a01X]eqS$g@j43:1]ItP:&BOK,L_SH#WE=\QN9g@I,P^U/u,N78kTk^*'fRk
+cl"me_IGUPn-\t\^ot7V8;<A!(:m*lI&@9CZ$Ld8\ul*:N74K1A/`YVBX%8%d0qNr
+;FuO!7EG)&!t%G=bro@T$aiJne?O&q(e.+)LD\%6[9m%Lb'_^=a9uO4@FOkLPtT%2
+db;W<Q-s/P78rT<n6(\_8t^p;m9=;U'p)6>%IEl:0TEt0b?E/.FPQ(6FR?b*f@0lt
+4/>g#%<L-]7-TED(`_FNf5s*W)S7_0fdf0NaDe^jl&'rfL+:BlpK!Tu#>IZ;dXiGC
+cTT#g6<)2N_`p.ccZIQ/]Hpe7=mg!n@Sl1&,j;2hAY3SG";t_0n.eZA7OeOTH%u,i
+=*rZiNO'q3H9QhT:YKE;ESHsHV,0TA'I0[3EkM%+L)6/`YNE=-o6oN*rW:Wp\AmF%
+k8!t5i*jnQ&Y%`=V8DBacA*O6]"$lcFhh/8%BVLqG\"S[<4*S>B8Qp`SEMk#LUu<R
+\k7[PO#1;bF?uR5Q<N&h-P:(dG?M<3>c3-XG\H8EWa/UPA!#BTh4W#:?09&^X`l-[
+!dT5J-`6:3GEpTo2&<:-CE'k"Gi!km$/P?\hZ+hWQhCHHcr_J&noV1,`^q^<iAP=L
+pRG.sEiKT:4@V6'?$g[A/_Q6uTP!T63L_Gtgmjto@di+L-O-e`7'hD[%*?[RFY82u
+67+bhR]3_WL%2&o3's>_Ca=\Y2.4'FC?FJrc7^VE#sBPGo`:j*#&n;C5F9=AU$O"G
+`%htBFTW:SN),/1\F%3^A9a_VH<tS2lU7*ur7BEjE)5GtO`iA=iktasVuA-\(E3A6
+]I]'O9X;\sM&Tg_Df[Vcc4]n]9cm:XA;+\712pia_7;:3Y^."hF0</HbMRF2TgqGK
+.c-u6>'$]Q8YZsCFd7LuPRfq``RUEW:`qVqOu/iQp$U"u>Vei)F;i8G%e8Ysqi\n'
+<32@8n5l-V#*PQ"[lCni8b:D#W5_sOkoc#ElqD6$jVc7I=YF+jfpECu@6E51gF!-F
+R8XRI9"CI<%+mL;OtoO%;OS:kfQ7Q'a?"nQU-ZW[3dWUXD+kg$g<^N8:G[`C:f_V0
+BGCl;n2;&tp7"G46[PP*%Ur2P:/>F=(nKpQQ@]GB&Hd8q"Q@_RL(Yd#a:\(q@GDD+
+EaW/a_(6gaB_*:\5Z8OuOY]8<o@&e,:<;X8!C9B_1,Cm^Lk-O,UiF(Hg6P>:_&e_]
+'Z$ggO]%TEXX/*bU/Ym+GoGdHW\nT(<RNNUC2;ob`>V71RX>PM&VDl5b..U@F'Ar"
+Rg1abL_KJQ8EPmq/"l"56))%LC\;j!1,W1c&k-'jTd=8-frit*<Di$U<BjLoV?:dR
+kR(lp2?\GAZ:daP/+>67;9Xuk68DU+oecsgh.YP9"'Y'iURjBG!a8K3D9Zn$M)O`&
+>?cMWX@h8rL1odQK/S&a[F)@W*ks&]kY)dEKt3K!8>B8/@.+94]4Po(P\[U:mc5[M
+kG%R5]=(7H;ra3W=WAq2W(+t8$8o6\PMFS>G72T+N)4,t<nkXgTY+ck=/<DrHinid
+E["L2T*O;U#g/10\WZ)hT1_gq:][sjG8Q:+f#jA>9k1\2.WHG/>-22Y@6o"%C<tH%
+3F](W2T8[\NE1*XN,d,`;$YS^;]lg3cRH5`j=D7TJscmYHb;K:7053$fQY/V<3Tp^
+1KN"3;8EC>ZljtK*EMg8cZ!-t!7s1JXPdLXQo<5th`L!TBq3oh$3fB+PNF&A7oj%C
+biEIH&HdT(g@Oki^n<-0:mr"`(f(IS&1W>eW!ZBM-jej'V$'VL&d!6B#U(l9OK`D2
+JfmA.`.T!0NB4,cYUJ',SCF/RU&qadE</Tn:EI0uF]&F"G:H*&P7Ure)')d3@9a?J
+i"`I&hG`*"a(19kYZ`rNe6.\`21Vg4Rk,#WafMMOP0"cOg@`1(,RX*[c-<lc7e,;S
+?"p>9Hqqr-1i(Ze1EtYr;M1;>%/KrK@BBhp8`;5F#@:r@#a,XpTfWU4O+N'NmScH`
+[EpGM65?nq<nX`o#,_Q\B!l0%eDf$=VKaGBnE:h/ODbSZKGFUl_@)ZdYGK$b,EZq1
+)Gu;5$!eN.,92k4l'!S"!Ak>kYe!TI+:?@%FJJsCG%Wg0quK;mf%H(nF\R?8bG=#\
+kV0!'q&qjNHpj`lhG]J+,-p5K`$kgcXB_$i4!?HqUVX[I$3>r9#9_H]&gBqAEau^]
+:i!WaScL&#U7O6?Z\eEV4l+WZ.C?e,es3>%kK+O6l\``BH>B<WiAZ^6IUI_gARbm:
+@D=r(6<BL",.t$#+SB_"\c\EpmleG#.1/J)Fh_6P4cd&IA0"Hn%`@oR8I*!gk.Yua
+KFU0iZ1EpDZDt+EjZaQ^l`.%RrZ<`[XX1O%s-r`]T-aD:WA3F!#`ER5H+<h#GlbhP
+/-GsU/$OoHc8#Lg/-$VQ,Lh\+_EAM!Xb6p1W4*K3U:jM.5^El&En32.@LV6@]l9(0
+gA&GX\NqDI^7_8>+h\4RY/)XD]s*`\UY!!`mM(Tu5*=R7bN+oog+UQLM9H_OLnp`D
+OduUg_E7lc>HWk!f<[R?_Fu=&]HtFa@iZfq%-/`pdt,+>-UQ$*_V3I(1O25Z0g6ie
+]^-!@M-%K_28Fjo^r-t]X>n&'&&:9FZ31jLA/.Bm(dV*Y_._I-1_db_)2jG8M!Q3L
+e2\>Oi5*LE_?oeM,Sr^F0o:i86Bh=6qdTsI/ODj!_P;oTg[Vti!5h2W/GPdG8P^f:
+/["#j&Au],33>DqUbTZs.RXh:Zltp\.)jsD]TH=8_s>6G".8;E^>QXBHk7in7B`s0
+6_JuLe*f@JU;1;.S`3_jZmRGUL`_H=#U$7\l4Te+oE`kiZSZ^!Ug;!mOuh@#XiTch
+.b6URE!TTA.[f+\+S/'=I&g3<&';!ig^D0P@Q4@B+^AfsoJai`TfjghZ2u=C&Xj0A
+Ftm5TY,I,qd-E73ZAdH-89.k8l.q.tehfd"34&BE6R`ON)'^%,]-s_A_s'%?Qq0SF
+-/;r_)h(@n0ra0A/.@q:FGV><@L["6+`)?5Tc1rST#r<3b%Qr!jJXX"h2)Ke^p@/P
+e02fK/.#jjTa\+2$:^`5PmL"Q^I%J#ZuQYTN(K/f^$+*>6"u3M\I;De7_3h(ZmMdT
+mE!0%*S\uS9X(bri(ES@]o037)sJo*^nD0PM-Ck45_0s7HTLN8b]ISl`.gJfU^5Eu
+bD_8r9An&$RnPMea(st\8;GB-[O\^&#h%s,\;%jnf;qn[3p^dAbWuNg=@QO"$a_*;
+S77`T@Qf#Eb1dmSI,>Z42+@FK5,k/:ppj+d_[(p$O'(3GFBGWOG:@d=5?Qj5d]Q"%
+J]^*TN8Vqk4EhYdh22k%cQOE)&U=fFQ;7&=W^*";i15I(X=u@WXFREHM^kdfe&s_%
+:aGbG`<2(L"IUg^W^-_=@6DNF=@:mN`PP-(1hG%NqG;!UcE(l=1W6Ec"!%ri65q)3
+FH"*+fJHS/:f-'\4Td5b3RAcb;*>.]`>R$f#10=-d(0e9!<Wk*lc&K):sBQ/%2%!!
+'2[3nMT`/#I#N]IYcM?N]&b#2XXl1&=@+#\9G;Tb$'EZl#gd(38N7]m9FIY$m*`^F
+Lu`MR'O@Vhfs7/)cs4CP@(&n9ZI1To8*KPC%5_#AKq6G*e#T^Y!h1*%GF>h=[BPUM
+Kh*ZS3ucEVaeGib[5HEJSQ(Qa#UkF&"\UfdM`:dTbQT^.@t7JU1JuC=eSr)u"[,`5
+:9j1ESZ)ck[5gjU=OTu+Yrt5#"[34=fMWGL3o""s,-=!#7A;q5$oG3>Kgr2h8(@c9
+dtj,'`D]\U9Y!hW7SPj@<F!QjCs'FgM*/#o6Jk\OGt6)jNi=rl6Rno]2\#],$9Rp?
+pt\e($d:-2fBAJj]"g_oh[S*bUD(Smm0VD^ejRUmWY=_F.Lel3OuZ*/1HJF9K9]7p
+moR\l=+]DP]-3+X\eThq<;CdjiS')DkqX5+^86sN)Fi/LaO5^B&42r."Y.n_SXHmW
+fu/ikgW!(Ta=SR5d$V^%XLP6T@9QjOO/te(IAL)oP!6MB:fV5_r:eZ#ObmYJNjZ(1
+[BVn@#"D^iMG:EO7C8"ZT<];pab7!(+UTfkE_@mu>D6rnD7mZTLHN`7`dieJe\DR.
+Pf?lPg\\&Y+]-@A^BfC9.feL&6DBHIo9YXXXB!*B.$e!IN]\&p7Dd\(NQeCOY=[[F
+4oNhT?!ihT#!#]0[`Vn%:kDV'LFN=e`676t`=q&-N5q[%:43=P1>0fpo!29TYls_*
+C$XVS!NU4g7"*'0MA&;pj-d$#2GtgSUT[>XdgomBe[3EROFb+<><nbK17`.fUEE]*
+8>h0&:fAJBL%;-p$WLDoM-XcD22>+7cUpcD?1n6@%KMj's#TY'3oMurc&Kh)Oig,0
+3E;3DbVua8FkN=MUj<[3>h*6DOd19;UoM5`Bi*"?kco:>OCQTp<YXIYgtmb[<fR3[
+[MYWi^>M>ndRm;?NKhn"g.M97@+1@Ybp2&(`X9<S`jrc]23FQ5.GV:V=WNjRGrJtr
+/r6qbf9"TcXi:e*Hqf$F=5a"4D1BYfhH1?efH]W_2@SUl'ftH/=Dc&f<JW]tM.$:>
+Xj"$%_K]3Kc.MAl,Y8o3h9WBj'A7o/fffXD<HHi*7Tll^ZYe#t6DB8nTi!DQj&Mc*
+^.d5Z:#?Zu;/Mqc$s?LlUoa,mg6JQg*NNaOVV^`?>3L]FI0&'`Yscc\>:lo1*670t
+=5,jAMD_ltA[FnF[5$*I0uVm@/&p?"]A-,tg!n^(A\;7o`S?`rg`=@4L2;Yld9MC_
+4W'7Bh7[FEaBYaC>fG%s'ocfdlX7nI$oPlW-264YO$UsHf\9sa:#k&_%,GE'h5fup
+mHRa6i8*Guh8Y*'hHFSnK3gFt%K2/QHs,;;QoKfWYdN\O:4QtglX8t;_qimMjfb?e
+IU.3i;l)ig.alqn*8aK;1'HRnRsnX#pr4YLhl_T=]Q.B)+$Lu;e(u)0%M"Kt"6?T_
+i%<FC7K#g7%\TbcA73t^_)C+=7UW<:@(bE.2B0AobcN1K16CD6-->*s[-28MjJE8`
+,kYqR)I\?Li8!p3VN'Q#*,8(l>oI#-m$#ULA`rKd-$i`kh)/V;[UN4leZL87KMc3=
+'&o_@R2Csod\SJTd,o@@bs6p3C>=mo%j\*7f*]6%+Tl';4Z_X(R4NL-<Z/SWeNaK[
+egt*k31*(e:?\;!PjUkGlFniJ^-'Qj4j'E(,i6->$pC0l.r^WC0%qb!LZe/^j:](c
+AnsB5E)dm-9mD7Umd0AC3F9/\9XTB2"9rcYp!e<QMAG5&j*;ZV0ek`%mA&bXKH]'f
+^_khOftDc$adVSp=@YthLd'FgH*BcnbM*NeY>D#u&`,6g^+9;g;-@bdq3d&YpXV?"
+C"_>n\PH:>$<c^8P@cnE.hk[ec=It'Lb!\_=_Tul^^38]E)..'/'flRGunJ8O'H^2
+j:AuoJVd\=Vh>Jqp<0UA<8d2h]Y;^!NiacZPK+i7O1*NR2V8:a>`5K2DE*jtmB'a`
+j0N8.@-LEL.$Tb#hB]8]5*k8JNo?!Np2af%cW91A0(tARkZt@UD,0A1I&rE24)WP`
+mc5,Np6U[hjn#b67*bAmI8Se3h!\6!D1;5$KA#^Zj6r]XcoG(oZ-@4:D=?W:n1ObU
+OP4Y#c^XY2iHGHGc'riW7duGOE6elZ8<LU3=n(.a.PD<8\?&^+Bdp]6&M1XoU@IbL
+)"D+?nT94IQPK%_?n)m:NIIiIk8eES*lMD-c5.WRT$"Pnr]fq@mOYU&;Is\/PjOfX
+iBI]4Y7_-'@rSfbGBUF^I%>-SEqZ1oYk2Gq7fK`)!911-D1&hQK<C%32cUR$Q%X*K
+aH?%O&#N$f0p_gEP]]buQ+3H4T7Q=N'rf^pPRaLnY8UM]mQ_d?*]iodn*ltBGEKPI
+;paXdp7D9D;FflTTh$W#YrsAgDF3bNr/q9i[?Vq9'oZ.GXPB,kTV/C/o@`]7$?9<2
+?%fV'4ESpb6p+07E\^,Q8@ETf^08>G7OBu+G;]+J=*l5OF=2+K<.p)-[;@+i8ADP/
+2:02^\iunf3(IO``:71T0(<oLbL/*R*5+ennh<6ejL<$M:lSm/+ehF0:mim'Xu9"*
+lhm3`o'aO/2p==uK1Jt)N8MqM8Pd@YKl1g?8o72FS,c4t2Eci@+-5%B0?\bkg'S>O
+I37/?4th_9aF([EI2J>n=R-68F8[31Hr?L(+(]mocUeM2d\l0O/.Kg]//I!g^jg+8
+>N/$9ihI5?HoueBL=q)Y,-#)cCaE,0Do"pkkko)/r(k0^pXf=`b:lQ1;*W3Ng+e#c
+2@':2C+pJ4L-nhRbWn!($\kEBT]A@SJID`liL%Q(2hf.XnJIcqBaYo=L*KQWi^4<9
+NQ38G<(9S1Psm!^BfpPZ&;a,:0[YF)@ih46kMkb9%X0%f6UkPd]W)iBM*tjk#__DU
+:l\PLdW(N8A25.AN*r[Te7(>86UjEK4H_f])H^`a&\->-EedUC=$apG6"dRY`j;_A
+f$Q.H%S&Hk.,siFMB(PA&X57l6%t7d_dTs;5]+^-L9^[C(hPXc>+i>"c"pWFL'So3
+JT0CR35+[6&Bm;0Dn-^!iHZE5L'J/-=__+*JDM"C)TDu+m7>TC16KAlK'DFl1RPE9
+Wu_S&MG7U"5iUg@grD0.h-p92LgRf/K):LG8:s)G3%1dZrul9YAfM$di[g$QC/TZ!
+[a8]*Tdm!V2B8Ph10Wopd(j%s\P=VK%j>f*B'hm8\dZWZ8LpsRTP5oOY,%bce<.Dk
+UJ@i/m!<u8UoatTOus.p(m;LH</cB_;G1U?_bt7-_)O`</f6.Cr+RXhaZD]5,[mKN
+aYSiRWi3993*[FRN#OE,Z1%Rj2^QaK^`+HcqC\,9P5Dusb\YL$)ltPg15Duk88dG4
+"#*]td4F$ucSQ(E8@:;!6h]%fP5AStYjIWf]sqq.GiR&O"Q<:h[2Y4@6uHM)e@I9&
+8/]#(X$#c2OINuRTl1ji<kRt<B(\9IC`<'l2B+jV_Jh($cbFXmnGk/&)uDZ@&6'L)
+`A5;Q#i%#U/=f-^g^)]Rb*t=%,*&Hk)6V@T<=-X&,#]^U0=8*A;sBNc\ldA@V'@0?
+rTA^PM2Zoj7WW;T/haMX-Bb4rRUmj=be186b*^,p0S\$rb=:"1"Ou;RZ[Ar:@hHZ5
+W(8p"okT;Gl;3=-2Z3jc:t#:TL,nZI"t>*hJ3g&H_#W'0TW/96]3f54_b>eGSa<=j
+l4u/.Z.VGP),YXIItZ%8/JdqH$GmU_V+t9j&S?qRcChUgdd9<=2DQ3).U2MJ=giE-
+@e[2<C7tXfP0-\jL(2(t^TP0]lXOsoHL/kNGI0ip6eq%&g-TYo,kXsgP"N5T]Y@O#
+U!QhmfX9%/m4>S]m^Da6&'><lUQW1qXm?qZ%)!mPS,Db`^'+*rZO*'3KtI<?<m7X_
+Ph=@"[;Vo[#4:$Rg+`M9`h=u_F*6_'dX4El[89jgUj^">AH^h[]H^;2Ds@+_(WQFs
+"8jt\rVsW!c4H4sC.N'#]-gWS?J<jH.HP[6+<q$\+L+`j81>l=1>YTY,O7)(r8g7&
+m.]7<YCg?m'g<jgM]m0k,3_5P^F3k'Tt.cbYgCk9nk_cr@2Xht"PZ/)5#:+RD'A;l
+,o%5F<6N[`3)M+*'(U.XSMW].V6(9CAG$R2GW/</<5?(YY8L@;G=gjF*Z*89RTu9:
+M+6j!-HLe4b8V-s;<X[Xnk`q.1(n2Q=eA45k\XijO&XOW&uNNJGtbj]BPc&P)d"S0
+*%Nio77B<aW6HTKUW\h"[Sb+k9+"Wi0.&&GL-RLC!ub8a%-._*RJ;lA<4N?7-EV&S
+BARCXROL\'_,Vsb%_\V40et<u<m8FVXA#G"+K0#h.Fi>L;7\2MC@pna1/^ll>0o&0
+m8hLlT/hsC.7K<)W?4!n8f-/_<+kFo4sCG!T!AB$PN]KNK\6:%at.1D<2m$6P*nj-
+@mgVu/#HHM]FbS&B;?C@)qFG0c*8-jmr4[JqDruP6OH=>7Zo\7#`oNo\i1u7(Sl4#
+9;>(l9<=:d**.7(j:F+9L@,gUF80n06<\h0R8['R^pfN6_j:ZXhD45.S_'E#N5u=`
+-g#f.:BXR!$5R3HKD&T0nr5nL6<k[jG,:0,^6]()PKY=90i%OTR0o%19X?L+k&RM>
+ZJrQtUElq@XOhWQg$qfd\lMeq^77qrK?hTd($pVDG6bR):BdD>$-`%6F:%"`H4+B9
+)qV,)7ab*j_*ZHN`*B0od@_qp6f6\q2inN,0.:4">;Rn+FUZS=RQuf?H1n)Vkh)YV
+:2m?rhI0BhWfl(EF6T-A,?3?Se2+j7R"a4^2#YqQauW*jX[[/M,4VP[(K23*:VB?&
+9J^EfGn/?u8h'\*)hc=6*5,aT[><$T`>i%7;bq,p7$o"cen5q)@s@MD"^%,\foDU`
+/?o)]=$i#:n=>%U$5!_*6H7^BnQ;eciaSG``)g163gU(:]%U)aiG,@=1^-Ii4t8Ws
+:&8@?$E"E-'^k<&/C?Y(7;+^P_c:L.]u_]om``O+URcraat$<UAG(Fn%scnZY'VZr
+g?N+<!C:T?,b:(,J9N`ubWFkpal^'t92;Vba3s2a*g_IhVs0[Pq<<5bC>g)38Jj,l
+Q@W%6gdR4e*_3SZlFnT)^?7t!/T;m/Q=(FZ)J$<6k[=QREX:ooaa.>aL3""!q5K:R
+A&"p]\a!hHK+oM?,"E#D.,;OhM>>:?#0jJSnu]*cp;+MU%=.:1o%K\cclcNiKM[<@
+9:nDo;)ZR<D,#F];k8M#/'WZ\'-e$J<oH:?NZ@Hi@8E/A?WlGRhA3u/1Y%f\+N/$2
+'(rb.N5B+n-T/I'bfH\TU<,=JnAd";hUQi',r]r5:;.q4Z;_2n];:&OOFt?#dIB#"
+]-dJr`/VbG)$2U8+*5S_$+&CoLtg^g:RV/JAp#0FXW5:S+9#r>M&rM@g7c]PUm]GL
+C84Uo^tWXqB[F0%/0N[4@;F\_Ytn7Hl<@J#F^:-\2I="&N8J;cNe=dOS$Ug>Q7ZpD
+\BO*4j[T-*G;FZl@(.KJ3lU9nDXq>kTuk#=$Ce`tK71J!DYuSMG/GUhm!lE_T&@<b
+LN&GTfo(^(hhM&r^@_rC9g9ARqs^%imR,pBGG4(;DpiXb<2Oq(G3(UlMe[*.A3!_r
+e/[\J-*=5!>&V)gQlq0LpFMt'adgk]"H>@j^17"4IP)<,JtHt5=YD[O+dfme]Ta)%
+9j9gXA[%Pmo;((=$nEg*I5a+`ETb(G09gf0"?rcmDW28+,9P"+Od\<.#fUD6@T*%j
+&1T*F=%YG/j:F8*ejV,Prkrb$!iA1uZN0#BGiBW-m:*4#<md]_TM9C.!q\_:SBpZj
+Z\f_kVs+7lfR>$AHqXVE`N56^gcbd/fckqj"9*W+n;\!K.gC,$-b0201mKWKD@cLt
+7)o"S3=*ud,7f[#TYs_NU&e)d%Ol-=bWs\\i7=gc"gG-m%L`h4aoOc1"9@3X:o\5k
+]IknF";&0?OM_KGb*J]\!CHu!+@%VGPn*j[%7ZdF.XV@!mgfVi$(sNk@(L'&a8n[A
+OH>t8"$e'i?uW;OGc2,bie/JoFCsr9+c2<o&Mh@d9bOJo4+[n!!^dQPEtQ:SY-C_W
+XYpNCC'oLPQDna*i2A=s":B\(%\cp:l-MY->*NS:7>JN/@&Po:QjSGk)*mTj5YqiB
+72dC*)BpaOTPGI=D&T'[)PD!e?t'9^W!u=5"g8nd@Q4^W'cI[[6m-%[EN^<9WWnTd
+*Q1;b&]=]8?3nD<(K#Goc[&%DBH\T1-rD2J^d/h<'FS;F$%PoO^eb.6V@&uT#f)T2
+!)a2tW!Q>l#f=J$TG.R,VQ1<OGUA1d0qJYYM@)V#$)!FeEPic:67E2t%B&&5@`'JL
+:^CH\$=Jc(inl'q3?OCr(P3oHj`o&7>X[VF-h2:8OqnA^U^3,_#p>`Di):VkdioF)
+#h#FRTRm=kfK9.1$@n9Gi12)*2'\8I."E$Sk*S0u/GDIl2ZcmIZ4eBhRL!Bd$PN:A
+5_]UYYc#NL"TY2)JAMe(kRAZT/M]4uP">*5E=l+?048KITWp0@)?loL-3Im.5fsR%
+_@<gf0sShIc^uKS.5-k^#_9*46\.&/V?ug!1pT[P6Nn`oTJ5qW$Bfu`X7@oaAEa_J
+/.q@oUHk4L?HY*E"9<`N!4Zji="#fq0607#9!K72e-<7W,I$nYAsWh+;*-M("9@Wp
+nF.Rl\N7%M9/:DZZ?&*InK1Z^45pT.o>Mjbe-KGI%)C^05X5`#fF<?r%KO?S@+G`/
+c4$B."k1"1F2!Cj0+SBG7+-)_&gJT@.jFTH40h$mU@AVSD'[NY$36JAP050AnMj4K
+1)&Ik13Y+N*]m=A44/=#6h[:*>$)uD*>-gZZnWbf/N]0\(P>D21P8(^'dkeK2O%0B
+ZB[kb;*Rs(-c5EY19Vc"M\\$F-,V]0aHlXa-p/(n9B/A7L$',6aI/::a`0aCEBHRh
+2[=H8&]un)6:*HWkVIfJ(o.j]1u/hME[,)r4(FOM.?RDk#u./e'Oq8,6ZP&DX%u(V
+;<%08&RG`?@kHV(,t2u?"eIn2Eo5:Y/:c(V+Qk-t4G4C*&QCtSELe9Ra:+a/0jr-X
+@,;@.kR8T^%Fn;t$4Tdr=Zcd?;8B/3'F516h@>(Y%!*.b!sT2Wj:#G]%3XjE5k@+2
+h^C5%Gb_boFB_.QAQAfV%\UZK5fkE$MH]VkGb]I"ooDBrG?:I$"9?P#<"i<Ja:>Up
+4MX6^^s3B(;Z&o\+7`33U^^GTaY=pU0iJr]`V.^OUG>ig);siji7V12'j&f&-)@aj
+FkA5,:E^I65JTMmT\3J5XYFnl%5priPSaN'O:C.:<c^Q,,$P^\Kc..e"d=>up-iKp
+B1Z*`%M6N`,?0.NF_#K`"gtc`7&"*I_.$eK$t-p^[@LC)K4CeY4E=slY45pU+:Y"0
+0d&^i<VQtFedS5->;Cf'_RCrBo-=O;5(ZdN1]_($dL;??%KPDrP8@YXdoQP3"9@9e
+esu9I*[+R\DH:oa!5]2\o2R#"*;4J/YlSb9/RoOc?bk,u'1"aRd;f=Y$m>$K2T?3!
+5r:HcDg+#JPu:rnLL$43"W!S!`\h3^7;?u8@pg"!-4OafVD'`I=S;M#Ptc4_rXBO6
+4r6s(!6\]ag^J=A%!A=KFfGV\5R>q6BV=7.i8n0eIp;YiEOM2WGJ,gL"'67a+S$W^
+dn2n0Ot8FkDUTp9!7D#s#R(4a1nk>)AUc^AlTCLWDg1(\$MGo&gOM3DI,InWi(son
+*$E$oFn.=5CP(VL(H!rj%UdWmi9Cc;pMBUE#1=V&G6_=%ja%STGH1!U<uHX3bQT6*
+#;RHIokcN.h*F:lIJ>>o6JT-'l%+@]$=Hc#pk^i.JmQ;/K2L,$';c+g'gpQ%A+o")
+A4&n0CHM\=q3/iC!4W1L%30$<EEEq$G_^bbom`?WJ&Mk,ps1sd98lr".25pAZ4mHW
+[=S)tJbU`I=>8VLmhu1)M=]hd341a6H!"1P*q@97Gn=do]8G6dB>\C83/)umM(8ZP
+"W91Q`Hk#U3KR2Z@H'u8[O$gHWX[P$KlQU<OTAtonQkb.=+K7EpBbYZb<R3<$m>.\
+QHq\%>Anat*s1Y4U;N9I@<Rk9J!?IF6HC?Q@9'dM$o[uc2Mqr%(_!^%3he/Q2hEId
+_f"Db%H,QDG?o9U:_)&P3T*^BTNho`>QpEf>+j8b)!4I#J9UfDRW]>fG`.CQMhf^&
+2Zd;LR*CPT-[b[)Jb^aYjsXC.q2ZCN-9uR7\<;-V5E>HM5LXgW!4W1kZ^"ZrDg4GU
+R;<A$EGUp)QkiL,e`hJ^h3=<J+*b22-C?9^QmL,[3pP[ndLd?UbQS!"$%STQ@$`AK
+H3TNT#_8'D+HIgVRl%L[&S&9b9Gi(b&sO*L:a8$)C4&1P%R9frX;)1ATKk*t,#Meu
+;L6\t/$:To/ATSXC+6=b;$8Uk*5,`F,:AAZbTL(?j0,6*#cVchjVq.0Pe"r;YjC?l
+o7#=9IBQ$JZ/Qe0+;CpZ,I1e_Y[h]j)ZW'k"gM8=bo9$T3rQFBNO7Ed+F>Z.]/1ee
+pTgMiR\MH)%e$M+[%a]qBBW)9A%4Q=Fs;[+[cMTUO7X^:.CY_)\(^U9H]nb$'PUct
+`&h,-#UhJ'BtCp,pFCBtH^VID<hJ-5]1>f0$l5;DLb[Xn5f=<*`EBPe&[-j',fNok
+RfcU$kUq\3^AD!E8\@SU@/cWTT3M@A4#=Qt#JPQAN-jTh>P5_b%DNl!^:X3X>Q)@3
+Mm?R?^k>k+d9j8mjY11W6:EYMiZb%#7ORS#\9osJ;))I2"iS;7`<-TQ-)gijV8_0l
+/PYZc4D%.^;ob]+ZMUQ->XYN\DY7HB`95CKS<EkV>JrTD:i*5r]U2>9YTnb@7@^G)
+4H6V?<<*M>LHJ;S/cEn)S4GcY_J9cia5bCo7E]g';5djHRo_Wrg4FZrGle;s"6%Qn
+CW3'U2Zt<J6WU,GoW?mP>MAj0S!&gq#5Bj/E4=me12&M%o',.(d_uW"SHl_&NR>sX
+/j1t)]f4GclJd26\@QoA1rb&o1X]_`,"7YakuZ;8C"AaKe`gNfSRpDY/(FM\#AabY
+i]41D+h6QS2+]VV#1b*gn>FB_Ob:%Pj(bLGr9j\0FANe*KP4+$\_?':=XtUI4d8Q%
+UcsLZ+m5u;rRO<Kg+\Bs`]\R;k&Pdm,MsNa-[j9PL<\PfCa%WPhu37GUX@hEkUo#r
+fqWlNhAC_eC+T6<iVf2(40dT^UW2.BgYKe/?*W>`6F=G<gDsTcIQcHAp`]V67@lBn
+h:W)Thqn=ng$ik;IGs&b+l?T./7)Aa^3A%t:#MUoYF\*Z-`uOf2qjiDfm]5^*K2B7
+\(N4NS(qgP:,Y^m1[9QJj()QR,15^cEi7d-^cn_nhMOeu67$5Xm!N[%]lC@^+tgP:
+l^]"bnPAIWl0L`Aq-mFl5.g9XD=#d\m!:FOhK8dr[GY>=:BJmjBU?\$f&44XciYP,
+AWit^%OU'`J,WgG@TW/n/o>?S#+lnQ]UVg1@f?=#1]#;f5=jk2aV_cuoPfg:HE=s=
+&,)u#5XT-F>rfs$oX>ogE*n1D-"J^%M>-snSk]\q`la?,0tsj#p0V!f+/Ihkfs<ma
+1d<5V.0%fI<V*u1o0Ujs,/a>7s7:`ZoLm$nJ#iIZD>/NQrZ>kQgop^lYPs#hHU88;
+5].\GiJ?E01_:*$"&X%"&I',47O$fqe8@3t_I7E2"?^T(M2d/m0N952$lhWh_^LW%
+B-;k"L-m,_c8IS@N(/FS`#^EA)3*g"ft?Hk+t:UR"+bF6.h3JX7DgjU'L6N2<!Hj#
+e8CmU)2t6KObG?,0s4ET,B9i?`\OjO,I8g-Nl>P86cR"%JE19RKN8<;B`pU60cH"D
+d#(iH#m/#\UeloXb,&@[j5TfqQ0u2.^#*lf]]=+"CWMMl=u!--BJ:Bc@ei-f5-\%E
+@^NPfXB+MoR9qmQ*OK/h2B5FLS1G0`QVHDfWfeS\Wf`5&EdA:3[Jlq)T[uYUqdnL-
+h6hLpf6F1U,B`YADcb-OirObTA$I#t@+R(-e$_kiqS]cN'4AI:/HQL5^s?3Fe%orQ
+>1^22'.Bb;D7Ync]+,cT`Mr/+38QU>1Q_)UBll2/.ZkAe"XrcR?lLU^!gp%o$=^$H
+.KPG=K1="BE/P0fH:Ag-Lfe&d`i2!7SKn^!;Wc$jCV5a"Ob*e@,0F;*dYB:,U6mEn
+m(T%6#op>AbDRhqKZ?BSO!Mhc9\d&#'9&$X:6TIP[C^LEp=KRIXI]u!$1):aabk[^
+f1l@P,(^$b"URYQFF8l_;B^019"ok!*?h5#jZOO%FUAL4Ui]3G[>%[J."kFi@QGGU
+l.oc;ePh/8>ZCCPB2(l'>%F('<D@(g,:P`iK!/-ZQBOi+I6s@2W5YY]+]4F_Qe8a[
+/Pq11MZ$m1'P5=*Y&9eFM,i/%77^<IXZoJ-2'qKZ?8TVk:#ApP@pW)6D&6_`<Ej:3
+>o5_LmG.B["^rhdKoKJC.G^eZ.?Zr)B\PN&Wr=?)3_PI-(@,CIVDerLRGE*fDh_iT
+,0ZfCY&)0!+t@o;mF2Kc[mF_i_pGm>M\p90X^S!\UZ>/;S?jZ&5\UAb$jo98L!=B]
+rDi+M]94TS"e:V>9a`mGW"'TH#Y5C[Ogg)a8h$#JOK0n*e03%+'ik(dpteBdrBHll
+YfhpaadbGYh`9HJHP]u#IW`ZB9"V^/E%P80VQIEnk_X#"2Q*K:]a%93lL1m`Y_F(f
+IB[PdL;q>R2Q(9A^me>pe\6B[:Ur`rB'Tcsna?(qE>nip_'7YZJ&?R#e4\t;YtM4B
+E)CY9Z)*8\mLUXYS8,0AM*.L&,GE7/=8_8s>_E:&AN03,6+^F"IXeN.2P+t6rsFth
+Hfaer^;o%)M\n-%`[12AkSF=qlC1r\ap8f^,RkED9-S'I\si3O#)H0]8FMq%^^%se
+i9U,dO6D547QgpIKB\*SYqJ<VfQA=d2LQ+gm?KFC!_[VoL6-)F5M0*;:HV*qO:Dpg
+7cP.+6l1Lf*[%&!0*<@K4+U4;'#5/CeXq4$Mf<PH60J[^@l,]2YbD^qa@][/`%H[>
+L)EBLm2$rd4X:HkZ%J<Z:>ZX.:ke.S3!`8pM_WtJW@5Xr\/7W!]!Q4k.Rt8^0LSSH
+1fI:/UnS_O-KLsA-h"JkVr_UR,]&6]d4.T+8M)G<b`\0Q_F$liB.0SBQBUl+9h@3"
+.1LXmP=`G3#;?i'JtNGT!.ZkUTO&4efk(SBQj":fC.K[fc!rL0Xq^PLV?d_f,%,pN
+'jsiQJOi`L;_god^d&9#C9n7uO9Gfl:_<_#8-\\H'SXo4&qEgk-SO2!PI]r[JNt=_
+TR\EnOIQS(,jV"o[M+:4@R[6#!X9=TK[-#84,amCSjb8X:MK;4_+Qlo'WQ[[+sM8*
+jTh=)g4do-+%/E6+X'MVfHm9p$#')iUbaogPX7Z+_50Sl/F]R^8o+rOAOfSHHlGs%
+91M:)YQ^jg)`n*18'/_DTTrQI!ud"X-=mfh21h:DUjH5[Z#?<li#%'2-jhK<0*+>F
+]T>Nl#RK[%UU@`K"?NDZ'V^8befqLgEdh/LaZunM(b&RM-!R>HQa,cZ`\`k_<%(R?
+XY[CtdhR-u_MBtM<?f<a)Xgk33h`o=]GOVh7V^&AWjK19Slr(1C@,kM[!'I<<l=`=
+/e,:l<*;\S&pF#krJ_,74<]Bh6;![U>c'(=fN'K"G-2r9[?if='rncM="+ipQWi`\
+f=l1E3h8h8m[F>US.J!u9F/(9N*aXkIP97LUa^S0V>rnhmhe!`Bm@c=M[U)1_./rk
+ApBL@#AC0gbdcT=,SQ+;=mD8e#dZ.#JdbBmdn1],FCD=#6GRd0fhj+"3u:Ii4D)YH
+5X[9fg-MGDNi:,i-)rfYj=GOM9jr8hps!hi!edRE*_jVA7#GP3,=Y39#r#oE.5@73
+<(lIA36cLk"&-R5nt&9L-MK@Z4BmLX;2NIa%W(.Y$&gX6)oh^;ksM8R@l*F>`^OAU
+kDW`p>-VSYGkX4/%2Y&q,-f5c1F/.=Q_!_;L<:B\/*78@Vl7F#9dJUK'2goinnEBo
+=d)OBm,+9(VHMH;^n9igl)D#&OjPe.5fnui=;ehdb,-/4kH,,O15<e%RO]Xo9oP%<
+L<i756V?Sg6IShUR`X8'W>,^SW"@h>gc;uP(d6!>oj2+PHYBNuc"idA[^=kGI$JP#
+F-cLUbg0K*%I_;pTCH7f-!N;FVO]\F\1[a6Kl_V(4G0K=K/Sg]95Kk&hlJe/)r3MM
+Ii-HmWA@$,j-t[DArYeHGBRWM-\%"oNU+K?f+@"ikeZ`tIBe$(!D'kP9Og6pS2Te3
+kSuC:&\Mbj30)YU*/fQS6M&3;D]@sFl]^Z6OCu%'=lc,TEq9`EeoooSjZPO]G#cYo
+3MprKrMO/hY-H`m%g(qM,E-H!&[I4:7G6K=[re_sUO+_Xl1p+6Btj8m])Qco4.!*k
+D\^h"7u$,s:Q]\SmEG3XCtF+,S>!\[>ggnKO(@!3GFY91P4tio4WZU4h%/Fa9PoYL
+2@HGN2<%[M39/h)h<,:jSXS!"pR-Z>qgD8m1P`@(r5[Eq^Gj7t/kPKG:S'RBI/3_R
+6K<Q"f(@:\m!Z5?p:e&Jqi7TB^*[gq^TT2'?Qnn:n&PA+-d6t_l.CIrdJc@Gl9<DA
+Z:eW>n?k;eAA(QI$nLU+Z"Lj>fbu:pOE6;o!D5J,`'?Sb.?!mb,RltbR_BAH5jRGo
+F:,hdjYE>3U5SoaCY6;Yf0E9E4X:*A'=pFS(cXVcZoFpK];<.PN]]u?Pc0lYA-p*E
+'#1d@Z#d.`X<g%4pd##k\Vq2ebTjTM&hnDB5!0TFj=!<`s1sp@5TA,iZa[cgToo7.
+3Xd-nX>2m?gG;34_=4P<)t^qa3P8SE6bBJ;HW,luP<YQ"6^u!.]Jr.!jhklA^6CI`
+leb*7la-dL\_Ju)lpj8;+%/J1]lZTX/(qiSQ9OXu4mY;Kqoc^<:r++L7._uoe4mfM
+2E6(:6gRFOg'^?;S!#ar2?Tni_YUP7)b&GSOuXdB_\S4&Ldi%aZ"^_f6t-Ju005>(
+VTUAS)fip82TBg=5C"KS.p^/iFV6bC2cOT_JC_%(AIG#I7kgRT1E]0A1Ig_=$Nt66
+e2!`="\5(la/H%.Mhjl.HH'GX8+WQJ"!SmVJhcV)Z=JDRR4h%21,]8i_q]GBb\kL[
+.E>(]7i[4Q/<%Y,N^jYr][2:%RjLYsTZ>!71[u[26)@*$H\osR$)p'De:Yl-OT>TR
+M.s6:a\G>L01M%f#`OO-aI:6cM).PDZL">W]T9I^LrUc[[?R6)CGHanA'.2s1@1FK
+%#;s2\U[P#a^hN`4GAV[Z,sil7S&if[!'VdAu(fV8`Zejgn2XO:.cLAbIjUijJ>>e
+S]J`h8aMGZM_[np_F_+cb/BIbCm3$.[E#@Qb]&uc1mcCdA[!s9aie0Z7*Q!r#u&f;
+2*A1T/""FGD*&09bYqfl4#fn9GteZ.c#]4<,hY2Bc:q6,bf$YV+G\4j@7pUc8OU\5
+'Re)VTF0c;91340%*c.AcHW/o:1Vu`"OX[Ud`cga7b$3f,I#FkLX)Es9K7gOoOZ1@
+gJ2kXc0M6%']dJshFb^m:,IFGKW\'S,"Udqc`n&!SFY"QNJZ/\b='MZE1b0-PY`l1
+9h`8sqc(T5o+)41cO=qljE+4Gr(Cl1MN^0IghY63hocGp:u&?PP:09"j\&S]aW0NM
+,mm@?s%nCLcE.4GFP]lbm82%H9Do+B"K]t7N6uI.cP7/;71@R#dnpe+8UR6?E2Z5O
+im8S7;J_e!=\=k\R)u;92,+G(n@&eM*mGP2#ZF_n`A#=i"],X`di@sWm24;T^9_Y*
+bW*'=<9)(F447YMdi]XYPXj/#2UfVm9WXW2"Y%m].oWQ"+#PWIFC`j30@:sS;\^3L
+q=`8oQdB"pcuh>qogdNf7FDTc;k5Gah*OrspXA3\MEN^6`B_lU<`CY?O<m:mi/CJ!
+=N2>l<#FZB1p3&gT?H%I<S]N2OXATF:t;ZTefnp&]hDFS;\ENFa]/mM?"["T-kmt@
+c`L=#>di1Z0iHh3dqrmO'hOo!?dZPpf0(-T-!X0(2:b2UeidnJ<G'h+Gua6HdS2J^
+/+(c56.b2Ae4^suKb[MH+is>/#ugIp!uF-PZr11a_K@p\ECilA28H>JfXWY+of3e9
+Jl3mO=9W?RfTjqQI>CmPe.grr,ONpuO&&2s=P[1N+Jr7?d8Yc1PjOB2Ko4JN*l<nl
+9s'kJ[-CcA-rs&=fmO93%?ss(Lg"Sc<E3@j]U)P#W_@7^>,9*jbhpjcYJ[3;+C0#Q
+4gA/]-5D6?f3M5,r2<h*Y1$[Y<b4*k]d_B8\lgni`dIR4]t;n0XN55Ue7b)u"e&Y,
+>hNDdbJ@989jh-&`_'f&>W$_1NOR]&^fk$a>Lekjm3JQDB8[WeLj0IV(nB$9j%7*a
+Mc'-]h(^>A[>9?e#rn`VTS]^aG[5kqN)eRT(n_/=La"j^h4bjJE7bR[Jf+$-+p"6k
+A=O$HKnu1$R]r&,f['nUC^<UcM26]nPai?LNsaPa!ta`P3tm3L6=-5N?Em>`_)P7>
+q@nq=//es,JNQ`ii.7kg'aPYIJOg2$k[*JL#u/n+W/fb[ZX:]I)K#2rB]Iosr2.RR
+Q(]$k.JBiT"=Er`P)\F^S`:1l<M&[k!]kN3NRQ]0m41L9Lk5I?kr<*2LWLCN-Q=M1
+mHNSXmYiT8hT>5Oi.r"2T9u26.5ff;;>LPAbVY-QbPJR_?6(,b*XT_&);YZM?1J""
+o3D?aMd=auR"S`[r#n&r?s3,2p'9L-YS0?8i=NG_JjCJ",[u3E0[:Hk7I&l7eX'T!
+0h+;QCD@u@"!pD6$Q0om3B0Vs\mXMgVT>.$)+e-\e/@2/j#QZUd9ko4,2]7hRc'Z@
+n^oeJKZ_;/h*E\$8Ga_BcPu69?cd>IWaN2C5i"^O#YC(f@<[rAr*>,KA<IB.:rPqf
+Nf&Z>AB$hAd/IE9r8j#m-4:&2p/hZ.#,NAPXKDCSE>`)A[#?uRhnYU(&lFfWeW!m*
+h6B&e!V0ar2rkF=A0N,VDFA#i7HH7!jE=1,<aA<`R7mBIM?[L#!8_>=:M$4okNO9,
+kgU6Z9[_3cYkk_=8b-G3Xl%-#k_<7T<X33PX!Jfn-15""!@?l/@Q(ZN0;_n9nY+ek
+r71L\jrT]I&CDg*nn.CckO?CtP$mGFp1KrJ'r#4]dlArhNLb[<k?^kr&L7ZRQKSNL
+kmjJ%1(=q[V.`LBTOq@<OIBdMba0Y[%70l(nP,.?@(3YOlE3mEkhp4Pbble,M)t?G
+1B6MCRkqd>?$9^jG"E[Lr+Yk3l2a-1c@G!<U5YtHBBHr7QG@7\Vrh`QlBZ[0VNr_2
+XCm9iAPQPDSni*CZs?,bUR$jS5#dc/38R7),^rC%I_a$B@cn5I@\.#+-?F`m5m`bq
+B"jbq:7URNp#cOL-\gAf`a`W;RV+76l^HO?IWB:35]([dm>dZQ`nG:\QgMM7/cOoU
+esL'p:?e@7abI?C7S)dknn$f]BCWP=AjV>NUu6?LMrm\FJdN27qe,HELpA+Yl26]N
+X#j&:n"sLWB)Eqm>7-s/)!Yqo9eTd<D@GCgn1FPHp/E=Voa,5;$cp.+Z=)?P8`7<&
+M`0<-fiVU>.:,b_kr/oZG2"f>p1W*m%URuYR"ZX'(hEW?k2qM;YdFge`h[cqLfkm>
+i5"Pg]+!8Bm)AX[cM=/Oqe.&MV@NQF3A5DEopltKkmEH-[g*i7!t3]`EibCcOSJ?C
+no/jDE*>hPU(jH%%rfi7nE*]sCC=i'AoeTgOIm/E2GOQ,VJHb(kJnA*G8M>;\T+5(
+nZJ'=?Q<pf0G2V-na>jX)q/?X"Wo39o?GcB@@co=kN;bkFJ_0<Im`h2*=9kcQJek8
+g7G7gCD5;?kmir##m0\S;=Y5)T;&IKj40$9IGK_Kjt\,76=BBh?ZL'R&gk4U#_I/d
+:6(&qoTq9=f1k\1k]SmsFLPn)mjjS,:j%e+oc^J\2]VOh<G$__Ro`[)-;sFbN#V3)
+os[s35-/M'^Z>E%ET*a2<qc(opi518n#o$^VfZr\,Br#m+l=\e%UsIV?ErBAnjd*U
+07*)9:@F30nm?oiT)X$6rck>j)HS?EcRJ?2KQ['gpg0Mafd!9sB'N\hN;"<+%V0dW
+@->NO%;Jt.MEfun]U,Wj?bhBkZ#4j'9mP33p=&5<Wip*f/ek2+V@TE@#hL`)CO0#U
+$,tC%65?@'V%9G-EHt=8;Gi<OrUG<c$GcE23/VI9r-G(Mp\0)Tn<B5WIpt>IH'Z8(
+.&pt5[1>L&(5+Y\fh?)DndJi0o!m9fhdI\WD&>`SMO(4U#FaMQS,=ESHu<G>n&TdL
+D>G'aqLIUP@`aPrCO0;o?nTq)JUd7JZtNnqHH$29^TMq0YNNs2$\,H(c=;8eMYg]f
+qestj=1\6H\Tk<fHa3eOacCf*?i08>r!&)Ds.99mOh-@bBf.q[[j(e^XXcaEH[joK
+nO%ZEV@;SpLbC[`q_8UG$tGXm+3p&V.$NetefJF_Z_(qj-@(&$YNuQ:$gq@1.'\9B
+W.CUl#R7%)W46:m)3.)h^epIu$5s?X_VrSgD$kiS"iF3)e7]s_`!1j6E8YXVN5:6Y
+J[@$u,a1h)&Z@gt>nN&)L>rQT_FZ*lNTT7ld*?_jJPVrV&\uDA3M"K(UQN@=B29<Q
+#:"O/%LP+Me"Mm9aLGYBW=+Gj@>))0>([6<,:ZA$@QCmDm'.^mb3]Ig6OIia.+V-Q
+Ul?rn6%q?d1kEUN2_2#!\TG+;7l`VQHRq,"6o.]poToBJZ;sHHgoMP1/r*j[G^N7>
+)^*N:10I<Cqa!0cB/7*d7ZKWsVN!GL$g*d]JH[%S;5(eLDhrt_kg:EjUguL:G"'uu
+^I&6f)+e\QIh9U_=3&@8_]b;JP7np\.f#T9e*QTh-p)su"t6d'Op8acWo-#ig;'MZ
+6*#[__4eL_JZQ(3p<c#P3\#[b/^s"g_2'daSO<q6D#COHaC;PA0a(gsTaT:@)S31G
+%.^A+bB2"<M;kia3"_SbUdGZ^5``n*1_RABBd4%ZaK&3tp*iT@M(50:X6tj<BObND
+4[HHZM7q'<](nS4C]OE!Dk'<N^bFLd!^On%&Htafi[G6^:lHbd6-5?HMpB/?3iu-(
+$g+k,Y=b2s#./JQW_06o0GqfE[-Y:-&]<9l-m?f\gp_+dKWR"MX?miI&e]:(:TT4^
+-dPMWW@";OoV3GN/JMPEbjts@kg]^!@*[0DABd!QeV&%NeCAZ%Br@4ZClQ;3;[Z\g
+(>Dn163sAs-JT>6@:dTa]uaWe&^2[!U:4,DpI))oX'`!2A`jRubAE3j+makNG#GHm
+SG62W26V\7f$1=2@MYfJ9&#C.PAe<9XiB]SG;[9s>rBko9&6lb5a#G19@E::Fj')u
+??aq/P$bW!'Gk-ipiBiUq:KZZbO\IH43gY$"ZjpbD!<oDP&`3\_(]0p7VC9\a.[1-
+CYq"aZ^fnRC-$OY7*cdBJ#_[2>X%[jp,f*+/pI_;;eZ!]%=R:i;^fI-81KT&19./"
+a0H"$&QL#jP/IMdl6F>EC6]1<\1VQfEptN7G9`H/#odWP[erNTHm!6''<1I:g[eIf
+2240e]fEM[Sj_i[=rQq37EV%$qZ8/_2<d_-hG,TAMid`"F%!tOlj%G?eru/>Q1jl\
+MT&1GA7+`+6-HAJ.j:-Xi!++i,j[..E,We]%k@0Cr@.;^i#o;CeOmM,?_VKFR6351
+JOq2"NarXIf6iBGef#qLq[Lu=.q\l3,.1n#)&dj!99c<VEZ2c"iU_93V;Mo[iaSKV
+4Z\,Lj>@cQ#9dU&IP48<]gd,<+>_\ANCE9L8&.Gu)O3bS.J&sod^#+Tr-co,q*-/D
+rCW"C,@skP^X@_.?jf1j&%)JPK/3Vf=VYIeJVZT>FD.>JQ?Fd1$6D'hPTF7,3Xs;n
+*]J=F?YKd'n=5K%kIa5**'B;.OmtnaOUL.\=ZWWhJsb0h`")i+@dp&!0G;NNd6X0R
+jS@Pn[E0bV)Z"bqFt"-U<(;b@@k?#B(dck=BV.t]#1;B$a/D]'j6Q/qOp5/Yfb5N8
+9>jbK%Rn>c*2q9]"d3Co9"T@'+dIU.PDLV^5^B)++1sIqP(HUb=]5;H>Q]5t`Qpg5
+7!W)69pXp.%7^N"*2@6TK5VZQ)48kVf&Id/o7^;`\Qm_Am-'+dWAVuR3B^k?DOtjf
+%o0u#"eE92Pu%g:P$,jn,G>8dF(J5k6P+W;SD@WSc)a"7^>T\rq.:s9[O:Za`"Og\
+IMB/kde,0Nah9MRjIo<aU3@7r]cM]\.,UG]K1ZD0=`TcEXH8lqqF]PoPm;_L(o"+V
+%1tERLk*GHLFk^5A"nF*:q8!;IS/UFo*1=3Feo>sWM*j>0*I^6;^t=W#gki=P!W_]
+MUbdjeM2(2DNh@-b=[_5&>k]k^sdnU@d10JZ.:C8f6J!ONP/"B'd8p3F+I3GA*L+<
+!iE<r5u\t(RAt(;9%@Ze`Tkjk[A9+lc>(6<.YVGnY=+j\2/-8,]l$-5)2jYMk8k4`
+G%Xh9lc4jG,cgLCYS=sra$t#X<,)OaQ6qA:)VlrUAG3MkSFPGSZX<),oKq+(86dCZ
+8ag."Vm%n<TbO[@X79.pl8hJ@Elr`rlO[`@)UI,@G`%Vn"JI-4!nG-sG3CO<XCPW<
+hCH9b0Vu"e(Qe+B]2Vt!`(H>>/@Ah2LD[)^**:Y^il[!TNj%jS^^=o6?o*[Hl?.Zo
+1mr5ZKS<kFm>tJ:8srVBIq(+.7BuPeSm7a&;[Tq0VAS`&R0sAhnc^Scp-eH(1*r7W
+*aQlg:l82_l]]R/36Fit.S!(e@AVXD4scGg.+enDS:uh`-g(*CPUt>KA#aY^["4\C
++/#@]l-QJaYWek(Dl[/(I^76]?)!gaM`-ef";L\u],l`"X_o8ZQ+uLXPtrB9m&)WO
+iZ\FO$RaM>9F\Z/1W9Q*$T,h#Z8Hf-oO^O!AR/*#Xn<:\aAWaQ^3ljWp:V>(ZB1;:
+d$"h@&M3X.T-f&YH8aC)4Vpk87c)jf+%Ie?O/-T@P:N"[^?L'pVKZ@Y:0N!C*HRLC
+osU^Ng7MGIXPpIB-EU1W^,As1J#tRL[l&Kp@rEWR9_J;G[V254=Jrl',2;A8$/:0(
+XdFl0T$QE7DI>l7^IC"*,e=r9MP!Rp`*[$MP"O>[Q[U6_?/`iX*1'j%>ALAJgq'q)
+GcbdR,j9.mUY(6ehpsaRUF!)eQB'u"C&%Nul5T`_RY,tXA'),mD^pZV9jCTA@D4bJ
+2!k+_[-UM^*Xf@efj+f^Og<*VSPMhVI#k.1o.9k:Ym?eF1mla_'Ns=(<e('PHX>l\
+aH&@g,eIPN-_1<BZlb(Megk_1D9(fu/f`[df21l&^6k9@P0]"C([\;VkB<Je,$r13
+BZ'\F]bN?hSibE&NV6VQI7]-QC6h*:UMSd3U3386b<9%K7(6GQAXFgtK-s#0V4<F"
+-2%puWt``+`tRY90W&3_$<:mGO%gJ+J_!A',`&;u-n,Sne!`*j+(`G995@#2\p,Gj
+&GlpdNs8]ADet)#)Z?dH!9:0^,RPc+^,6?<3DCRlMS/tE\?0TtWN*2rApC$\Wqu/!
+J0^HF/N!<"[+I%Cq[]S$A,?C%*rHG(r(m+dDp0K1n>@sVI=`e$Dr)s^jT)LLZ1%+l
+Drt]uT\PV+6kB?Ym4^,oir3Dp#]E!)clCu'@ft'r;5,C779\K.-rarmr,=D`Me9!Y
+0a$Xhqi@iU`o]t4<$F^q5m<kNn@&m;js%r[F[t:cU.B[O@bcVg%:em)%DX6fhVY/C
+hsWiBDT4,<3o#?G,E*TmKm'^ko"I_tX3`+Bl/9!bADPWerZsK,n%;>5i:_-f4E0TX
+&FNH#rsqs;(%:;s&GHW)[h,IV&EHTXE$#[1Y^-jGkG:.gm2H[W`+Ok^q[kSmO1>3%
+3c\b@'EXZ!E.J_-<h,m1"HT(P0;-Td^BH//%BrtT:dY'*TW,/.!men*n](hBWqh6p
+)llC1n\Q]9>oPJ-*73@[&^jV'lN6PB'Tq8^d7,8eACdO&a=Tn#D/+ACUj$9)/.CIG
+c*5K-<d"h5;+%khA6q'$#i>eFF0CHO,/W4=&15G@E).$mJr&(%5\Ghccc<"(:Z+Vj
+pAs9BI*rlN75eceEc;"d";6J<TKifk'Oa`j"9@im!['(3MNZ",2rbu0#i@+"bl4?<
+EO%QIikQnh[b.Fi'ohViEh79F/qOT4-rRo3V`LV_\0L"78k_998k:+'bUUJM-m]cj
+6B*6Go`OVe8KoXe1BJifA4T48.FRc5Ap?U>UeN%q0I,?sa>bGT&M@Qm\n@Bs_W`eM
+n5G"EPn0#\'#H"iUfKg)1GZ$VP-?>j4omp%+nC?niZKj?bkDVhbG7Z`n#S*6FZ3o?
+IM7/Y`!&+hl6c+\3%r@RB3R:r#gqp@9[e>HjBjqmf_u"u:=Gmq;m^HVPqUUR9bX&>
+Zb&7k,s%fd3qL#C0dnSocT<r=4-RWCo:"i9o-e"l+p.3[8+rda[_%`i5/]lM1Z:O(
+ZTtbt2Y7P';sm\mqLt.5$`H/r7LK:8kVK"[8^:Qqn$iQ2L/nDTjhf&*oKl%[&2b.q
+6"HiC.eK7:N@;To5E1=TPVte64%>H41T0*d#n96(Gt5*48)k=P'Nmr$(ptoq8/*nq
+m`S*g:Im:Edo8t0[!>8\f1Md^6o:#pnq7,Zp8rFp98J?loK=7j_agSZ*>,qA@Sois
+rCs')6Y1R=e5oB-^6OpG9QXE+'VZrHj<YKu/kA,`CD8F8Xrp\?8.2pOlBIG'H9S^#
+,#o4Q#JN7HN$tc(0ZIGn$Qi;:e:iOpG`$+:0Usi7nF&+*P!_,M6F\ksmeoIF(./Lq
+"bIpbB["Kj7Ec[Tila_&6868a-YNu;@LXYo5o0T@=N-Ru'RNqN_cXdc3u&Oi9+P-i
+'d@MZ;M$gl<O.]"nPIB[#GhGe_J*8^4V-`-6.!3WoLiI\P51&::;VJ%&oS;g!5J3>
+GEdut_j#`u[pOfCCk<g51dIXC/5A`o@&)1YjIds*ic'Li@*oTW#PuSp7q&hU7,u<t
+((F`i"_31b/qQS<i`J"3Wm`4XA?^&-G#JGu).97H;W9EB,o"%9==[!NAKi`dp/n,Q
+-r`Z\J3ZCR1jYsXMeGW<6ku$-W^nY7X#DYmh=[IP,U07L%.\62X2@XZNiYVrMedoI
+(MoC-A1q_M^faY<(e\C%[<REuOshd`D8OV"m0Qo,!FNq=..pkJDQuU<9YLmj[Z`:^
+#lpE':8q:-5Da/oPrSCm9%%\>0Z6CW1piE6TLE<JYI$nd#.j[a%XHS67P]c&'PCX%
+9^<B\U<;\rM[hT:>fNnN=4L_^f4;eB'I,ufLbsE?&Ofb1D0Lt!=nOs/1L4#-]5.gq
+<68ck[CYErdX8sb3qYt5(MG1?<Gn&WBr$KR=/^,ZiE4+[H,G&X-bg=[>bb!+86<8h
+[3\qNIpb*N<u5Rn25tdpB'^89F]A:LXFkZ`]3*B[V`4^#f!PDMFQBoX)Rl&X,.gfU
+V1GBa5P>^u/ie3E*_KGG+*]#2\#Ri40."#LB/d=N=1p8)p7l4)=@5<#_rlFa#9XbJ
+8p&N[od>,gj[mrn;!KW^Qgm9B#<tpV<XRlCL$1d"8lWk)0ZG>`btX$^fnk=,M8CNd
+1tF1eR&#k'Q7c0'eZPjU)]5tg9+cc9`_\A0Tk<g),LF\D1IUA_Tn/S5<f\$$8(&W[
+22-eo;'O2*2k8q]BYb?6<<RKtJnEuO+D?c8Ce(4EAA++M."Wt+CEatN-[7>EGi)s8
+ItC7M6="\W91E$U-?ughE_Cq.0%k1"g?e]6c92'd?LP@5,gSs3).YGAdQ6Y3iF4fu
+ko)-k3)d8ROFdda[`U=dB3!u`dho96fBj>rnV*Bt&lZVH&dKd$*d`Q9#NVFh3!FJD
+5UL#;MpOZ6(ogC+j?X6dlIf$kKBj"C;3Z<lPIXB:fhn$QkFIY_T*+H5=`7Eq.cLdd
+l+%b"9c-uVKIkf,fRj!fFq^7HY[LO'H.f*U_pkbf?^^<'(&=)?=fInD\XO=>Ro^C*
+H+SBHDZ03cL(t[pg!(!.\",(^"0Y\pRGEe.^J$)N-&poQ,'K#]b^A"hRPk(Ro$OCN
+2#>CQ.:eR=cTZm__.bhbj\/66(G[X[#-Za_<QL5VCV+!n8;::&NE&CX]#5e3ohFEn
+JpP@kkD<?d7X?;:WYII4,g<X8U50X-Q7=MR#GQINP7H`MYMq96e3RMQ+OkFEF$e2t
+K1,Y#.!AXGo6EWDQVN2pKMC0JRA8c73sm;<+IitDTMMjSUe$^OR;c4a<&orCj@sSn
+P$(67QNF4\LXI]pQ=/5!H^[QeVr"`06nOA;Tu)GAUU2b6J@C3f\2ktSleA4F<G[T=
+,\N7+'6;("\l[E%/SH&r_@oA)1d8O,XEp=c1/=Hg1JpKR@kFaf!l;3;8$eY9KR6A!
+441d36+$Mp[3AJUE1OBI$ZZ&SD%L]qaSR/1EOT/F;-M[dQ$'X,`[%%3JbtJ6.MK?o
+do:\6.',dU2(2<U!1]O[+IfWBH-*[S1421!-S2sDPngsbCVAG`PW6L81r)"Od9;20
+Y"(.+UA?)?lDqlX/c:$24G.,G,>'dMa(u#OaR+$nnH>YV1^dHkR1s)/B)0r&2MKMB
+S#n%V`(0+%N=+4FZManB&h@On/b"*6]Z<2(^*WY',8hDf76[n1:V]=9>=Tq_.C5N<
+E$l8lRkM'J#r4D+RpCWPYG4unXY*WoQo$lTPW)8o6FQt@g!1R`bdsT3=6\/gJ'hJl
+/`WdpM!d_Q&(!]8Hc'sqU9W,_Vd[-e3d$L>\JrJ=LQeZXb_#$'-4NIlTI#g<>@Jg$
+[hIAi+tUb"<Q#eTh3(Z\*`um]A7[$11`RhR$t<b/q1<d9]U_ob'RPe`aIP?4":9..
+W\,;FZUVi4V\."^$e*hCh-E?kS`DeZ8t8\_-%/[3>ujN3V"D>k>DMr\h.P)%h:BX4
+>@L(?#I2mB+ug!H6Tp&;7%;i>Z7\:fB4Dl.QQHigTA%e!C8L+I*NnsPW*<h?gML:c
+#'<AqL!gbqY5QF(*0&bCP<V0I+s\*0<>7g!fPq1WTUcP>ICph3L3Pn?@jPk6,Yc>g
+pXs$4WXM5n)\RT)&grEDhT2R!5-i3f-q`*bl-Oj;ApIGVSE)f>cY<dOApMUG)Du7J
+0oCfjhUm&sh`CL?7D-,U8;FK7"'.V`4^1LY%9r9c$/Qk+59>(f:_P2F3]U%KdH6/J
+;e7kX.4BC8.`AEt^FL\'Kn]Mk)"-k[`"hoX;=pSNAbXq#?0Cm5_n0INnH)j6FcB,5
+QABB87AS2"!_(YIpK93j-tEW&GoA%O]o=QFpfPHdk6+;Hc/aW]rg`4n\EheMltu3Z
+\qjq^hO-[M"m<bZF\Djs^:!8JPNiP!c6UI%P#J\nU\#UioNM^r/rTAYM=dG/ol0Nr
+-isT>!&>*)!CK/GaBUJ>$q>gLW7Z,C)3(@%3%3-_/fY=TK4o5Z?nR/Lim;A_FDa$u
+`^[j*m$)3-)iVcLTr?fZ2]E52ZN6`/@Q5@J`a\-h$@FHFNCL98]]<QgQjmLlEQn,p
+)4T0VFCE85SKNTEAp)M"cuU7`NMt@:oF_Tt)GVH[qP:^E8K#uc_ceJ*dP7+d7RM`d
+3,8eU=5q1Q:r#>/K#HV-S*XZr1<UVWG0&V"EIEq/@hPhs;a6tQB_8T-R+tt@^/Hg)
+C*'!T1U(8\oMNmQ"fE>;L(`-Xg8Rr@n@5!%Ih$]]dq&5`.%CW_+W1aJ]874eB.MsN
+oKD/`dVg4\6S05A.+E7lnP">!l1iSU+74H_oD)$YLa#-@@"C0&8qPnI@;oW6]J)*l
+"?>ZB.#'V&?t0$c8S_cT,`Oo=X1U$Y'&+VI&6-]'%"qXm%;b;t)Dhl88Ag)hi+U7^
+Tp-1aY&"4lfW4Q%gE48jZO4:=MY&US.ZunTj0f:-_'Yj!Qt!-^-t$H@Z>')QQR9le
+@N.;1ZkaXZ:D1J829gbaYb;)NY3!6P"#AC2m)*0#cHbI3r?r>KD`]>+qi9XIJXd`B
+#;[X2W^2gognb5cgQ&#C0(Nth#--.6m`"QeB/1ijYg!kP%.n#Z;ph=p)oj]K0d9GZ
+<.c4BOnEP(Uf'T,-..jnSR8)]P.t<QNjQ%NU,(N9*)#l4"#<Qrm*R[@-qd,m`tNce
+35K[2>iCDn`7I1XMGcL:9QV<*6U2>ZEFD'4FWE_"cs4)iZ>G699=LkJUInIIRdEr&
+oc-J"cE)(0aWTf*UkbYe68Y.^%%9O94Y&Q;pgB(F3@lN0^-cQ\QbC_+UIaMD*%"?O
+D'QJ<D#51s1pD"u6Y]kFf4R_\HIt^s-A%@/\a,r!BbR"tB&;Lf@;b0tk]7=e8]$dV
+Ti\hO&O8A=WNP.KN=gNT(eY4/+PJ"sA8A=f@k?/K9&[3rQ(VZOCUjYK/>3Kp-bj9;
+c7FdHBmL(!`A(jG(M5@)l,7.RARgm5frh9e[G9&A3A8tOfq'kIUbJ8*>*hpjXgkP'
+iMj,:N28#[)lnF)'NKhR]QrrYPeafc<l334+,-5n..!/U-Ok.JO?kgr([&`,mqCNh
+%FQMhaDZ_oag2OoNeBP+5+T3kHZ!hgA%=N3N7@MrgWF*5'>r$[Gq[8CoN_"aF&%G7
+]*DBh8h6i$A/sR><l/&KS$*s:Z.UCfrp?7Q13Y*/FhL96d9h_@H*8BV(&*T/8J)Aa
+7;:kk'B8VC44$W\l$>Kk$MD],&g:%MQU;MkpYe[MHt5D2K3-?4aN8s)O/Rdsa$/TN
+_snk.4NP>P#^@2k_bjgdN=^?7eeS<p=cMDn[M>VU@#9b(%+,V:QLI@IRINlp8P;=5
+G5kJCBI506Y*8Ft7iI6f-ZSL41tXWXU[r^[LrDBp'*)Mf5tWK&-"7a+*_6sla,S$V
+j>Y"JTu_L7/I]Kk'6A:2a@j?bWatG<AB93G8I:9nSh)`VqVth,.RgR0T:j)lN(PgG
+IhLt)8n4[Ndeq$JP6h4-1CkK5ULS6rp&VuIT%)8CK9KkD9/];F%V0jRL<d`*ag<Ba
+d*WGq%ZR"sBJbk)j'@WSB\4Y4Nu4S-)D-_N9rXK-E[.p'T91I-8b8gZ-5=*\;YYk[
+<,X,n<5+a*$AY-4,2OY/T5?$RY0C+Zk25flRKjmN8P,jMTYahj1O>50QI.-/+X3H$
+7[?NsYhCIF[PK>KGnM>%g<(r!3:l5VcaMdFBCf)_o@YRWl3<YOS5P[3/:s`d@`o,l
+MfgH'TTl8ggW^mU0ss^-!s4.I8bqk22/9DI;En=K;5HR$Ya^t-XBZ,ZEKeF^UFp.e
+?.5<iY%1+C&mG4-c/j7bD^*'N$P5Vil"j'KqS8=/iF+9g3\Ii(R^^Hl7T1#5Is'Jd
+9[\aKe[8@Re7qknW7,BMgK>r&OJH&,?#0fZDRIMERDO;`<6JfJ[n"0+g?=0,auuZ3
+pD0C%4)&XcZ.k9Sd-apB<b?/FCq=2Xh4QM^B5YiVFa%,6h*Q'MOY*pa&LR(4V+l7X
+:$$tMG4_pQom<l>#YO9goLcE\gMbWV,ZjM!06=YK.\SG/$Yh&U4$$*Y\`+p<0*#DA
+g.BtH%>)c;2D*X^Kb"gY+P8TQ)E,EfTdaG<W>>m#4)^"4_/(hcS</uT\SX'YGpF]T
+BOT\!<Zk+9,GZnVUU&'[1(B!a-k7h3glBlu%RrdHZ;bBDKa8#a2p%IX.iaA'MW$#c
+0A-:A1;j5^aK@GFPG4-"j8_S`,h'a*="h@uUPY>%K0!/hRo:<SSB[#QcVS<I."(o_
+j3Ba1H2,8?9\A&/[!L*$U->fOH(TtR)Qq4O<Y>55ed5>[dn%QLh1K'C$2Zhd3f]Ru
+]'ZKISuOAcT3#cjFA[thIFRBHbg2WfWL(?1dtIlGl]TSu>,HSqUh\Qpq6chERU=`Y
+go;`r.BeuEZmpd$6gX`SZ$)93di37sD;pl9CBhm+(O!TkS0,<m-/)#apKnnmZ!N6@
+\7n%U[r78j>AN&5+c-BR=H-1]MJiTXK_#:HF@3gEhNY,*B89Y2\6l^F]4tt_K5iDC
+CpfD1j-K+QX=aR5;6?lBG4^_0,YMn3'oM+CT&V%:5KSfmbDi!1K?hYaF>b"+1L&AG
+3.7"9q@\Cl]bd?q<iO:KOZQjE+fodV\4"k)rA4f3AG'i8Q1&Wkl5,"7'eZuJDsd)]
+]jCIPhUC(pY@-`nQ5])MY#MUlq;_G(4LcWpaUc-u]Vi*Kp]TYk3d4iA$-k>I^7X,S
+EY7]:LlM2D"6(*I"n%r^Q:PpMj0SPdl!3ff@4rMGNtH_DgAB?-V7Gm&>1u7Zm(%H?
+#'!41Y4PNUfbA=.MCaggpS<QYo3[*G?O*G&Vb7hH?]tg\#;X;41PP_PTcBq*N8iH&
+OQ5af`QlkAn(`Qa-nL^jIa1]Whfa(hB$'kYDH;qWmt8%a6)V4Omm&UKI"+&KQ-^b$
+VdV.b9BiqO.l2M^&=`a,U):=4!g$7B\bl[BKE)Lu"WcA*1YZZRF*/$lS#de;P:6qK
+PKkZ*7&?V;W`m7qE;:Y5+upg.&F$9d&WV\u!K#c2#]VO0=eVl%N"9-,2t4M=iiNa$
+W4Ug@(ilUlJY4[]$l3<[)ej]#d^0hSa$K9'Oo&5dU+M]cn%H65QlG)&k___%Pf!jI
+$rJ];WH+(;T#/"2(a,<B^kIU6N$(*\)TfOLd(of&WPc6K6]e&Z9"Pe[%)XdVRKPqo
+_+DNI6m`1u%S=Go#bEg<8/)W47%,;VT]E6p<CEWWTfU?7oM$k[-QfBm_o!S)R,,1Z
+<35<CU@VAREnW&)<jaJ^,Fhso&T+hT<(4D!$el>RngCsl#7LWV`Z%r4""(EQ,K9O>
+Z+FD`FBu-C/MfHg0LL/kKIsBjpT]>s/F(`K&@Na_8hCt325n`p$JI%h?+(GdXM\G'
+LmKY:Z)f`k)JZlSZGnE]IB5MB^s]J<_*"UDOt0_K[[TNPe:G&:jYki&#\5A08>.d5
+fLUjBUeH-V>`6)`.RE@%OQkpKTeIC:L9JNe+ONt!![s1%,G9t^X;\m2lA!E2fs`C7
+NsLB433UE?Wgb,`\#X>E3"SIDTGP,,alp[bq!/NBN(@cT!<OlGC;[)7U*?D4XXU>-
+bbH)EXt<bdY^E)q/?fHIU8+_6(MOq`Y_1&uS$i0rTYeN:[&V%/K1_<"*GCm0_M3u4
+`@;0('I52$@%9"IjL1a$.4[1llYOEp*h\VGSY2ho\br1IUS-%g9QN-X$Q'?&8"SL]
+TV/Qh<%A^IoHUpV'1s+,M5%Q6W5$h'LcI:)@M99fq%:,h*1;\X1Z?T07%<2[]Qh=f
+61Z@SMm'pN9F-6+>:ZOj^o&m&&\/@78[Gl#KbS&J$TWRM$IY/C@Ze0iOG(!*WntV"
+%Z[j^7j0PlBcDsAo;k&m``1AES4"TZYDD^NRUT&(;O:+2j3A;g,ZI9p5cV&7'/EPJ
+ME.lR9\mD[muru>QI*R`9U62S]>=XKTN"FBK"[%.e[fQ<c<?=3=KA1MUUfBjPdDpc
+;?`kTL:O'TLarLa,jH%BQ6j&^.[-FK@lB:FcDYG+%lp'aLn,i7$6In>QY;Jp;D!`G
+=@4KqYlR\G,<%pL-G/X'M2AFYo(C4D$;_U?3]\HXfSc1J<%J@M60VGX]UKUkM9sW,
+$V7M1aq`:"%A8+@)6f"DN?qK(1C:'Sd%Z"blHG6<YEMrLP*J5%M,+cN.gluf$OUtl
+*;0nIOI2GCdBF0RE/Ya+;F@30S3.FlZ1EcTT>[b3T.l#M.#Cq`gm!$p#[=87C8\)!
+N/>q<&ie:QPi7LX/(MH:YR5^,X^;A'L!ijN1nu&@KjZH'q,SM?eh">"R^,rT>>F!a
+<XVN#[9qKJ@0jh`<lJ[uY_7g/d"Ah>.\1N'W271"X]G[<3%DOAGjSRgJrB_WTid#*
+4H3FHLlETC.N,2uJ:^G%?r^3LPjj6*E2-H>H6dG5(jfI,m;plRL0"b7OhH+nrDck^
+H5;3o=3@&$jal'7a3N+7=JSS$kfm.1iJoIPWg[S%(kmd&/'"J[N0'Gb/X2F7\-ur;
+$EVc-S#KLaA_6PN/%)*79qWBbB@jZ/1(bb+E?1>[H]l3<Y_q!TE!74pR$M`[eV,?l
+%>@PRPKuBo#j?rCE0ALOf9q&p.selB8lCK(NXdbQ/($S<l?=#s-7c@>Qlq*@\>."m
+elcLIOB@A]'s<WtY)F"s(D-Gh@$qP-a:3LC=Y1SD!i[ors&n:!%ZlqgH8ulFXUFol
+fK+mQ7&Z3`(_t<CO8+8g@-_'s[L#S3at&""=jpZ.-c:(uN7!O=)IeM=9,W0*)pR84
+[7<)95[1A/`-B1e*QO`<BL,Y_eV3;6h7qgc_&hRAd&"9QGa>e-&usKt?D)rc[?<ka
+km2ht=:!8FSX>:6<Y@G]RuIbB*PfjT!Mm</$rt*7gif_(a@UNF$!!59!1C"Wd>AMo
+cAa5;*UM2l[pU[j&S96iOIk8('AS$;a,<b"Pg8"jT?($VeCB`hScmY5i\sSFdjaHT
+qE@C1d>lrr.Y\@:h3/@<M;`<CPZs+RDA+<K&I@DpiY^Ya$TP.Td1fbE*A][;MEPEA
+rsoRoNIhR>/glM`c7=F_<hPbiOK]$h\.'RV@h=b]A`^uFSd;JUYFSu0W81HNmAi]&
+Wn>Q*%Q'9a;Uj\)b&EZ'@Q7i5Q(s("2uVX#q"tX46ju+FX+FJY%%WUc52U'5Tq4X_
+3>l6:S.p+MZ:t+%e5bT)QK8E$?TEIoaWm!s'@b;0Wob'&\>#"L6^mPF'Kk-k[Nld\
+SgL$Ki6EBKp)f)UVA]WcLbU"(c*,j;X#aMn>.(S<c*>g]!9!XefA\5YgB!Id3g&bM
+:LNqMSgVoW53;oO*/^99i1Z>`nu]c`UN'+1JH?0T^+#_^[OuadWgk;SZ<fgW(7DfE
+@.rK9YK>0)>MQ)"dF0P;_WXVRk[H?uA5$)4-.[15B3olHEJiq4m:X^j$=80poi5]1
+HQ\>tjgK[nAq=%'Jgnt?)X,o=G_nCsEQ;(#@;7jeFmS=F8#a_GBLqgR#)R$=I8dif
+WfCLrp%f/]c=J]P_8[]>V8O0)ioPH8@YR%7nFSNY=OJ6/Rdim4r@\f]>2:%O<';uD
+"8cBgO]a61-e=7tFSj4n_IMGK$o,B[WH77R]VD?-16#Dbb+'f)Y1?`)<^Me\Asqb\
+B.JhaOuW?#+gpR#SnY'XkWYQWG0?H;PN\a2kd?!W:7n[1UM#%hSh@aeUoA.<\SLb;
+Lo%&elWELNX>3n3lpYh$f#@!a`p?Y,hTj4ok(]-Zc0/Euff#=N"dJ9&ioj<qaYo"@
+$2(3KVjos"+GGX1mLEsUocN"?N^>h+B]Pu?b7n0\9d8JP%X)EofhNG;)G\?ln>f$k
+.hT_eDS>EN1u#D&5itGke#:K/?4%b3d,CAu5Q7R:@(aselEoD<7$\+JDZl6:_a6rV
+[JgBjZ3sVtg=rJPP.[(GH!+F%h:MW$RPUUTnZN8U?fdfQm.iU,2Z=Lr(u_]\:dJ.p
+hD>TF!mVePMN8)]j0-bIQObDj%2i<tfsJes6k:Kae-Q(9%QGDg%[/Lp@X3f*8F9J2
+jl-/>'F)A]92`W^&DPpg3E!K\2.`kE1p"B@F&>;<^GT@<0(U)#.u-"3ptr2<0QTH:
+Y!W83JDBa]EUM^;0EqSq`[F1:2q[-Be_G=<NE(f=C.M\pF1#0BT1<]^7TJVHFJh\%
+:J'A\9!C6=<aAisrJ9lBjrKEWFBO5EDc`*Vc&h0-+<pURZV@+Y!ZO>EX;4V)m-3Qa
+]9@fr+D#,KN_T47L6F$rDfNE-#1APm.l;h`p7CU'lm!:"gIuNSO2dAVZ3bZ*]Ch<m
+oqd;*cX(f]+SDh5Fh+"_mp^/F@.rtS]Z3J73WaJ!mgs*)TMbjST4g&iM&\4#G(4:N
+mqhbhD7kXI],tMS-Bh+<6BI79#j%@pR&ZCC?lS7AGR2prl:uU#3d4?Uni>6Cf5iHl
+*k?c3&;9"cQ\5&TKcDb4pe+,F9V%?EKY[.''1\YIm*ccL^WIS8>G%Y+fs5ohREY?Q
+Sp+QTj-=)!!d\J7TYkr3S2@$E,E#t7,qiS^hY%MOHAFeD:)@:KLF<.(EVi2i&=h>H
+hiUrqTD9qdH`)2e^KgGbVJZ(AFg%)W(P[3jDL'!3Ha[bU<pk.ORX*,(Q&hMLB578<
+nG3W<H6"Mq5GNO6XnkT_H=&J7U$<ARW-CX(HC8)ek(K%"A"KWiqX.RORSAuog\7Yc
+rLpUq8l<*!!nSV]mU<lsqUi4W=KfVKp&MYk*tbB"Dr-d/nNgKGE2d3USm/_Hrbq(=
+g^ogOANVj:OM+_WGf#]QUC\00Oa*=*3iWM8U45pfB:O!,!?_o4i>SDh5A:r6X^\<.
+rK7-t#QVq\1(XnL,EZr`BJUN^%=k3-W"f[YMh`MhLuJdI(C^TO0rTWW'9GYX&YZQ;
+>W*E.Ts4<fRPP,49-qsL,ZJ;6*'kkqBLp'Y+dbi6F4f7jAhb0_-P3ihb[<CL`omMM
+9G37\WRYUtiK1ur09T-]K2Jui@20cBD05<=Qu?Z=$`s&jfXP>kT1:&$ah^_n#ogp^
+PR;Mm@Q#2sBD8*uju#Sbj"\G$"g94k[RoVD>(p_s(R`+5&a9J9j`H,imhT-8cI4>Q
+>H"#!]rPpeU5gJ(fPQ"K<2XYYo6;tG^bHbgiaY9)\em4CbrRa;KiVX/ksIM;T"Ras
+MXGU5\bi`f@o)[iYjl/+gT*br>=NboQR]9'U5^eH]7S6OX$a81L.YZ&W1duN,/L?S
+1EOK=CpW!C3Qt\H$F2@s9%#!l;aSbV8O>Dd2X5p(egOBg?PGFNU+G%Q+B,!Q#-CGa
+&2t&^FVq7I;hj>B.;Pa=/e.EFj=F&1ReAcpS%]b&0$KjR\rO""lo]05T!pUl;Egr"
+Z@h!R^+YpGqM-`8B`0:$KDZ]S%t&145cK\Pjur!F!/IdRLh+^S;9N@K:bP(I*/74i
+J:o=f9-6F$Z']3YZ2q#WP_LSWE.t)_G\9[u0?V'KL(5e$;,+GM:A+l_lk*74EG0&f
+UWQ"^]cg)b.o=7/m#[^KFn,aE3CpZ!ot,/3@#V_cb#YCjQ=ZSG\&#)L<*-"l..Ak=
+Xd"Vc<nc/!-C!4?:HXmOb>Gf@'jG+s8PS)@>?.e64^O;qhX/n9id@u^<NFe^=:";J
+<7gh!9k:r'Uud=W_54&8@OO+;CuDb_1N-3cV8C&H[<q?J-YQ%YWRLY]m%(pFcs\H^
+fkN`SAhuls)ViruR6/jKD9ksUem9orUEOca)d`;nT&jF+Xdb7&)LL+oL9sTcWNTD.
+X/'MHZ:pt*N`9oTVNnPumHfX>5I=3^-J,S2@A%KWf:/Y"[O."*j1=Sj9\>T:kV_g1
+juB73K\I)%nWLfWohUYs&8kXkE?U??NBEJPH^`i#^2I(bR=)?fhHC,/2K\cF7s%\1
+,qGj/)GZWni`;:V)TM"N$/"snAt@^>R^TqrEZ3uIi_8).0<o@ucK.=K4D*W^qKZE;
+ZGZ*2l+:m5f+Ym]c;o7[E+i<A_oqH=R(;ioZ;\hL*Ql2a"<Hk]1Jmo.f.GFI>r+XL
+/9mDRVE.@mkrI6=NKSYp2o+NK/'&-(=R.>d!6)R3K*n>[1C/C6CkMnER[;QL2buiY
+!u',"Q3n:;Ka1'^.?Iq($UTW&$>e\&nruZ\d[3S)76ie6,]lnn3.us-j=VW("Q2Y;
+-ZC[b6!,338pjJknP0K6a>B_kMs"F9L(Uk9ZO,Vr0Mj6Xkebh&$=c)2L4s4h_hOut
+g:VE\l!XG&k[*+T1h'MJM303L<nA<(=c86A!t_3G#>TnnMQs">++m=fe%>lcWtkE+
+Q'/XbA-[^k3DRV((kL_c6Bk?km`/FJ*Q_i6LTYUW6TI!A@7%.Ai8jf(7Jd_HMf`>S
+pngYS;(l8G.@:+\;Ac:67@aj@/5`QZ'B5g0N:b"QC:'<[L!(6lP9u4l$>p^"E2)D2
+80RD!5u&a/(?"8rOqKB6aOr(*jH73>dI'Z3'7:8MglIZ=?;O#AEAA(66'"kq3CBcD
+WY>427gS>u:mg'*j@$4CE+kh!Jd+fC_H8Apnm3pDM@?@E_PAZ)Oj[,H16:sC9(P)m
+79Q?NAsl:=F'8b^l*AGLeD)LOIW)8U*?cdUl@+Tn`]nbm&!+i6AE83,d_^TBi9JrK
+and<RUT#YR0cb/Z6ENftBb:gn/R&m3GYL/U=c0bD,m>j5.sS+!=Y]n*<0A`'W$$Ui
+flN'*U:hdl2S'h)-o],arOIM2UnXuHNXFnn3/[db%/!mf-.6k;3mUjkeKh3Gial./
+dodp_P:<r#5$#V.>H+?d<93V\g:HQkMqgJ"2=W6:9-t,6h1Hk/(+%W!&p.)NMm9K,
+rNIds=dp_&ZdrC5Z6IXfga0(_p4U:dK%gY!R:<d#.Sa-Q,u1G>'XZJNRNLdB%rN$]
+;g0kSfRj!?/7jRH(XC"TBMf%O7D:tP,o]/c'U2UD;P)rCK/1m38k?$1USPd1PM?pG
+Y]Kf\174CKEe_$,MGc1Z_)Wp<T7TW*0rC%ui$VI"9PN4G>8G3l0^<j1ct/Xo#K?=F
+2C!AtnQqZ.DXbA29olG'i3+M#oO40fOmM2oZhLd&Zl@tPYE9d<QfnTLe87S@%T+A%
+>t.5ope#Jp=EXm:s4h(h=<sag^%cjE@9hW?N4o`DpfdFNM5F<"<X?tF0+_F%kD;qB
+aH4_#'GVTj>VU>c.cb/7f*l@jhm:!VV1Q6gWUe4$8IDJ^m'+Z,Z[rs%Z,))rM@pR:
+98L!W--dA'3t5=F&;GocWNQo7j0En$1>%0sjPS_0d$SA(8gCFIROSqn61Gu\f`W0o
+R*89X.;ccP'KHrq@bY:I8te;3$Yio@3N:-/2:R?G;\GaEWc[6oes4!PCQ'FK[<B"0
+3rnJ\/RHjWi[<9GjX?6sM6h@eSj;CgA@%8SX^(K8OF'cEmB_G_ZJO9g]5rVlrFIZ.
+53+[1;cY<RD2HH@2q;Yt&P2<_5fqlujZ*';o#*2dR>Ujf3/_bI>jJC2G7iQaB&;qs
+,Y$=i2r_p!DK/F2Lro`#2LIKn6>i1=%*$C^0_5mPNg@E2L)fMJ`DuTe347P[d_MiO
+@eK>)6T-uh_@NlJ?:4X`HNs(C>"2_/I=Oj4cMN8g--C6Kf8&Rum4R)$Q)Ga:aui/,
+nQZ`u?#2j23Mu$mS$Sf0rOpR'pIXS^f29/]\A^GB'D(=`<V5.K[JGp&ogsR.Q9>#_
+4',ish.LPNAQu23-D/Z-/;&;0.npcLMr@sWVUJ<&JbI7Q,92kNVgV_*4#_q'1cD-X
+3[(bbk00`B5fi3-oN;*lL!^fu\fGh.koBh,0hp>!YS0<P8VcdgMBhs05N"j(8cEr=
+E.lL2Scb?59<.uf2HpLG,tX3[YNe.sAh+$c<hjp>:`aXH-8G[%!Q3@I:=qGe.!,Tt
+rFTmEch,#P0LQHBQd=[k%*8FE?N6$4s35^9n,i\8]`<XfKCAI6%#-nV(dd^Z!X-5a
+N8XkM:=:GUGAq;O!h.0K68d]`7Z&10MBMq9X<Bo3#*7XK%IP@U.gJMM/8M39&AJ4L
+G&E@MojX@9E/afneEq2Q%FENLA['5%^kBQl%YY[g!aIPlC'5)KLrlJ(jMVIG9J4Y`
+&&Wii:fd]Q(<Ng%!X`TbUP<54%h_K]&S=:9N$*k.N<95!qGBF1YEV,Emg)`C%>*16
+:b&V%P63(+"=4]A@U0<D#ml\].?B:#@lFL%m2'D!FO:[)0RiQX1Dl4Y#&T&%ON?F#
+_#Vj>)8\<N&CCnum1(i)!g)Xc&PP;!AJXG,&S&+B;"f1>.1q3a&5:1ZE<-^`i1I:/
+&[1.*i_'n=kn7tYUEDiCkXq=a2HO]b'TV8hkNFI+Wct6!Bb<W?O[Nc#;\fsI2Xdlu
+YcRuT,7/;F7^!%5Jqd%JEu5>n?%h;F0@^mc8H#an"qH+qZ&]bUq[6,OWt3Y]OIdb=
+*`OAO,4SANb-23q'dqr!7Y!b5OA>"i5R"HN"9@KkTG.ak5Rl.r#iHC[@+#/[ed56W
+"9?pS$](cP0E_BE"9>k<TO7m&a8nP0G>a5o7D:rS4p@gDjDp/1`6g/)#;(]j@Z82W
+mRC>-@4u)/g?X!`P3>iMhB[.H/]%fIo'7u)*AE'O0[g+Y/GCl>o.e*(0hSDtj\6uk
+.Q[/S1SS&<ZSiqi7l0'<1t%J!o/o:DqBRjn964N!Ks*=bEAj"l/e[8(.#BkQHiZP8~>
+endstream +endobj +55 0 obj 45013 +endobj +56 0 obj<</T1 8 0 R/F2 9 0 R/F4 7 0 R/F6 11 0 R/F8 15 0 R/T2 13 0 R/T3 14 0 R/T4 12 0 R>> +endobj +57 0 obj<</Contents 67 0 R/Type/Page/Parent 5 0 R/Resources<</Font 69 0 R/ProcSet 2 0 R>>>> +endobj +58 0 obj<</Type/Font/Name/T6/Encoding 64 0 R/FirstChar 12/LastChar 12/CharProcs 65 0 R/Subtype/Type3/FontBBox[0 0 0 0]/FontMatrix[4.2333 0 0 4.2333 0 0]/Widths[64]>> +endobj +59 0 obj<</Type/Font/Name/T5/Encoding 61 0 R/FirstChar 1/LastChar 1/CharProcs 62 0 R/Subtype/Type3/FontBBox[111 406 392 686]/FontMatrix[0.001 0 0 0.001 0 0]/Widths[516]>> +endobj +60 0 obj<</Type/Font/Name/F5/BaseFont/Symbol/FirstChar 32/LastChar 254/Subtype/Type1>> +endobj +61 0 obj<</Type/Encoding/Differences[1/C0095]>> +endobj +62 0 obj<</C0095 63 0 R>> +endobj +63 0 obj<</Length 367/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.4sm@0").0n]f:K*WUDE\\18LCcfq`"XsF_4b@IE5F^l&0!o&0p(0q3L!&ZES1&<
+*&3Z"+p1B#Y[B;S%V??0G^sNc)MefB3Rl&p2Alq#d*[s;N&c^4k/2`Q@Ws6#7&,n'
+Ki3X[)iX"2R[%om#T-F7'S3(6K4qYgL6?<56G>1]cQtr*9l_CbX3)S^ag?XS)T#Q$
+'KePh[k0K>N<#Z3cGst:8#d1QXI=E;(g*i#6&=[X4<)4.PjDCN"d^0Cn?aV]_`]E"
+CitogSGnL6)[n/sl#uoK6(cM;HegfYJi"HboJ5bYnn'`+8#hs(VdcR2db(IM3*1FN
+#Kpc=6_!Fh;k;+Xo-4XO;q"jm9r]'E0Id,~>
+
+endstream +endobj +64 0 obj<</Type/Encoding/Differences[12/Icircumflex]>> +endobj +65 0 obj<</Icircumflex 66 0 R>> +endobj +66 0 obj<</Length 136/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.76b!JD'p!Y>`J#!n%niX1?)@'HRL83gZCJqugV:qWqRJO`9E!Mjgj:a(W<U@Ll4
+5]f",9VA+O&4$8c:1mM9jS"!dTMT<$3[GQ$8#0$s<4ZX!SPQ1`C/m<k<f@A0`sNrf#Q~>
+
+endstream +endobj +67 0 obj<</Length 68 0 R/Filter[/ASCII85Decode/LZWDecode]>>stream
+J/gjB!<Cnq1)CA>,@SZDCb^SO`e+;JJ6N52%0iR^Y^keG"Vnr[i)C$i(`*U8YipaD
+0clEIUkBqf$p[cP9oS#(Go13;MNnUcW,*(Q%2oXEio.\oCcDtoL!`2bhJR2"'b#5K
+\1"d6-BlT(RT(P/:FQt!KFpb^@PJQ&#^-iJJ='+WP"9$`-*V2>V@"kaEN$B`.(0pa
+KV2/M'J?kT,-XD-O;2.HN+53e_$E;#bf5B)!YD0+C7AG5&@cUZ01d!p[00X6&<7*T
+RV2a(<p\@%(K*`_0`g-^"=Ap4A_8>3C,r.q_ui;u\8F8Fcg([1Zlim7Ncb-2I`R&l
+$7YBG'>Arc.tk\IL>rPQeg\ER%Or7X7MDA\!CJP?"UZq-8d.AZPMZ0jc^X4s\rY8j
+LcWAQrf<iu;FUg:MTTsk-Xh7uNi4EH!#ReTZAa]0nOo_u.UgD-iWeqQVATUk+K2@s
+MVBP^K`^6^)G!QOM]t]44I%26Ou/XR8^`Qk.EQUpX"$^3]X9<6P*9FG##CUl*/829
+/Ki6B`2tl>F'RNY:(qI(2GTH`^4K$0"N`GTo9B27c?"C55u879"#s'7"S4@&F"2)a
+d+"$_8^N^(%nT[Iqe6-Xa=7[Q[>A?:M5$r^5)hZY_IWhFo_MQb--/1L<Pto654th1
+o6-fUJHT#.YNfWi)'GWGAuVb,e9IJ'ah3-JM1R.1.LJhqJgN*:5_:Ej2OKD;MIN=P
+]$'@*M%YA3KN>$.DM'b_=H:XdME#@^]c`"1YYqKT_5L0hNJ!n@1Q8)ta^^)6Lnleb
+_^[i/$tC^,&.X>;6%(I]@c#!m'e98%5;[fV.>9S);3GE@_@da!(%P:b[F,=Z9d[(q
+$@u;>A7gFJ/qZV430BblKqiC?''^XJ<&\!Xot3Xt>o-Lg&1R^:@)*t3ApF=-el&hd
+MNRso1^kUj_D.(<E7-b,K1O%O;i.eVKcu]sNf$jcau5:E8L6E^<Tnjf;coOSFIP2U
+bBDa:Xo)Au33G>,jZ.koSEN70-t]<q8R(0o"qDj4_M2KLDMl=6'F+cP:*2G4V/`+u
+VaZP'5iQo?*c2#BX=NFeB:86tTIMRG$lgYg3[>VX.?9_Jl+B''TB\J+$$L(T*dXl/
+qW/ZC8#kT%.?>]e`IMhD^?&/YQ38UmD]C!S^"./Zs&ULo(A%BuOTuGDNR8J\J:Y`U
+1gG$hZ]dC^1u&1s$I;u3RW\%DgH$#qkoDRY,S$gY_";[A*8B0nA5'l_PP41tZai?I
+W:2#5-Nf/S3'sFKQ5Kmg98Q=>6]XL&4XQgrar=6)l7$3`@LPlF\_nba%Ibph`4f0\
+L'GRZg9LdQCPqmT/Z&Q%`MQN@9E6q\"TC)%0QO7_LfOqD][MD-2Yr\Q&QC@h];eb*
+WZ1!DDpPNR5E]4/+k-EKciM+Tk$3c`KEsRJ;?e0E$4\:AnUrN;QPB3Gkf?F85S.s+
+'ZhR&Tb1.(kXH6%=)eGk)bc$j9jP[RXOS"_T6I6]0U0X_'2$bM$\^QtTk2@]*K36p
+8E:[$djV"1\1q6mrE_r.P180@6Z*&ekRfL_#U#Y&G48g3\p62ak+TTq'4+L,7o"2X
+Lc-Q!Q:jhh'aG<:6C%VqrB6l$$qaYs4=KR>P,Wpb<T#Se#bfR",g\t,>L]$=3I8nj
+0/TG=Rj(f;V%@@`lmC5KFq]$.:@ncZb^q\qY.@Gqo>`Ru>UZ/l^m`RnTf(,G3M;Sq
+>>MQ/$4)/>TCTCT:7uQG.!5c_;79LXMA]5=2%VZVe;Y;AEoq']Pbh;ud`puU;c=]5
+P&t/S\p;fmB5HIZBHAl1Jl3&T/&<Mb%,sWQ1rs!&2fR3EV^n2MY:4E5De(-<;D]f7
+Re,K.k$0Bji6iVf8utt=ah#M_i>n1FoPi.55-"tiiM7#-E?Ki5S&l*!b-[%W:/pCL
+;[BY,]G.G&@]Ii.3-Qb_.]N-=N5eIKCMOVn.<_7#<O,Y)N8af-PAV*s[W#UldPPUE
+Xl;/_a#]b('I&],*EPd[?0-+m3:1/$Y8[DlA]%nl9p)b?L=FrsFc!D]K#YOt8D[^B
+WK1(/^dmPl9C0O*ODZNK=niFM>`m-ZDHR*&LK\oRkVYD$:=`";MVMM%eoWeFiB0IK
+na3Re\o0Ee]_"@0l/d1IC$G#mZ`SI"japX]NUjf&fm9FTm![$9pr@_-I.(9jO8%Z0
+fpap5?lT?4(5Dn2bR&r1KA=9K>6W/aWIq$9@j"UVEC1"pZ-'%<.O64IOODpC-_N;8
+\'F;(lAI@$'Lefp+sd=>R>PHrK8L8Jpr,-RbMp'uM_T%``T%_D@gljjZ(<d!Gh!`_
+>B,Z_ah([Pi>s/n3PNi-r0+beB-]!eORO>9i%lr4A:h+D,U4WR4Iq+>[SaWhT"I\g
+f]XMbZ[8bFiN,`3/p!+K%3`;sONGI%2'*(G[]\BH$9SBf%+`O(P6DOpB-YgD?E.tE
+Gj=:`D;D(q.]mH7(')2m)hXt@XE:*$*D8k>N#:),+)qpXA[uhfbpkeA1Y)qjWi9me
+g%]:@D67QdM[$fK,pn`$D9]_tB#WSFEfa.%8%_T_c^*>:iPM/T\p)ZsXdGSplXI)"
+bS_9%!TZ3A!(I;u9bKqA%^b_RLGnfoY+totZk;/"7<9)Ohu$N?b+8-IQ8*n6#g86H
+rONYcqf'bMS/dZiA$\1D)VnZ>"a%+]e%*3aid4<GD,,Q0l$QDYRG4J'b&=GjjUnJJ
+>--Y2TrGIJ;liu.VtTM3ZaZi;X?Coh?)-dPWKSIk]QhWlNPX>[W\WpSf;J@kd?F?/
+"*p+:*$6c!j1(4GigW^lggh"dX$82HD#Um)`$0m(d@A+3dN2Iq=a#,qH6\^Fk$i*,
+G[c)TYkZ+)^>0`Thj0A0GfLh3F_.CVrVX"UC="sX'7d24T=84Ze9.>rgn@`P,ptgR
+I:t-J^;ld0fp,epCdYV!"@e+K0Vu=i@BJu2pBfg.3X62Z`PG/U0^Jgk0MYHjjYjX.
+&dCgKGN,"67q,>rSnOl=42ND,/35+r>)1)Bbmgat#(/VOIf4j2M!o<.8Tp%X@$bPi
+0#5U>^rjX[g+C=KSq9!\7R70UdY]O$p8H,k`^D?8dKLg="V#]f,613:"CpS%9]//@
+TKrM_g;?0nXU(s5V='74b)<J&@mf`8VHjE2@KZ\f%S!<gisL'cA21r""j.8W0F7l9
+L^B/="XLhdK7aTZ@%-J!d*QH\n8AXFFU*NC#OMHr.$>tILsI;!#j/#mY`q!KNZc>c
+%l"@9E2EdIr%X#a^5(@$CYZq1,/-ku'$DbS9.n8coWq*p^TX$>m"kK(N,mt6+K%mg
+"0iD3:?"Y3[VrIe_qu3h3'=*M!,u99NK2OsN<64c]0f'dVeH6bS;NBcM<4BTLnooj
+*=!e6/ZJq\^mPP.ga9+aKCN1qEH`0k<u-W8.L9#nW$4EF_%n8m4t'+]c7Kkc^5-Ad
+7K_^8JfG">QPj7aVW/"A0q^<r[17.d9]iER0]l[K%!DrSo-lmE;.)Mf)'"cTat5n&
+nT>k6'U4a<kGWRmY@>bqN\c<a),A9-TX\Qr!&Xfa+HYkaZ;i%U@Noi!82=ZE%?d5o
+\K`jU(3%/2Wl6>;JL?59mkQr*9rbfnb'%5U,gi!VjBEs#?Qc*s.P0dMAmZ]N@k,_9
+h6"d<nfo,L@3UiXatgWco"c:u[.@&bhXT\Q#_q$mWe&>j.FJ#>"%Oh;@j\K[0/B^S
+1AN9f]&8Sh/MYp&Edo:8feA:P0Z2')/Ya`^pobkUWQW+1c2f5$;^QO`"VWa>Z=b[U
+cSJ<q.;i8MdYRGR*AK=lh2Z11ZVos@oP73I.1t^.%Y?G?4!-3O,k@UYde+*-%4dW$
+.l(m"Kf856kj&m\0a!%V$Ec4'Y)*fj1(Q;/XtHn,MKm"<IkgSsnt.QK5:[B@%.aW^
+VEm%;`9C%Lm]ggREdJdI=RL7aWY;E]dq^^UXRG5i?4]%WnbFssJM6UT3:mG%PK>/8
+LHtC<nLl<]diBu20.`.GnP:Y)Os)DUXY$g;V39c&!]M),Tf81O0'2Y`B&L-d.f-K@
+-e"\B93re1[anD]P/ta3O0Z.=W()uN3idm#P!&?UEr^iK5!fh+a/K)/LicF)4,3%'
+E$ifVLA^AF!tVi1@N@p.Qq%]O`FOQH:sr#kf+"r`2%\\JcRV:;3uRTkKWo;)EN'1^
+HOn"3&.jTB$4RQ`#n[m(!DsV%7n$/YYnBb+$BA"rYrpEl*;BqZ'89K89.\,G3lfW?
+q.L&_C]P8F4M\4*5"Ys[&b.m/C+@O(<lK+sO's)bL4le8cH4HU<4Zlj02J\8)H?pd
+;5uKBr!<tB;fU/6eNAMm6UfNpXAs]maj3ofOWD@d5;TV!dHX$&nQ!V*<XlY_kbB7e
+XX2C34ECNHC3:m:**-'l=]8<EPt<1M``SMKL$:ui'q6$S4N'Pq%PF5D.Ks"MXP:&D
+>Vm$sL17#;r6PLD$*.o&dMH8mHCD-^=VX/,eO5Q8db+,E=;@$*e2K-_T.*F!G]+I'
+N(YH1cSQ940J`T6o0[';81(Xf1KGMu6Ans3,ck$N"*Q=>(,K+Ah_L-),pFK]Zt3T>
+!F\q6A?$)H:u5^U%7)f"V\Y+CC+1mFgK8OY7J8(eP8L%FVBNBh?;>o9ih.GoNldRV
+<V?)._P^T^,mEoK>I/rrZ5E*:2`/fqAbF;W2.2,=jskQ?CLa4b'4u3,]d*-V!CO'q
+!hj->XJYRc>LqM?2]HW-<9[>X3G7qqp1%jFM`NJXl.5fKZa".[XI,ek.[>Qu2F=;7
+T03jA?mNd#E,TH5^1JTIFn=7ba"qYbnS7M=5-dh&'%\lsF^B._724N$[hW`Nf4_M6
+EY_/ZQR;55-Ll72@J6ZOEt`b^*I=%=@h\BOEg$,Q68B6FGqK*DoM\7XlZa4h[kqX(
+<tg"C^*;+S[l;i.[t(sgE4AsRGAkQ:ohfN,*>*6Q4/?9/aJW&_\gu^%%F=ANO77uN
++CF74?sq/ZU2'a%PCR8T+_$!o<(7%oEd$_/oo)+-=9>Z_X<giNJB4(.0q/:[_$"l!
+"OL">UDdmoj%VE3;@M__XU/rGn7Ef7MCd?e0VC$PO?0+;&I?6_kgg,l;?RQg?R*[=
+&C6-k#)ppL<oYihZ([!K]no!>3Y_;raoiiH%uOJg"aI+1'\+k(Zqj7X)L.*pcom>-
+$q=h*$^f>&\CP8*g8rEG[UW9qkE-2F^]lLCL="b9cs)9k;i<MIMjT2+7*gf+gPf6i
+#ge]jnI^VFTF?(uMPuMp(j\ufkE=2a&<X#P3:i?=$OI[!O4_T)Gt4+/h3@TAEVOsF
+\:^'H%?jo'PF4.k@tBKHd*!;JOA-@J$PuZ;19q,W;9/%uN@,Dt-PUBGdkrcRX$ldi
+(j21,p3/)G8W#taG8Bj5SBdT)17;WMhc.qGHEiDmJeErPJ18W-m)HdXctMd5m8j:N
+/;"?7&[P<t3]1RpBGX=4q9bo3f#fk2U!on[W(UGU6[4`QSMBP\`*emK!F$0<3*<G/
+QQ9bkBjbL2,5''KcCD_=dQX*I@[5PqH62>!2]_XJC[=HenR3]BdPYWpA6)KKQCDnR
+R<>>L4Si75c'>1F0;_o!,M"BF=jM1"pLA,N9VRkA,$C]i*,E]9?ah;R`TK3:3]a]N
+:Y1RVqCS66WLZpMB"G7A)RV0N3NK?_Fn4jsH:=dd;a!(7AK"RJ\rNLcZ</#Q[8(/-
+FTH*D(U!UWHho\!c1Il#n0pE9W1(eg]$=nIRBV")1?;gsNPdXES$BOLY*Ne0>:>/K
+!9\RB2X4V'XW/M\`MfeT)Z)ipqU;Eif53ICEk3Es3[(YPBd;)l\GKF41cr#RJCh[E
+0Uk/.2]6o8B<`CI1V/gu0'RRA=h.`\WqUq3\oP:W/ZX(`n&`R)"D7g`!N^/>\([0_
+]7[?>RS<S1ku96$)j.!L:U1mRK9rK&oms[Nf<8DTHq6Sp-B!SsP44]2d1dNg96ms-
+>Iet5[P,2/85P88#p\4[7sm1D=8B/gU]FGLB4IQn.;l]GQ6OGSI$aQ<[%dK*Vk24E
+KlAlP9jl1A$%YMAOa.lTQu@km,Ai_YEZ%rG3X:T<n:heQPPG$>3<>!sVj,,8Po5"8
+=b2UCa-_tib*ch"R;3BOc'c)r9\A6h]+<*kUWORsb%N5kr6`[_QchB\RFE1E#3QX.
+Bpst?!YlfH'dEGC7+0IRq+QE>&Q4a62k5cuZUV*5>KO[h^Rgs>!nm%(O")BIC=X14
+B=s(dBW"naAV$9Y0_K^b<K9*#::n.t]XfMBg))<qA1E"@KSn0P>M63"l(c0:Y=-<D
+a+7FkM+tCcV"+u,Z>4>0';`[)f6o8RSMR;"Dqa#]VgX-4QO-gt,V\#&.^"HAD?.j!
+IPULh>9i90]Y5o\PWLiOR9C?*rOLAs#HG(^WYQQ2-&K2G4a]$FA$dE7ap6T]Z`*Rh
+Y`m>jR,d0%gTKB6f"ErCc,VCW/)X?CJ5)W"BlDrNO>X%Vh-9=p^"XYmhr6KuhK4.C
+(bnh@-fVhGZ<!]ohD`8tUYIViZU:^uSjhHE\j*V.iNs;2,76WgeL%<?T@W,4*bjMY
+?#O&CdbT8YF(r(m"Daa!5%:5L4r&?ip#u:`l$aq!QT?FAU:#A<mX'oWhK%q-jk*LN
+.H45ShS7_BL#fhijQ[394dkDW;r1=Ajo+QH%bGn,V<rUOhj_m\8UKaB[H!JD]u(3^
+WI+)?_^=4`]7._AS%YfDRD82.nVJpdWiu&cFn/i@k?\D%cXfL6Mpu9411!OQFAVKI
+9!oa7FC.ke0=?6L/(T.A7bh_Jhgp7VLY&.G8([K+$H7MMF+=t'p+OmNi\sBapRgg5
+rbq*$i.qk.dffg6%\VlklO]&U"F6(HbN89<34m^`EuNt6ea3;SoDOLX+,l1Nc%=XR
+@K88&N!7+M5tp-X3>fu7P3Gf-$5SSS_bks&C`jLP7Dg:A^gnQ;)$*'Ui1R/#.N3k7
+6-R&0/V6KJ&h+u?:eqeFihD#m3Znci7AI^+R*oapP)'@;!MI"Z<\bN8JsfTD-P_QZ
+B9D/cL6X*M<TTt>GiiL+Us8'Y\fCQt&Y[8MP\BG.D+gad@\O3p;QVI+73^-8e8i61
+P$"P?.<NEaC:qh>;o,TQ+*+J\E`O)dJ7:=Khs.X:.8U^uQA>b=JT/hR2B7MW_\f&l
+4u&%4@Y6tFc8'DqJr8OiG,JESNfA4OD;CjN_W#RCApmf'KHN,8"9bmdWpDDXNJ?Ep
+^49T6-AW%@hb9,IHlNQ=6W'_:F7bp;#/c"BArR"gWh?PuY)pR:!DeR[q?.>8nGP0E
+S-Bjc9&o^H5S-$j+Z0d$W&XlEG`7`n6D2O+5ADl;RYF+YE/oZ]S*LqC_99cZ%BWa2
+0ume88gLKpQu3iqWKQ\WJP;fnSu:qr'[s!HbQ\o>+e-X[XO)n[s1g<-aJ-RmPc60+
+&%o7dVPs?aUaEB/q_$)hlr+Y40kb5>5_4Q")Pb,h0+19!/-Zq^9KMU'0-Naj+U,]<
+BGeC^k\.0I80&.2d]3X_)RRaSAI5$2KX1O#/%"78"gA[I0Xu'e'i7/(`CD`6WN9hQ
+9rs5G%(\<<37LAqYWs'1nUP6A3Kra#5U.JKFH]&9dmZU-;E]p^d-1-8Y`"g4:)[!<
+`/MW4N)E;e2Q[%S9O+sR(Nd,YG\'ZO%?OhUdZATe/_?0Q<A2.qn.f$AbN8=O65;@E
+*!Su_G>qsmI-4p,JHTT!"qMua5?Y?+9a]URA(+$(Q\IkNY4m@lPVLb>bs`#.C0;t<
+&0;i^hfr)oIoS@2_#mcs<c!f2/$2AKiL"\!2qPC$K0&#=RKsa4f]ALT=k8;e@UBKh
+Y9I597F,Z'80S4WCcQrGZF<B_B9]Y]NP<eF//E"l;8KkKSP:!a,Cid_%LE9I#j!;F
+Bc(,eV;`D:Ko0V&]k5lhBapCnlT"mSH0b#AZ]a[DiWpM/)ie?EgZY;A:9hn.eP,U9
+r*e&lm6n)rcgiPA`GbG<"/'+.0)+0t)sqI>,([gR$LuT++fIO^)t))Y!PDbEA%^?a
+Q:9Un:%%(:?XoJcIi[@mI+!gb(Jj#5IH04t#(M1t?Y6;3fiR>PK(6EfcZ"C`aLroO
+SdKh@9!;g--l9DJ='.D&cFqRW=2=up+i%qK9pIdebZUJuChnduHCNt"%SrMcIr>(3
+^I;?,@3K69n&>8[efOk<e'LjO&=S_l^9184g4>6#o.iibqHibGI#E.k[^_:kT3:t4
+XDSnBVL60fC9Ii(5TE3?HH"ZM2+s%f!5LEm%ah?.#3aG3,BK7T6YJb8CXkV\OD]^1
+R\tB!Z,*I3`aTI;4,#EI(aNeen;pPe"jtisa)c3pJ\gl%d>:qY&/?K)RNFpFV!B3]
+8k>(3'dg3:7&^:2V%J=-0!B7*UXVJgb[QP_jeX4?1>6;j5YNdV#hPbL!,"r5T-/j;
+dK5Lq:<GjUOX(o'L>^Z99$/nfOYN5h2dIt7fef"L<4C&(T%iAcG+/\\VRCOC<6ZoD
+2X&BI7$Z^g)&bCo$XC=YUmE[1iB`sUJoFLA(2(c0jY.(leK0p=C^lNO2Wj)`S'uh*
+:)V#1oF0:hk?1,">6CT)<9p*=[Vh,q\i^EunX`\)5gN<o4huUC+!_boA9,YN8u5A.
+Eba(Ng*)Z8E>-6Wb-;P)=uQUF@hI1*.T+]r8'(f@UhP4>V6&F<.7G_`7'9IZ/MB5k
+KT/nfB2)PE;c1Z&X!7br9G:SuFL"A'7R`&%PKDl]FUD's<^*9!EfX*S8PQoILtL4`
+X_*H=L)C>(=_c,CX(W!387c8/NeN0qVj1L;W,5_pNBLCF*7u'19i2eP%6oj+GHO"!
+@`[IcHgQs@]4L?Fj;b"rp)9=NQ17pl@eX:GNiY\4q\UkQ2O"VU._DSP>cdTfHn^!r
+g6]tpljH0C9bj2O$=QtdD-VbB)58pF3G`Mk]S;D$X]u)W(Q:_MZa-9c[W#_Sm3s>u
+pFrh\<U/P4dsS`m*Pbs<]`;uWLc0J>n3?6Z%PA'lQn\Bs?E6=W?)o3`i1\]R!m>9u
+$As"ne`&<]NI\1>r4?'Jh:nu@q[54(Q:sd=6_^+hhR[I#GVUFIkKaA#D1#pa<LI>e
+f)&D#nAEg$le&7SrNYti`0YnK>O5@@Y:=cm,[;81>[q%nC`%<I=nF,:?$qT9,.3NH
+'2mSuF`J6?I`eiKY:Rk-UAa)\q)]?Z`7Uk>?<5'jic\RoOV)TG,E#Dl+Q'hgG$h\/
+\@;nmk7!gsm(1(nmo@')/?<F7KPul/Z8p!nm@`;7BP:98jkZIj+RQ"`9Nl=&+:T#`
+dnGk/\?;EU@mo2%R81]9fG]Bq!<YYZD@Q]s3W];96B2Up%["o"0-pBn%KR`ab&Gt?
+;g#*`=\dY]cl40/6A87MERE;,[\#u.8$(j`f6[+',TO,V.VUjO+JdbDJDF1!7:8`q
+<8S9^[Bq\)dTI0Z6Z7k$^@la).Fs6\lQ#"u'VP]<qW!$BQ9M2_Xc6A)5A]]`Ak(.E
+e?P;MNGm*&AGBI7gc#?RCWRSiG=K5dDlHOeN[)BLmiC=+JMAiin]c=9#gmdpRj'UC
+M5:+37Vg7S/"S-4+D<8VPineW;sfgs=e6b&[an`mNOChp#hhCjJL3"[FSY_UkWCYc
+oRlL5[-o[(=n:b5rGC/r55oL@kHVBHl$b]X"3HQfE:cbFdICU#5&(#NFMa`j3e(!p
+SeSK%8",4W>>teJB<?A?7>H6i@G6.ts*<$Kc+)m_H#GXL0f)\c3h=*8N+G3C0,rB+
+LJT[18l'RsI9'<EG4TE5e3A05O?EOBls!J`Hq]!14Z>XNr<n@n2=DPqYI)nfgUV\S
+'pt\UcgMAD]mQbaR_JfOm6%/p+s;lmIGM^`cB6Zj*uXd!La`!#Ze\QgcgQ1kIYcu2
+4rZm9/*"7bjJ4O^LuL"n9CtE+eWp=2%V++o.,U[Xjh31S)#-#%Jkj)=MLi:K]WdQo
+J2*g^6oA2\3P3Wt$h>P#g9heU5VW3S,Qotu'K#.J20)3oA&1B5i3f:INGI]&6&-P7
+?T&!p2BX]+J1uTm1kVGTK5cPQ+H@Yehlqp#N,!R.=Z89a'K:qq\#Ca2+h`io=f2h+
+-T^FP>OR`cf>BVa*FOK4RqiRDGscjdMC?i5Tg6DF!Ao([&TGGo!e[+Rgqkg)Q@L-C
+BWnsMCT$0i6O;;QUO*XmYd`+EQkJ^PRR`2@0fUFP`'Jr)3m'Zd#e<d-#jAC^9LLX&
+#-lqa'n_W5UeO45ho+kBRM1W2,[1YWP="k[62L/_=O@dSQGP1SZce9;Tm[Ha;8p(q
+`QV,sgh*B6?T\H4TEJ]93oQIT7)hnF``oRJMXE38BL*:T7[i^7/$?m>3(<`M`B6CE
+&ZIj+.AU39ROiGBft8:d]#T1]7nboXP[,s4]W_N[a+S9CPI8%_f/:p+7;RCj;*gEC
+%3<V%4Y1D;jFYCHdE'KCa:(rf;\Vc=DCOfHW(;ifS4&b?gp!OpT>MdBjE4#c"L:.Y
+7mr)!qR.LslEZp(7<Etr"!0WFo-nLEa<Wf;qCG6,4A"<"`Y;B;Wp#Tr4%Iee7>%!l
+liK^WJN3"=ZoeN!'PpC*7`e"g%=rm=Pa9<cP(S905rq%`m%m.hS$bp,*Fhu?ZVq."
+]JU*;8'J;*gK6t9T*_SA[Bo$%\C[O$Um?NZK;^VZ-om)nA2YZB""RnKWI,>H<3k1p
+JNtUc-oh;.-phl1K*X8c/2b0&2Q:J4%KjX/lKf$44$NSq25$DUi7Gm=_o)isWVG@.
+,f[Ja?'tM4/K8n$5dg_:SXgl;:3e4eOX\5c;U*_F0`+2]]!'DcI*TR;c.do8A!>'*
+H::H8T">!J1rlYuMlXEe0SrH/lG"%gR&gm&/0sSVUJmGJm[stp/:@F6\[oa:o?9L0
+3FlWdPkNBjXg+V7S!#'oM]Am'eiDaFP_AR%dkf;/gT>R1:aEB`oVtCIQoEP#9SA<S
+iC=?mY"]8P1XePr%&5G+S&]XQ:>4En>]ru]l-UJr:dj69n>F=E<`)e_d&T=P/K)m>
+PL6_NYRMULoc?p1=432.;@;:#dRd:kT"IBgVLsPkI.o=1bcmoM*CJ#?bpO:[Z5TKr
+3nr(\eIGC@+k!\.aU8U*,Lf:AT$emL%=3^;bf<P*BIgB4N="WCAGS!4$dl%Y5%>j7
+f[nFi*MttMOA/<P"YHndPLB?n$fgPHAMVasmF+rE,$d`;Kh4mb3n1PIZm@i@8eTCn
+4%\Mk8#dSd!u&)U6I%_/JO*%0FZ#")A6(/eJ[<S-"L9jY.TN$5^eCq2XP&lP+\P3/
+OW4\BHjZZcs1L!0UN@!YOgDk3s1opR_dpS@AS<q!&'N*[2'mH>o\1WI<Aa(TbUkHK
+[9\ce>/D/8[F%hf;=4b+.KN*:;D8deHmjVT&-A4[K7Go`?p)ZS3AriX!DjLI8U;`M
+cU,St#rj+2a>X2,2M4OTJH^o5W&]D3a\8MR9\;B,@kS->dS2RJ"!#icACjgQd/cX)
+$kr]''0%?F`MLE&&/7X7BG:mMMcj.,!<>'2E"E*W2HY3WK;2h,TK.R7X'3ALQEnu%
+GtCkjVZRJkK/7ci3"uHOdb/S"K=iT7(c3RA1Q<sN%7JhaRSb-5JYU=?PiD\;j(jgg
+=][`B[e3H.<Ponm.jEXQ6gJ[Abk+@LE^?GA=;b8o.s8%9GnNX^=@1S-$HZNFF0;d?
+g`(giqQX9bK%E+_cS`l$.>uu.`)dB<`XU);9",J\fo?46>jW:@C:mb,)_9a6<ZM$+
+SG`qOfA$1_h,NGqgfbQ.e&D7f?(DVbC<&D)gY@`q>\+&"Ro^.!i*=peOYtHDC!^%#
+dAMD(T6bqA#g\>er`^'7!]=jEgg`R>F9+c>4j1pXST@(/703`2K30B$d&MWs1B@Ij
+JHY'ukd)Iucm>LNOuS(hR%T"D^04cLVQd;_U!K`Lk(t\b4I[GMUYgrBPDhs.^lulI
+o@^r$!7rP!_$1""%Kt]r#,W^Q@$V-t2@ID$%8MonLlN"%WBT8PZk5"2i@5.B4ept-
+7c0GPijG[mI:8pH)-5T42_H$`<WQRW%hV85?j7]\Ad;c\$&^,SXtC,1V!1X)K&a8P
+/SgrEe`^:++^U_V&5<SCN^!oNeg3;_=6#jk[G)"1g_M,?ROO#!)qNp$aZkJt^r:k2
+(%mD91I#J.3i1>67<M=QG$_l#>QPYq($[Xb]d*MUh1eq*-<B1?6d)2mj=uSEh8WO9
+?!dSjUha&m>NqN_^+L#8hMm-g5S8k.[=Ok4!t6T/!&aob0`s#/""5o*!H/Y=KG&["
+/#3c?43Wc,OX4s/K7RqTW&31H2cs`)"/%T(#&F;DQKI$/K7),M,g(a11YSm;K9/%p
+GWF!NHGW^,%b"r^hL=VF0\LOsBNR#m:2,>TW`ku""/%IQ/d[+H'8n!k0=tm*b#X?N
+QY7L&=dV&"]p6hj1M>>u_N9KQENbQdk$3_62VEkD%?73:OCof^27P+^E%5P`I05Qh
+K<AumE&3,;4&"J2%MkjQQD9)0F_In4gScfYPUC0A3G3:l=\Y5dV2F!5@@^o,Ju/GY
+6:<])@ol-`#rBh7bMB@1k$S04l)JhBbAE)ndt*`Rj/n@(HpV*O>egXCV<GST."R7J
+=(e0\g:/m&?>8WkH.['I".b9NV2K/dN*2aYk,:4k#Vp0BNQj)Uk`r)>L`HjH09MBo
+C^.]^-FmTT$X\?6@:c<m4eW0nU.dHZ-+QM(%MkAq@L?u[#ilQ?DE824'bBH_mLYTL
+?mB'&$#T+^Qc)F#%A]nNinA9fQM?AGE%;#GB%n;m?iHT1i:;d346YV]!S04=&CD&7
+<:.fZ?]aDg%YZ690P%epNOs7>##IP@1u[:Kk3*K]L=F(WS]tEjJPE?8nJ'KX.rO<7
+DY'l;G2jnJs3$CTQ7*GNpa]^UZ''A5MYh>OYaf/l4CV2o(!EXr$*HVK>r7s@6MN!\
+8='TG`$O,c6N.4.pcAS&2HoLOi.h9jq!D4)A_Q8ONY"1&XNcA74P32`#k&C0YW$1P
+25UC=e`pD%(qR;Gfq9J@Q7h9e_.")Ig?Zaj!e;PJE1OJ*&-<+dJs[g83%"c@,(auW
+$4/,u.]SOiTu2-P%>YQ)M+7g_OHJ"WPK>q+a$u<Ok6#-p,2%>QOT9L48*7!LFIu<o
++Z,#>#5$"T8V/LLa;K+Z<t3bTK:&s(nHk71&/BcXMn4ea)bpD=8G1>jFl7hH8J_i`
+LCo&u(k5Wpe*ENBAdGa/Om/^I4I1/AWfCY$2!8Lp+Krn"D,hdP<>aj1mr1l+T+Q][
+F&HNi?Y^RZ)g1=TpNW'L-X?@@BD7e#%Uk,\62#NVTD)2lFq9(H(LId<+]cr7:#k&n
+aRQi-$S!@[Lr9J0EG,df6U4gFPd8[G=H4JL][+?O+6_(9ZIE&Z3".oZ-W*;5ap=(@
+)4+I4&]Nh%EK(RK"i`#q05.Q?)J9t]fc+n:(;WW[Tkb45$L&\;dn+\Co778[NXnpE
+UM.W9JX:WRq,+>X(iPQOflm0hBT!6'q!Xo%R)P_RWupZ*$t#2)B4STWR/.Z(JrAQa
+o!n+,P(F:Lql_jjq#Or\P(JahmJ:,c[ANiGZ2>u`%1ehQQ`Bs$)14'qHoS2oYs=,<
+N-N^RJs8`hNr49f#j^uALnQu!d7&&br^`(Yj/hF$GT5\g%t-_E$oj+b03\ep$H"OB
+rD:K2R#-7:]R76gqO!Ft/hDEH]7EK/PCM*\)7=gRnU'0Lqo?Bq;hPop4FS+]H^rCZ
+Kqh%l'ESfYHqCK.f*m+XmM8=]>n?Fj\(LH/7kVler\".u4f86eX@"PPs!L]m^WpW1
+(5Mt+>V[3-"9h.8-r<2DPmp!PBZ+.3)%;7/#`-Q,3#i@HY]r^3XUU'$L;RH$Hs6Z(
+6(n:QfV#)jM%+&`P3Gf.&:k5oUCkS!1bfpZ,P(@j8k9;?%E9W;]WMJCO@#Y&k_)K=
+1Dir%@hHZaOAQnDlW)(:8m>;Ldc)uC70m-QXc.+N&XAgD?&VE+P`!+9MH$G\WWR5A
+gcu2a%L0f/T\+<%)%87o6)`-qD8p(k)(_W4jtOg]%@Q"#7jgXN%!7,=2KWSn(_,fb
+h1!B`ZPm[rfk[+)25`9G1]"Zc8r6$^m'`Bl#:AV&O6QCdq@*FEEuJ!O=m]0q[G:4j
+38P^4h]J,XF)ed^#=^dr)q@",4mt_RZ`!c4cc`We+CToVo0)M'`#BmkZQf-.%J-=u
++CUcYqmVZ>QN=Z.]AV`uYgS.+4:d6WaIltGDT">k]E%06_3@d76I*KC)Ra<'m1)Do
+XD[I7/h@M)/rJ"`dQu7G`#60qPNqVRn'mSQag%@?+ej!,%1u/AMMSbHC(+/K^Ja@+
+0?MV7@Z*kDF2'<O/Xj4.1ujr<$7+#VK]"WpdlBJnaZNJP5E3i^5>VbRADB#K-tXEP
+bfFhW;)B:03mk<ZBh6Q$]7h?PXmH'M3_ijC519(U@8XUqMRQ)U%Z#/m`31aW44#W$
+B,L_F/IbQB:Ldfse.b"*r][X4/QYk.9BQ6,'l>[".IULIfK@^OD[A^q%?kJU2Uj0k
+>IAi6b/8A(6Ysk`Ks+q7;1.n4=]UgH5gbph;]@3+c-]u)2q2hC>7<p$Y"7+YD1YA8
+@u#'WDN5M^iRX*',"U=''.u$2/A[1n1Es:>j3EV638^)E8N8W;jQRf*O<Ym+>FBPo
+dNWdn7@H>A[(aXUnud8.BCNoK)J2^&l'+'HQAc^9QA*GTkkDd'kiu>o=]=;HF17b%
+>#p9J:1-nnZ2m=MQk20sct&3R6'<t1KEI=Y"Ua2gh6`!r;X?6O+TReBNBmUKTWq41
+5UM-cfX_n&#YLm2,PtY&eN'Rd\&iJQatt)Ybs*Gpo:2t2c?(30E7]3"(>cq6+bnsu
+F585Zf!aCi;:Ti<ACK.S*LA>&#0Q+Wf^sUHA(u/'Jts<jd8t,CG5bqSk=$FfHg.`@
+J"Gfu?,n\fHMmmKc$@%l:%G,R#K9tjs$*^9I@iI!m^1uFb^b3~>
+endstream +endobj +68 0 obj 14901 +endobj +69 0 obj<</F2 9 0 R/F4 7 0 R/F6 11 0 R/F8 15 0 R/F5 60 0 R/T6 58 0 R/T5 59 0 R>> +endobj +70 0 obj<</Contents 79 0 R/Type/Page/Parent 5 0 R/Resources<</Font 81 0 R/ProcSet 2 0 R>>>> +endobj +71 0 obj<</Type/Font/Name/T8/Encoding 76 0 R/FirstChar 12/LastChar 12/CharProcs 77 0 R/Subtype/Type3/FontBBox[0 0 0 0]/FontMatrix[4.2333 0 0 4.2333 0 0]/Widths[64]>> +endobj +72 0 obj<</Type/Font/Name/T7/Encoding 73 0 R/FirstChar 1/LastChar 1/CharProcs 74 0 R/Subtype/Type3/FontBBox[111 406 392 686]/FontMatrix[0.001 0 0 0.001 0 0]/Widths[516]>> +endobj +73 0 obj<</Type/Encoding/Differences[1/C0095]>> +endobj +74 0 obj<</C0095 75 0 R>> +endobj +75 0 obj<</Length 367/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.4sm@0").0n]f:K*WUDE\\18LCcfq`"XsF_4b@IE5F^l&0!o&0p(0q3L!&ZES1&<
+*&3Z"+p1B#Y[B;S%V??0G^sNc)MefB3Rl&p2Alq#d*[s;N&c^4k/2`Q@Ws6#7&,n'
+Ki3X[)iX"2R[%om#T-F7'S3(6K4qYgL6?<56G>1]cQtr*9l_CbX3)S^ag?XS)T#Q$
+'KePh[k0K>N<#Z3cGst:8#d1QXI=E;(g*i#6&=[X4<)4.PjDCN"d^0Cn?aV]_`]E"
+CitogSGnL6)[n/sl#uoK6(cM;HegfYJi"HboJ5bYnn'`+8#hs(VdcR2db(IM3*1FN
+#Kpc=6_!Fh;k;+Xo-4XO;q"jm9r]'E0Id,~>
+
+endstream +endobj +76 0 obj<</Type/Encoding/Differences[12/Icircumflex]>> +endobj +77 0 obj<</Icircumflex 78 0 R>> +endobj +78 0 obj<</Length 136/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.76b!JD'p!Y>`J#!n%niX1?)@'HRL83gZCJqugV:qWqRJO`9E!Mjgj:a(W<U@Ll4
+5]f",9VA+O&4$8c:1mM9jS"!dTMT<$3[GQ$8#0$s<4ZX!SPQ1`C/m<k<f@A0`sNrf#Q~>
+
+endstream +endobj +79 0 obj<</Length 80 0 R/Filter[/ASCII85Decode/LZWDecode]>>stream
+J/gjB!<Cnq1)CA>,@SZDCb^SO`e+;JJ6N52%0iR^Y^keG"Vnr[i)C$i(`*U8YipaD
+0clEIUkBqf$p[cP9oS#(Go13;MNnUcW,*(Q%3#bQ,C02X>W3R[L@]J&fVi;\*Pk1L
+5r>04'T>NNO[2+*:F6W@"?Q'H5YNPfaWrSA&:u>L%Vap\"[H<N'OAnY6;T/+/fY;>
+19kN2>VR4W,GdaRCeur*MFPJa7V;s[(60j9_8QKuOic^#UbRgA@Q5M:$+e4)aC%=K
+Pmp!Q/Ck(s"[u-B!<F^,C=?c!j"USkJHR<U$Y@s;<,6e"$t>ttV*&`k&622pBL'XM
+*"[<Uh?..6Vnip>qY6*#'P]>:NQ)Oe^,rhE1otF'W&j0n'JfnX:nn1>X>@*WWXlm]
+rBH+2>lVSfJt<mrW;8gq,[aM`X!];>Fr-$q.Y=A/!JACkW5u>M(VM:sp)(>k]Q=qo
+!K_?a$AthhX/d@>:bErCUla0LE`A5LaqB)u-;&<#W@Q->bbH^^En%-BbS'im/2o07
+#cU$#q\5O-;[g2kbL:k#36m_0lSqYgbi(=Sdm.1r-o5]06-aQ%$URV\4V^B4PN:$f
+:Z7hpb"1#>),!mB75IB]F/8Tf_20oSK:s\sOUWL*U0UYA:II=56)d"<PpM!H='J\p
+$qDJZYDRRs3/S?)&4S-:nGie/ZBuNMM\L^c-L/O(XT\cnXsAmV(m$#"_E-6n#U5@^
++c:k"Ua1h,U?3oC'B4@C7:9%e(ppEN`l5a%?(0lTPc.D%c\usO!emhnA/[;3TMQt4
+_/qXS?>3.H2FtXaH4W:!!8o(*M7iWOLBsGfK&Tm*<4fV1)ZHP,\2G^g@_i+GG7'4u
+iprd7r.dQ^QZ.q/-Lk[gB3:Otr[n@2qJ-8NBG3:WL/Gepa<`C$RAbk@pgH&5Lm%?3
+<Ya>,?GuO@j*Bjn;_Y&[qO@a.;HN4?BdWPHL,9;`OMW`4K.,e;Nana11$M[FCm6)6
+ASQmmBW<^d,A?IbP#P"ABSYY_IjU^5c3&aZ368._)8^9,T%Q/"TKqg/kc:#SLFc_e
+^P<`]/B+;+J8U7^_\<aZ]01+GfQLGUPT+eKAkD',h<YfP6)p*g(GRt>o\0SqA*/YU
+Rd7J<o6V*ic6oUjc_@)!Y@Bf/9eU_"mP5-O\dFarVEBj5&Df<a\o/(X*(m+Q/i?k,
+G9YZO$^Fb'Xir;?&4mHiSN[8eMRj?akgABH3P`Ss3g6QFMNLL8XA.<\_H)>]9=J[Z
+c.tIu5jtBH2hY"iiPK1\?AaAS7S_@n_Y9Y\P`\QC">Ln(8$I%8UbcfTH*=pqI+[=$
+AnW^:oE#+e%)JqBB.^Wk[frB$dO6LNbVZ,WpiaL,0pW)qV31q2;&[[S]P2-";3;Se
+img\^,mq'%',VA^cR]JNY!$#[kTI'gr"F/W*SI1M9*X>=dt@/nKWgbXlsW"=Gu!?7
+41#G*,c"NcYa.s(P/]s2F=;p;.Mt>nEqr`B6Z!@0oReqfO-/r9.S<+.^F&**9&MuE
+J[(8',VBE+aD_Q]bS8)45qS,^p69T'fh/5&$K5fn5r1g,OCAST$!FB5N$'+*2jXkX
+EX[H:7U(LYP4b9Ef`V<!KGrDh'-@@36r?,;_&6YVf:s0-KI#-k1c2Mtr4cEL(b19u
+dN'FrFE%oKbW*RA+WrPCT27"&X&pA(i/EM6n5`">6Dl(L7$;\))I:7FF#Y20baRt^
+:JR+n@u4#BIFQ,6'D!/$.BG_0P+E96pP;GaEN`c6>&@$1)UmlE;Km%bX"u,BB%'ob
+=eOc%Oqi+()^<%Ed8!i`@Y!1TPAPa<Fni'AM*fhkG]-=H^GlH$i>G7\J',nq33"JM
+?n?\VoL];7km:b^#U"3(JdNK$9*SpRV`HZ6efRCeH'i\VA[6%c;b11E+oD7b:hAqB
+3TBaje(g-t+Gs1B#:lO.@ou`robck$CZ=F]DG*GQ^N]8Jk`$Q][J<ce8hj_Dh844'
+%F%\L'4U<E(5!5\PM%?I9&U-fKU-$V+'P(.m.F)!":@ah1k.V33]4NDI]Zf-]%Cd%
+Z'I+BJAm>O%S?V7[o3(Z<sZgg:m3Ghm(CK+aO_A@I*F@-ahq3'LB+9[H?'^7Y;o/S
+8n8U'+SI!I=K*$,*>FKc='E`HWC"=:jdN&#VXR135:^Z2s/_>^dZHDI<!_l,#,a%W
+?cq6];D:fS+h>J7ae^VG7GY:lb0K#3Rus8kUW"V1)G5#\.W"217!?rLOeaU"(/c'k
+F4#H%_YQ`65]?i+Ns-A#5hmr#1^<bO-0!$,2J5d(Z3=#ajIB588q'isGr%#c>e"*D
+b[kqMM]OP"\emfPL!$7UaJ$h?Ao@:3`OY!%Bf,h)oY*q^g'+G=3RL[,*A!bf^=-DV
+k[Vs9\$^t)pXSn-I&I-]TLC9J2>d%_Xkl9kZndD6$M,8*'EO72)Ekl_PD/F2)N_I/
+c;H/1,4Q*hFO5&m\tcB#C+c4!=+<<])aIhfIMeteMbLe+ICX?D$+:5Uq;oZ&BYhn$
+S?5k?lkekdMVq8?U!Pc<0L->B!+c96KJs*#5S8VW_jJ"\'F'ZQ)09N.6Mon>Yq5%b
+[PDGDF1VImSBP).q[3QX0GsqBOiC(8!0].2UG:Ulb*G]*jK):DR,\4jn3[VE4N&4\
+4:&o.\6Lhk30AtM?H1\bCJTX7I'PY9)L5?`ZReDqo1!*pfo[codkR*;WGLs\CD'.M
+JVM#[IF\/PI,tP5L2tRFbR@!1lb+8PF(QB:ElVM%^!!$lIY6K;Q[A$,a/'l0U!n=4
+7d;N*Pa4,oQ$M*k@@_+fYoa+fHNmsDWUd/>#B.Yfl)Nn4)B!_l9AE/FL$kb7]C\;Y
+dCRAIlWs\;pci92H32.K?JEEm#%>qG628maO3%,Rq;m0_Qt2e<XR\#+igMPDlil^[
+G!gGO*Wcms7Qg.GXYlH9dJKoXL"Cc0??dMLR]2_kqJ2mT#`RFW+bbm0DqF%R%p%b0
+>k@B0jY(6-Y$Um`o_?='"cl3^J7Np9:13KR@8I$mc[%@mIcoqIpeHLYAO*jU7X`V<
+r2`rd&(!Y#Rfl8R"J`arC0]91<lP[8QADb,V'L7O*'<.X0g\q@k->0q)E"8.!bOi6
+a>d&DN<5kS0l2`?Bga)J>l;g5"gCo'8^bQA7ga*&Pn7IdO6FsQ[OLE"<l^=%OF5Hk
+\=Se8^^uIlAebbbD$`td!fp5WYh7$o6CY3f?LUY#n?/gk5n@dl5>_8?%06jYcN\7I
+d*-1HUI<u`>7C"IG#/*iOP8bl0b1FJ@70JnMK$_BmP=;f_2S#tOJNNXW5Xl#WNf4D
+:q7/i"VG^hW(aZ4ipqn%G7>-8.\KTrd7POD3=ZUh"qcIf:mVl/C=5EWe*S^uccA3\
+!=1AYcS:m:U/r6DhC%i(e?N\dZ#63Y2EM%h.1Q"NY^[J7`c.ZHW/,R8;#^C_W='&d
+VX;n:O];PLI2/bug_&EOMN[1t)]S%iH4+,Q`dZdL*o>t"hk4d>i`*sugu%-C$39,r
+i8>"dc3u''%H-"oTZR^o_@J)QaY#(&mdSU63tB8h#[l9oi5Q465Rr>$"9>/"i/.uZ
+_@/]^iDOA:`Yp:Y0b*YC!q0=q,.Is[;GAcCma)T_CMZ",Y[L=LjA1$sDN?5%Q;?rY
+"4$DN&;pRLO9?&X0uBg`Nh?P.Uh)0W.PNXSVH!E_`!$[YWmA9KKJY>0LD__slVTSl
+;RIs8%ed3$:\(>7EiS:*I./ns"VR(LO+K(sLG6$L7Lri#o#UVR<q6mP/Rru#&#Cms
+2YtPK.UuI2WQOjNb!uSZM'ElP0UPDZN9$/+jO5,"?umd#Bdr'M.Pemsn/E]ls"SPV
+2Y/'oZR#_FHSEotqMuLM:V-A-eFJ69/Zu38"H>6Yj#"()0!??;D2tiXqSEU?\F#f]
+D4ncr5.Slu\dblqlpS-2\?]ta6-Cf&_oRH^f":!&5:-m=B3RS/in\P5$ErV.b[VeJ
+EgDdS+XJB_!tIg2oZ,B/!"Ra3o4m\L+"NN[2i]aNZV3p:*:0_.0f*//')N>A0ea9#
+/!D0:e!.\1=>Zb95\;5JZhd"0rgblY5Z@;3Y[H6A#sf,;XO(lOcuaU]E5)i&#V_#`
+;)pNZ3uBaJ@8NLW0XXEh>sE0`7kEdMn?WH)$V%LQ$aF>0mEZb(F<Y:`GAc#(:jYcp
+rsi#-8hih2O[2DIit!uO&<*AW6a&uG=\I7fW(`kReB(@"C<Fr;9b;!bjq(>PZOG)b
+4S7_O`ZZ2][Y/b&n7+4&K,uhAC?$XGrD`,sd?csM??ERg:bYXi<=)>.3n<at<NXjl
+XK^'9LsY,s0`i@nW4*$72bu22@7/@9ZXFPU@p!kR)XTgkeHG7S@hmOadab$beJcUg
+G7jAb0bMPOe0:4+dR_j&qr2B3Uc+!.Y<S![9CLHf.W\(Co2/BW,1WS5Z.q@)Y95<]
+>><EdbMs`MJ@9G=0>a+_UTQ%4-W90DXoP8c@*/tBB-s:H-mQ6AeWWEK<A3sK0Jm&q
+'O`N`%m(Efq%Cq.O!Qi)Vc$HrqNJ;^;n6G%lN/j0m&4kc`%t1b<C6:k7?f_i1g`"Z
+QUDLuq$[@:&"N3f*;V,/1e&E:<]_pp63S`O/<Gc1B]:bM=?L^f2HG)'EuSc_]/_c<
+3Ni0<p5^d@;_u3(1_uQkQ<rlq4`'SrB!olG9HMl%0%m<S<XY0U9+Ia2g;E4rgFW'Q
+Bd5gFfHJ-Y8J<Z_Z2$qEGZXSCQ;J\n_T"A5.q'\U5@T+/Lr2,o_)Bl`BJa3%.?+IS
+(tXU+<T5TN/^Hqjo5Vii>pkn7d2PWTY(V"4#,m:"nTmaUSEj"-SC'\@KT-9lh,O$K
+<-5B=7?)GOFW+e9)RU$#(KYdFE=;<Q&]t2MON?g5I:5t$:3?8)dYMSdnTf:6:N5Jm
+WM<8`B*U@;'p7Yj8[hLG&TP;E>8;2.o[A0:f2==K<nGB:'ugCgF'+Pd$)h!Bp::D0
+,19J)7[N:\\#B6an,ZNi.X3TO=1:_F"*[,]=1!O&k2CP-;'GUom86AUp_c[j`>#E2
+>,W<gQn]X`Wud8Ge'YFI2uA7eE1_AH>HW!2Q$Zq`593P4_3NCP3'Vkr;1A2pV\NKp
+2<tV%WF$HYL_j9&Op?ebe<Z77+Mq0kU/N6f*@9-B-:"46T\'`l'FNdH%"RON&_TE(
+lo)f5]BHIclF8[ND3%]TCLSeZXBCKa"[SE"3H0,#"3iFDs)_1s%e`.Yp;W*3OQ.ZY
+1'XObJ9-r1Mh2Wu;M)HBbRj#;#Erkl-FA,\Gn"o3>EA$jO@k4lq$Ki<JqmGs;=P`!
+p\U*jeHc;'8aqX`Oc+dWO]5/Kf7XNt)#D]aBojm<HPrJ<FW#]!)2OBm1!n&jq1Xu3
+0c8PQ=]rj"e1l4<7R'`BIOVt!q.6"3f*aP05FHS^%8!$dCP6gR&iD"G#d]LN`HaJi
+78moKUK&!%fnIG)M\mkf-VL$Jr+e<.("b%23U_IL\I:34PW([pq?)m9,nCgLI2S0C
+Qs*nnQ[O&GLWr,Z=f%j\W>a#1V><!(<W/93`$&-oPWAfB)2F'2fcS8BUH0ca)<W'K
+iDnT>h81b8=_umgT%l?bN#FWZC'0EsqMQ]+3Gg>Ipt6u:6&k[!iBW>Hi8P6>apl/+
+%lj/EihNQME><B=SjK?:HJg)Ga<F6XGki#N2fd)t=?NO:,J(B6kco[]c'4GpE1(?<
+-i'%+@YSuUY=Ef?RZ<o,n!<]G@X@(<H,,1LKooJ/Qkru2qRqG=L?)EoJiAsjg!pBF
+SSn)+ZhlDYLR#$qX-pm$ZJ+K:=aRA-E=?sFJB)Z;0\(R1D5?6R\P\'h2r04?CJanT
+Y$3WX3g$accanic\(^YU'm6.2E'E?-@N!"lq\%<#PFSM/7bO%E=c69`/h23b\,.q]
+S$[ne41i,,)k"%4qo*pLp,h\,[2[R-jrM-i'Npl'JY\5d];:.ID82Q+SiUF?3b]Ja
+cb%s1T0*.P9lqUlZA<!o@iNgrnU(Y9O:PNM?T]dGr%5N?Wuh1G^;tPsgNAF9A%oPM
+WnW/qOr$j&bWRkaer7aYnmAI`h@;e:-SflnXq'DC(?)D;i[K[7%Z9t?/E7ZqEFSK'
+'p`iDn#8@E5Wlb8ifYIq&FCE-bD%-q=$=Wp^pViCZ'M-eGr',/2#+LN0dVl?R7d5!
+k;Q3Kj#9i@QqPXCe&FF!8"2QZUEe"g'pj,_YT/2-[s<clMp@H5[:WFH]:$)(Qb!`t
+[VQgS4O;4qMn9uKHM`!84X;2__13LjQC#Ft]]B!B)gp@4e95u2)rH'JPaV@5ef@c<
+RV,IQMq's,ep4``C<SQY1?V+=c@'mQg0*%XMG:^RI643tpCGrI`RUNCLV)a%h4)1W
+J(bnc[4J<+IBRoZ9_FhbfAKN_ICqF&Bc3@SdbVmmE3#uRWSaFOhtqu3JpNq<B;]E^
+3G=Q3%3,hSI<)XR)Ff^CYJI0.dG00Q_YU!])#%%e%&^\/j3Q?;?4Fs1gW1u:i1nem
+`G#;LSL9F4XI/&O)!R(5nN8qIGD!t*h3#pQ6-S252SrP?I4MrnC95@$jb">g^0V#8
+@i*fIcm((KmSF,#o'&Dt2[#.T4!dCk1crF#P<M(-*^2kR`TY$ed[WP3>qlR#>!&=t
+l<@9&4'>/o&YP\IH+BB,]k-T&bf-.W9KcbL@fPZK&(9:d4X;VKm(;]"Vnq@?_*_3>
+*r?8Y.t/')4[0,6517C*Qh10HT73-l)>kepkV)r&]j5uqrTt798^rEQSX\`8!iPQ0
+bOc])pE)QbT,%"-]7be,01%"ThcJqW'AG`[gO4XHH<!`=L*jK;hqpZBIma(H$hU"?
+jaJ)F]k-In-3Y.-M;D,+rQ47nJ#RR/r>M5mISIjW_tRLQj^/mfC<`ec$9r#B1p?lc
+63(RWR8/>8J^i?T&/EG:6_U/N<&F`5V*Il,E\8=?7Nql+`\K7dN!A8BJ@KDT(_"=a
+d?rEg1`R!9V^!T<`%$\b@r^0!L.<O-$qA[%<3TRSPfgoXBuK4h(*#oGPqeB]A1ekG
+j220/e7DQ.)aQfCUdc^Z)%FU'8StJ<+=\607Bo-`;DAss70J09-8[,'$49l139(,j
+'UMFFW2*VK72jroioq/?9h)!QV@tDT2K(SZA8c`b#$QU$N!kC93^kNZTVmCA+KCgG
+WZ[Xf"iEJod_1sN=KI+2JATY?PDj#B;/PN-1`MCV=$]*lOV6bKH5mEkcH7j[nm\8o
+obLjoO(n1U?&!6(0q$:.1Ts"91$bKE3a0\C3l!1Y@[th(Xh/W302BEZY,gjqjPm6n
+b0o\]cASRb]HNLdj[.."gulQ"oJ.*c0]U:nLCN<&)neqGg<@?(CZ<Z(NLWo^Ulf`N
+hhLUjL:=Kc)sZ-,8u$@)L5D)#)MTl>JHn/re&Lc,;#DgO]C)n=.RK7*U)6Nr.tI17
+_4YDAL&n5hP/Zf]hP<W%Rq0o?o1[aoa,f;0(<@$p@fe+m1N=Zb_9+Ok7BgQ]#HV\h
+\MQ[5`4kJ09GJc4dVeEh&lK:raosgsbY9]S9g^Wp7VqGS5h%N'[5A/r1gp=/YQ[s+
+^sY2-WJ7+8GcSg/$cPTFUN#Bm//.&L=j?LP<;A?CCt@ep&kqrl1Jn;:Bh4Og=_:CP
+^h2F-+iEn9WKk^4gkNY7=VfRSQu@2'_1g\N0!$6"Jcl.:au57>Yei:N5tokdK`am"
+19kY2*hB&sj)c8HiN-"E<@m7+WS2(K-PYRm^d+TlZ'Ec][V]2oh+;%bDRec9ISi.&
+9so/F.rF[tNo"u^mZp_n2)>apZ4!D3/rR#O']%`0:c@:VF3;odC7[c*jET4cNl[Zh
+j/c_]4&h0H],kZelh\>$QrgmORC#MMeHoP@9Ug@XkK-2EI(7"8,g/3R`@DQ_'[I"Z
+4:]$9Ld(9&.?SFmh,^Z?Y:sS\5<B?F>/0V:AQJ?Vf%A,@SG(sqmVkS2b?cdNl+Psm
+&@`S^aR9u-n5Q2<`B7Bg.E&gIqm@,,:pbAdCHRnqY&_q1O%",:+$2\g&gs:e4]`bG
+G]^4hDeImO^?HoXW86^ikP^U&g31R3EP_C0\(Zl:d]SK>;foM4ePm3gInpS$Yq_T4
+jVmBiJ*Epj5USPUSu^g@O<st@\%7`1F5V-La`](/BVEP+aDX`)or.O;Q!]IHKW07q
+.G.P:'b[`MY=\jOGFGR@HDFk@<TOk6W<O%>&QS>ZQG(:EpQ`(WL[M#K[oIg['KbQ&
+/HoW8LPSBbqdq.9aV^K_2J8[CU0<@UCI#q+;V'V-Em\0)7A\(:QT=>R&V.9l#0-lk
+.r1-fU$G+E`bnp`+@RSi)ZsU"d",+`,7=4G*WlBN$M(J0J_[Pb5gUB7!+l]!a>T-1
+_ApAlB+6$:15=^P(eM*$P9>C2a^F<R6\&kZC_.-^0[V>%#\+?qPW8r0jrGb$SdjYg
+2@#XB5s^]n"lW:@OjL$EN>aud^tf*a"*#ScI#\CY,Su,DWA>l@-V:M9C7Sae$][b0
+/1Z5f5EnS*=3r0FlMZBh5f+ND#TsS-KJ<[-fGao@A-<ChYQ[Ll!g3''/^oX^8CG1-
+,`jF>cI!%n^d&ikGm+\/]F[lC5TNB9!0[H)&-bH()FHW_%KY'>#6<UGjR?UgU_\gl
+OPMNVFX3UmG#HITBGi+LoaN\[&-hXK.\s!c#pB]jS<kqq:rNd1Zp%8`b&&f.ODpOc
+KJnPrg_dp[juZLX[nYcpHCLVn,R_;PZsp73$H.WLL"IVJC/i)B3&q-BJ@uM%hAt_)
++:+/"3JNXS:b!1_,@tO&&0_Gm_aneV@FR,q>.Hm+^bfcaL/CsN$@-EumODZ#&0>AH
+8fY[sG,2q`K9]tM(EpFs^tR9?LU`OIi+rE[:=:n0?YTVA4sk3Zf3*_"CC+Ol\,bXb
+>DmTAT&F+>ClfSL"c-.FE&FfaS?#pQ(f]p7UjJ2FO^01'=;"FQ\7D1F0fNln:5Nl#
+p:f![-:k2ZR9.';P1WrblFYa>e@Y+q\d#LcFpcVu,GhR4Y%-!tU^Jj\(a`r1*#Up[
+]L5%Ef*.G_EH@+O)(g&/eD]0l>O[q&1D\n)+)(e?=!ej&KlZM9Ur$??<\Za=`tjgh
+CimdXK0#A[mTV+S>1\(U_CW(-@f/RY;c>9_Cf^Dg6E[DB*Mc3VYomT(@;QLJ0.BKH
+rfO:^h25464[lHRQ$;&LmEm9cMYUCY,=^MImW#F.%1=*faBHtn134>oU7ic6J7SY%
+,;XO,BM7qOoM1"aAMW%&;GN[Y??nJg_W>3?Nc-_bZ7).Mf]b9\!&V5S=`'37'<N7.
+["aOc\sH&j1>@TVhNQ7#k<*K",G@gQZF_%(<9rK)B_.(^Zl6\C)EEgYVO#BQ<p*s/
+Ut(^;k-3QY")DS`8$RtNaOLmO?QBbe>7jWWgh-ZO<fLmlJ[Q?5HY7)Vc*+G%#4'Ss
+%o-qhbZ+>>dGF>)9P\M&DDj*K.[UjpmX44h/cup"lMC[Lbo2((^3H%@*6@TUIDsa'
+)<-#[@r^=Ia3)%l_V@,1E<]"Vi>0/a4K@dg*]:nmmhXucPDL$7.AZd[)!?9bT5m[]
+bF@V'k$5,.FCk!YN>t!@Q]>RCGm6cUG$QbL/?</dERf$5,IY:$STRSkH+Lh"60N-P
+,%,@]FIuA74\7L]%bnWRB5m-AF0B_8_qKIhAaCFM^NMq*LO26pm9S2MFS4tTDEi40
+ShFR;6;S(t6".4#0)XTW@r2(f\(XAY$ZhN+?C*iAnWg_c&cPj^4V";Ib5UX##XtM+
+;62W=;)PP)/T/4r[drMk]q'aXT6nPtpf?-V>i-(G:D2&#\2^Sf&!5m8?d.u8=QlQu
+>NXAp+&Q;phHJ7;I"#d12oTJ#H+YM:$Nh[Q4iLQQDmIJ:/obp.ORF?.q0U5@0s:;U
+PMpg7lIIj\hETE=,]_Hde,p(ghEVHH^7g]AUZ%Ht=Gg&#5![4R,MnD!gQGDB18pEn
+PM6Eq&?YQ@5kG'nJM\5h\X0(oZtm+dC]_'rg9K,kR=UMbGoF?K1^QPjM$+d5K4tX:
+cAQI^^D$#eCBD@<)E3$e^cRZ2CC-9u))MF?^KT5UYnY'6#=67A5MJFVU]3QqlP0`W
+6R3U;S.?)$*AOeb#gk%dr&?ueh@i6GZ-hu$M,#X*S\Vc,*N7Nr)omcU)8+E.`#.aN
+PXEA_5mf/44F!Ta$eI*)5-7+tS,9%oZq(SX-H++u6jjMZK*72C6p1V6`#10?F;M.O
+hnj(a))6>(0]"CVoohd2R<Yc#d<g]Mh*M-#6S)Q*fVu0dh`FsS75M?6CNm#PPcnP=
+`#u6Q![97==!MeSZZIQZ"#RZpe3/u\N9TC1*"8pe2]],e&lSqIHKh/MiKQ`26/\,#
+Eu_;-G`llg_'182l41T,I#8cBQ^FL.r,dj1O29n.!PF"A>^Ng3O2kpm0PL&J8EiL#
+H:X8Z8+<ampu&<E9?2S>N;0*.;4%`1Q\rkE4LBd&_6?-$KLcE?Q^V'].j:(gR'JH<
+a%::s,T\k:R3Kk4a?18pa^5?*D3p^\VE33<fY,-`p.A9XMAY2(MVl<kj%*:3_;L9k
+n@(aBXG[1jb1XP#ZM4qd+%m#c9'!:hr3S.GI2R:e3rH&sjL?#$Qk-MF#oNpS*4:f:
+c(6]\5"*.Y1b-QY0YThsNl/HNq[+8^WN@o/SU2gn`-hpF/AGl+MA,0@HsalS`0l:1
+$6+#B*+qqO1ecY"&AdOdO]';W*5_?:/^uMilp\eH1p^H@N`tI.nDHA:YrZ(R)&h*i
+\T0H!i1k?n%lE:N"(mlVjV@R_:2A<2;o6FGhloYFLt(_.m-(`sm*63J^e*r6I,n%L
+jj$u&]X6^Y4$ZNQmgBQ$02X>n3LpjHT"8%;9nA4[lSZrJr6F(G8YFuJJSIMNm2%k;
+:%S?>gnq3<b0X:3,(.+`Z#`X'?bjk.YHkXEC^EAU0sCKiZd_Z'J<-t!3jd*td45R3
+`>#nIp<dFc6mWYS6cGUpU<t24ObAIrka9%0(f<F8MD1CE>7Ne(>e%Zn6A#%il+<W&
+*jRn>3RJp9b7h1&O3mK(1766@.k@0k,JB'gZKN8[6Tm#ca.7o>5\2)P@%f=H2@/ZF
+7Zd.(l#TWChaj,sQRl6)HaU0Flao"H$JMbd8MJ6gZUm]^2$H=.gqpl'i&:cG]o>.l
+P3b_C]i:7Z6Z]=_N6+h>eeO+fUi>1qX\:Rr:p_o4OQh&t.lp%CE'S+Z%UcfNEJk,)
+ZjEGARfYLuRt!T3-DGbB(F^Y1o5_.AbLRN?M$*:);4bNs?rb--'&tX^"Zj'<r',R=
+`'CG*C^/ISpPnbjet$_[j!<4cCdV`M*5->VG`Y2P@+Nu4Z:gH_lsL1FCK6X/8Y@4;
+ZgY:*>h?"AZl282`I,dHU5>FP<W--k[=gEf@b$-AQpl\Yok%8[KH7'?em3A:[0"r*
+,EAUW1rtfOX_ZSj],)nR5V7m3l+;tpG//61NS)EW<!Ls"m2NT^=.OkCe0Bn-=Oko2
+%A^Y=Xe8c)Za<GY=uDnuh1]"Bf88UE^hmRQTm>@OKiquc&@J?:h35uUTA&[P`]9C!
+`LYTW0A@e>fj/WdmBkQJ.9BAleWmVr?!uD5SQROs)S@S(=LbZMIR*\M5c(O!5c_E^
+V$daL)'rP?V8:mA$/B*k4N3r@ouNP[)I(2"gcYt[V6sQ6_*MYY>cc@K4jM`^&`!!o
+>g:c(4:9Y&ek2$lgj:lnFcp!P`j96Kge@e&'u2dogc/1t3+C:kbU?ClPqY6&Zg858
+BVA`tX9hVIR,eT)\_<IrcsD.d>-1Z@]%PrBkgRnGadgU..o"n-1Xg?%?JA7_)F>SD
+98OM'Ltsi)U]Okf/75Ip>cgDrU?Q%.cO8ER=O$TF[F\dufNiq./j6KG_qka21n:NO
+5>q^$!^\mFm%@Q5[uKD*[H_'kkhHH2hJNj1L$RTe$"5F_i?dk\4ml[K(#K..?UFUf
+4St,h).+Ef?X<1/(&&1ApgJ8FdL_R-Fkklj^YcHtd&m<,*W'*026K+b,^'6kXomQ]
+047g!/hRAZBWhcNkHAJ)hEC>M44(aR0o6I5*OI/j4T`B#nOhhZY%uu`3kZo)Y0VI*
+_M#\aJ\U6,d>eUCON',5ehst<:LcjUj>-MjVF9HDpV-GN00V^4_th_E2`1TcZKS/H
+]Hh"L9k4&[5q=uT,SDso)iQc@b4B+6_c)nk1,=4WXsF`36e2i*5WGb2;^HVK[)>78
+IksCeURMh(H^g9;N$#*W,U5E_PXq2ZjqL*K]gIkf"5[XD+&&a9dR-iB7M-;<7crF<
+$NqeB=XMkWH7es-Q2Xdd5a3N@F:n#-daRdrPhl`mU57ke9e,.u;.=/_o.T]Ge#%7c
+e#Srj<+\mMk?Kr0Gju<iHbLL./Tul3ij9s=i^^F;cdA$gA<`j9c'L-@]5"UR+`e1>
+7P+OS6l\U.ORki&j^tr43Qq"-jL=9_%a;)4QRL[je:22Mf0/h8Ak"j4^3MPKOcZhU
+l607mPuQjS0iB.;l=>b5.u^k?U_,M^[PL\c>&M1\\OWmfjufn`QE9B[qs*I[3BGAS
+i!!NCA*UM!lS_,'r"fYRKbRIXCDm!6`hPQfY%tJRl;OTng-iEFDIhe*fKcVtUJWq-
+jukDd\+[a(/$j&Kb.%7T=XJ_Y'6-)29l)V-D#7s\=J@Xp%_36tm+U00`l_9sdSeP5
+U;kOBY(#bZ_ek$0D*(sP;e![3l=d?J0QZcS(<kuS8*k"tkm$3c'LaZOPdLU:m6e)@
+VMFQO6#Lsh\'E;jCd`/Qj"5AMMe;?n1P0MAi,6!DCtA,oL@+B"_J+ANlRnqdE7f!H
+^?X90a.ohVS8d_9rL\94a0\6"ip#c+6u3p2BhTrD`rWnK7:Wd=8%-r<DZ4TmODl^H
+C_jIu6:#4m$aB()n2@n<l'KGs@Z@C)\+$pTE61%ank&Fc)2U/=rb3>8-j$=o!gk10
+35#fcB9<XiUk,?C5U1k/-NY\F!XKL6cl)pOJdu2>!C/#k.)l[86nc(<$HSJI..@VK
+.fiC_J[cBq#UogG+G(.OET\iP>!`^s+Ope;!k9M-+=[cgm7u*_&:#X9<(%<@+ds[1
+T0U115nX6.F6#U1$is^"=iGI`qt(HOOV+CI011cH(;n0YNa@B[s$4s2648XhFKgVo
+`]nJFE,GVMoS65#LIqS;;5d_jMSjoOf/Fs'lZ3+(U`!)'#>,B.+ot>1JOa*h@jRE9
+=Uo_$XMIPPaL(,S??KrjMm+XgaM!-pC3*ot:p:^lL6;.QAruIep.&fepM9K$^37>J
+Nd`ht;S>'ThY*&k,^1SUO:WfiD7'Ta,O%P42RKek6DBRIRYn>$2\i3'"`\OP5I<UM
+q]@lfJ:Ts1%SPuAU]q0+;OgZXM!AgY2gkB\"-b7Y;nL^i,\S]`JU$@1EGbdO;0e&D
+k[N/-)t/W*^R+#D$M"utnjjmTC8@ahV<J])G"bWFH,U?KMP?c#pNd"@6+h;R/V/Eb
+N_**T^I@fehYN:$$e[5NM%LhkZB7)F%b3$8;R)'JV0XiN(-6Na^l^SHs"K@TS5:K"
++NX:!8WbB.+271NQkn)bfUPbdJXOE;:mu`mlN2k[HmV&s+2Fbr'/Eh(r!<iF%#(4M
+^^^J"FE-4/gPq_)*d#"dZuI4FUhUlG_P4!r\4,>Y<T2<A0eSQhXMlqkn&V[mgAR92
+rJB,(UA!LUgT?h!;^u`XVqc_7SJ4>U_Gm)VS"2.4XM(7Y-9p\?[4_tqP<r-)Mr3`I
+R,3]>Xo;(6rp2bMhr9*lnp^H+IJXt4\T@aWh#6P:VE`o8SWN/Y<e$AcIth\:BAe9l
+&-r9WCbce87cT&]JcmeE%7\6$UacTQK>M"`#\\b.$@tJcd"kNJE\87=iR'&]b[V3G
+NZk0;LuK]t)%C/_q2B&K,(bh#o3$%`@5=J`L1;[Vejh$YNFgUc8D5dVNR;JT6*rBf
+/>Z-TnM-]Z5o1>3@Sf]+Ji6Pf%S"j5m#o<o2VU^jfR-0KBo<I4f?$J@\UM(kl;="Q
+'*2C9%A?.Y]l*L<S5Cli%&F;PM&OJ]f]k))/2YMjBmKW*P=7:G>BNn-%SIn7`nBjj
+gO.`LF.F2&<o)'U!Hf8j0NY:Zo8A+[<d=E=Af@R.jmD]nl2M]6U"F@04j;`kBrLN7
+oXN3ik?h*NidGs,e`UStcuNrJIFm0dCZ&G&.U./W4&;&u!']h.qOkW_;j?Z1OCR^f
+[]V,*"gb=8]`1=cK/i]kE5U2sZLFAO&2GqdhWQuf/&pqkc,9Jr\#oQ`h*:>7"U_JR
+PH)U+Nnbbk`9^//a21VGFM.o5g62A$nDhIu7?J9_%)e=1*;;it;[4)F&\NM[bRNV-
+W!1#LF;dJB#Sa&,J\kI$9hr!S)25o4.YS(g]B)*!o>kHu27)rEZ)"Vrg_W]mikj-f
+dmWh[2/(^(N!@Dq5t87r;FZ<g1coJJ;+a035q8(3@ntO;eG,>-Zb8(V9kabQ1tHTt
+']2Wb7*f(-(#7\+el/5Q4&Dl_p?0ee"\bIiF>WA]L/na$8N%<c,1=njPq?+b2R7C$
+;q3Ioe6H!Z!nCH(9h/"0W/Y.WVt6AYCf!"#FLGMt0O,UBPYDq,?^LG"@aF?\p_Zf:
+23*@pBT9K2:^TA_F'<ZcKjp^+Ks+f\(slQK4?&85MI];DcD9HNc-:E:G]k60<EW6^
+KiQ^c@%Z@ojn@!XQ,Rm;hm`S<JDo2TH%odRXquq')3(5GAU(V^JR`ri)3<k,L.RqN
+pC:JNC2#k0U1*e&B<u<?]t9hL(bW,MB5:<YI:LOM"eh_"XoXLM3VYn=Tj,fZG\Keh
+c%t<A[LJO=RP+P#AGcr+_=CdlEHsAX2^bp%fWN?#WB<peG,UoX(UipNIfXn7o-JG7
+p"a5:WpkG6$`A!&IgaDC>THVV>'%.ma)A!@3NQ;ps!M[V?=g=fFT*Uk[.kS1:#"_l
+:34tS85Emeh_j9MKcnqGNkKi7Y7?Hp/^Bj)r6W-JpAE/]V;!F4[5Z8.CM@(ep\q&H
+PP7oc'Vmr^.0:T;b&](YosC(.;@C$c,AdVa5o00u(r9I0:P&BWLZ$G5r!?2=KU&Kk
++U=Y"b%'AL(:#n@:Z6ncJWJdT]pML_?t:L$cjC;o81+sI-nmK3R8fMr)W(RHSL$\0
+,ekI6_MFm.<@,>R75E^ia@`EfW^06G8@Sp?8YgE&"t#RGKW7tW08a`hRmtH)(fR[o
+,k9#9!s/a.j!#Y*nP26I\@hCm%"Tc\?4O.=@3&@,;.6`BZH!W;_dL*^LseaV`2)u<
+,'7U`C$%!9=Lr)'b[O@'%PT6_9bjGoZ&3RF-o/iL,U,X^Ab"-N)!LIhj8h`3;RNf#
+WI5r<>_JA?(n!pO9-Y[oT2q+]>03Z*>72$e;A)#bOhbp/RP`YJ@,R0Ofp'Kh"7h]a
+S?Yg,:G<4\gQ=5a2QhRM25HK,4=,fm`d)`*8b:VoYB5IoemCG_V#m"R@WG84)`*;W
+o6GD&THd&L2<\Ej30Upkd94pYV'P,m;R.t$M9@lVAHA9`H@$>u-Ttt0g7_G'PgC(*
+5j9_,VK2Ztcrt?B-p_)C'Y[jMW`LNSOo,DKgmT1V@^#&W.:Y4d`Ii1nTH?2KW`"]F
+*"o;PiuBC4AAU2ijJu0(_+7!@<#ZH0lt@P7(fKr6U&u+B7#H<SJ[;)[a2fZdlV+j:
+aVLZ$Rf7H*W>r!nR8R#,_%Y^+J?+r4,`o&J=R3NIZ>[=beCqe9WuZenciAVtW$%@@
+c$$EOPbcu9d9UT`OgI"B`75ei<#pO+$6UhQLCb..!<>&cdU9/<OBZXZ89,-3-nBlL
+h/:%/7fbln&-eNC#Qe#T%7#H&"->bgj!D>ETR\VJgNXS9:b<mumbZ^fE13rWFTo0<
+Rp8AsHN=+_]XOL-hQ,mfYJ;8U"Ch&TS*C'X$>0SulL^tNpON@%"Lm#-s5,pBIBY=7
++ZIREhV8DOn2:Qi(Xi_!gcKJ4RgKAl>7H^R/-mm`%E-m0$K-;'Mj)./`],1:PT4%Y
+Z#/^DT[t";_FRD+c8<K7o)@\IK6_Bi/B#'LqcdGB5X5~>
+endstream +endobj +80 0 obj 15951 +endobj +81 0 obj<</F2 9 0 R/F4 7 0 R/F8 15 0 R/F5 60 0 R/T8 71 0 R/T7 72 0 R>> +endobj +82 0 obj<</Contents 83 0 R/Type/Page/Parent 5 0 R/Resources<</Font<</F4 7 0 R/F8 15 0 R>>/ProcSet 2 0 R>>>> +endobj +83 0 obj<</Length 84 0 R/Filter[/ASCII85Decode/LZWDecode]>>stream
+J/gjB!<Cnq1)CA>,@SZDCb^SO`e+;JJ6N52%0iR^Y^keG"Vnr[i)C$i(`*U8YipaD
+0clEIUkBqf$p[cP9oS#(Go13;MNnUcW,*(Q%2oXEio.\oCcDtoL!`2bhJR2"'b#5K
+\1"d6-BlT(RT(P/:FQt!KFpb^@PJQ&#^-iJJ='+WP"9$`-*V2>V@"kaEN$B`.(0pa
+KV2/M'J?kT,-XD-O;2.HN+53e_$E;#bf5B)!YD0+C7AG5&@cUZ01d$q[00X6&<7*T
+RV2a(<p\@%(K*`_0`g-^"=Ap4A_8>3C,r.q_ui;u\8F8Fcg([1Zlim7Ncb-2I`R&l
+$7US(PX,Hi5n2+]+d&a3g/9dG<U7MR0r3)UUYu7c&.2pWdQ.eH5ghS"l*sX\3$CQ8
+2N4k\%-n'!.-<QC6V-8mNj(K.0TEsm5V%O3TO\`F,I#<H%HEQ(3JB"_(tp*@EY]Om
+%PSS776tm-*$M#^#iMCO,-`76&fce,a$GN%X$#iDh"M7tph1WrN0K4Ya$G?^&4pQq
+%"la^SAR(omfVp2##e4I.S'(ei@hDFk[9\#ZJ<&@+i1h^dEd>>bS<mVZg\h^&iA*l
+UN7]g/dC[%"%S*qN2o@f:Al+V7mX2J8PRDa,u;)QU'udh%Y>s[cniiDi^o(c[f"4q
+bbU,sEWZXgZUjJ)+ZejmJM'K3_An:R.,(e5]"s'[AZ9+V<0aM&91LTZ6-U;dYQ9pD
+MTKoQK'1Oab?&[GcU<4!YSRG\LI`T0C)TZ@pgEtJ1*u.;?J!0ND-BVeiETUo9ug-f
+8mlIjU"E)Xku2d=,>+uPY\?NTW9qamYOto[N[`U#EfC9;>^W?%.[Y/l30)9DL8tnb
+X)=pTP_FTcBHhVqYdQ0*NTYS['qdV(`.im-P',KSc043Ym'*O=$^PAWL7+IoiJsZ#
+l&t&`.G_?pNYpt@<emhi](Je%C7$o^\*H&7S"=HmrhhtsF.h]kU5UiF]5<'tGr7:C
+(3QNRBN+:=m<U?1a%&G&H*-X55:F"8>7M+J4QrA@LPIu>1W(A\2`nP7gFX#[EZE)h
+XE.g2=2%:*Va\FD]pA3BpA1r>G459\UU!f]*gLba5!C_A=W'h]9rU6BW?U'<89)r;
+XW&B$V5emC7WZ;<+G>JC+rtS_aIDe0U-D7O,@]jp9Sp=]Jej6bcaN\GRR5pp$3gGk
+Q;!RiBHTqp!SF1./e2/9<X.hC_\As<m>mAB,Hslp&G(Xg@)AdNA/5M<j+r!>$^QHV
+0iY)?gB6All\2>*f)VaW%,d?rK$$\"_5Kp1@GE7cn>Zr8W':idbU\8M"rA>*DT6-h
+.Y`_L^R<!>Pa%+?3j+bLUpk/,83%EC8E^r,1trhf;XB?^EYGVJeJ_fSl:O^T'Kqhf
+E=t*0N%ig5)S!)7,:$QSd=O5H#hZaj'Q9%PXtn#M'-STZHB*a>4"k:;*2D:gP)CKN
+,Z:YfcBGUa`A!-'R6H_bU@+06^kWdO;L'!$6#";$QG/U:.\fCY:'u^J,ddbR%_@WB
+o'o&KWH/u/J^ks'PpOAW][DTeaXUgdNj2`J(lKiu475j@]s^>K&eWqa.W)OCo_/4>
+g"'r_H:g](,#d8blX\B9&ZJfKFWP(ANoUq0SO/N&eIl:i6ktrJQRl)C_GWE%M-s.I
+$:c)KjIdXXF3s1\jlfDPU9h^Z0_sl.$>aH%7p8PQb!:12'S_aVc0-E%3hU#Jq5(-B
+KeX4,.L<'iQ:q'X9(^,dl.hl-k";/dWIB"3KBlnK<0bYe!E'^36^90:B,'o;TVb]<
+<0^Kt.@R)1:J>=`ds;<pRDh*8*2TO\K!6KrO"b-\/Y\C7o[N`qOf3P":5`d)Pd6NO
+V.kI8%=(i+Uig"F#mjM9<?Kk)]_ZG=K<^+k/_G`8;UZ:.OVRN00nf^A*nl<aekkS9
+;P.?u>,8KT^ksZi?Xg)]'sP\Mdk7KndB+PsKkVMHU8";ZMHcAhp3aq&"7of.,O2T$
+\GWDXe4PadbF'm*oXONmTNb%T\u=oNY*[.ob(A;:ol>-rCAU=N):4fCTl?eegK7D-
+_3lr?LWl3qR[4[\Wl-7]-J(l,YL?+YO&#6&L<u\fCssl7Zl.a6-HM'i#V(\ZdGOb`
+K(%P*4&-^hSd8DJYgXpo.B<i]PV1*MCs>[KTGuVMm._,)p6ZC%#aI88:Xb<g:fb17
+)5E!gn7`bDb2QJK1Pp`fWJ#be^3^OkO@ikP?bKLe&7-j*.56JU#7P?jAU;HK8m)d"
+CmZ+&;Pp+M/AiW(mVZ"r]i(U0Ci`BtkU6a]Rd=Qrc.Ubo'f%V:1G0rt'".Z#phQJ!
+;4PoLiQ9)=_S#KR'X<pWmjVNV;pVa3PV*n9*XiTXkb0MhW<jVLkOR',FPV]i'1/oS
+JV-XK0\"'9QkaG[67_HT.HN2ROPOeQ('Y%.f)Uif-@ChK)-08ND':VJ\</QcjZ3Q+
+#]/mZR*?Mqg'`<]D+.S+[_5PkWqUIL[Ng(%BbfAJVA=&t@^<FPo/iGUk-(n4\p&2a
+h>kF--ajVu#bhCXS'n^HNU=OrcJ@<RO*g@;'=`9"aP,C9Xb7u3X`p)W]<]HSDVcJG
+OofCRgco^"-1So'p>\eNMiF^-!P5g+-0<nqN,P9cPu?'_3.*f5n#MIHGXh;fI)2-?
+mL.;Q#=[eQPD/W=LW&uF2<4UQMXbtAEfqLUQcul,D-j-K+IS<PRr`ai=40DDemmf(
+)mf5je^1eCl0FQaRr8e?]V"pW=0"&oF3aBi(1Sdr>gK>87@W5s5=k8nM1fiNc/0Cc
+r9HIt]CcTQeSe%Ro%0W@Qi\_g]Up/7WnY#Xm<rb5-K<t?NK&,\?;u>CT9J+1j2A6'
+h05l=>Fn@?@hl')2g9sJAM`7f^6.p==,?M$a5-@427>ZW)<)]G.4IllS\#mhTmb;H
+VZ3r8bQhip.@]"00>mKY)27e]POmomL<]\Y$:nNF1OPDXohN!JjBhnh]:0;g,DQ50
+PlK&4C1<u3D?Bm"JGh,Xs0%1XWX(f7b5]c`N)-\%Dt&0N](I[pil#kgTKmW1[]8K:
+RV/"6U([FCG\,*,HB%':6g.FC$6kR,80XQ[8dJ(C`<E*n95nM#Jf=nj9RmI8Ih6Z)
+MV97nB$b-2A.:G(Ur'"2Ftgt&AAu><UTi/S$mG+8Qu-Ten>QYFdffnN#k3$BUV%c0
+IQ2:h$F!e;97$f'B*mo-[>4,T:hY=<3=7.<\1jppYe5`&^oGQ2e>.1].Bs@qQm#9q
+T90i3MHXWrQO2#6^+K,0;'pmpgC!1r$W/<M8&/q.L0"qpWb.:tYqZ]LOVAB#K$Xr9
+Yf.==WhGOq#\1;88=5-nnJ&k@AHl-;-['Tdm+LF/.`Q4B0nc0TY,1;"I=Q#A.JVYr
++FWDQMecF-0_WO9`s8L*9LcBN/(AZ3!?7nBAh@E'&[r0d#1P</A.(aEA#]`E/H,(:
+ZU^s$@T'pQf*5eT'!6p2:3J>7>(5T@aMt*A@]Ep/!8Ij!?H>Z79No5n`Zo#9IDQ>"
+/*@h*;'Mj5),4S;Y["BT4ArG[\7TJa/6ZBMU*VOkIdTrSBso^V_Ct0+3e]:81!Y(W
+dV.`A2/$s%Okd94C*I8Q4L++A$&^0lSuV%Nb@U82D6E`ro,r!Wm0617EZlT(L1htE
+.g:bQ8#TMo*3Z9kMWD5SVHV/`aWN!Nb\*lNV!fJt^;Fr_#'*oudM!foNlu".bA$aj
+@MZW[[_0PsLo95nL[L]W2KJ@ZbiF;)%/RH=4#*l51%N4+#g/fu:tdX"1D*rPP#X%]
+hDeDa*ib\Dj.JIea!`^+,&>E1-^#rueKK!?Y_VHb-g_u9e2cM*=`AJ`7b[IR@"3j&
+R;F;cn`$YA@h=`Y3@VBckG'jfHMD'AQ)DWkd"pne)L:qWI']^'n;JNH3[rM]'a27"
+-Z'41$GpH^F7G5*;?XJ8g4/3BVM)OUdpdDjffmHM57YP:ih8Q=#%)=g@I^.&"1Ik+
+1<(";-&*QH`?-;E(15'r;Qknr'IG!->_B-f6RVs#-8`P\4EMg>3%+E6LP0F5.5FBd
+CQq@i1f#u-gkMO\6^0uVk)<NO9O\6/G]ZMD1FGZsT1#rV7u)&*!#0[\:*E0784I@F
+"K*Em7gH8!.HS3de8n6XLiOj[B]sE"PN>84kpM<&8[Mbr`Mt(Xetcq^4Qajp#Wk\$
+Y^dG%HZ[.rkB0@291idc9f2<--\uU%ijhj>PHsE'"IOX\$VaIiZOG!+PnuVRgJQAZ
+I<?Po7m\c)TX-s%0Vc0>6XY<W#u^*q3(1AWLY-tf]hRM/Aecd=Pt;s,Wu^joS2EQZ
+kfZq7Vbr^8<cq5A#Ah22M]W$jb;EaPMHW+W?W&ZOGB'4aF^\?o,]Erl=ljX+L7\&?
+Sm@Purc>b1dIUJjV,Xk0QV:shlj6DL"'X5,>]LTd29f5<^K?Wk=u?an2;qc)c;QTS
+'_B-S(%"k\DS4A2?o9WDe*LE3'k#6E@4!l[p)%)3_&ah(+*DF"Zcud`mQC1iN"^PB
+[8gKY&Rj6,>8.`[Q9S`!6";et@u7"$bgTluq\etQZM$.`7ZL.Glqs'e@.;/t"!K[*
+9eU8[BN8M`1AMtc03'l]C%B4p8>0_fp<t<><jg=EQ@Nc"T4i9M+Z?B8Q+q&,D.U/R
+CY"hNebN#tprd6%TI'%OUUFDoR36Se85_$)7?Ej:h'1>^D`,(DE][jO;Hi3,R788;
+G1Sqp!HARa3fe1?+t1%ph.1*A>Akfdf(]87_/OT>?Lq]D(0op$fO?coE&TXo[g@'W
+2&g1c\#KltpD/8f>0]%\FL$'_A*"Q:8T*,<06_G-f6;*%[_)k!<YnbV;iu4b&U)0c
+V6RjR[gdE_$rIg[0\:Gb[tQR@.7gJjE]8br`hds)H$FP(H^4DJpK2^;J9_r@8`Qho
+pT\W*HYu3^nJ@R>Va_t6`Hrt!46(oHQ_Ag3\oHpCIQ'qh68O-.]6/40I[B_P2`$"$
+r]?GSJ5nCUQe?YNqgg^UGk]Zl$Mua5g2P2<Bifk9f5Efa+*.+r+`&HYGThV#!l$>+
+He#G\[qg\q6\]CfJu/3f<Rlfc+b^OEQFM9ofPWb!@<OVSLs,I4fRJPHkaUuEALVqA
+l5!RC@u@:S%nIOFl(ZB]]/V(213g<W<AN`8BUUW[4ID=7W$RDbkD`0f:edQ'91=/\
+iJaY3N`!iWLc2so4$Y.o+8Dgo=O:m[!1Gn98(<_O;PT0sRu6=s0XLG8=KOHUW%nPS
+:g"Ael2?g-K9+&?8Sq+_M+NiXT\:$HPNJL%delpDg*uZ.P@NX:(ro=%'9r:ZPpWY0
+fiaXZ'.2CVQ8o,.aYf?'Tp+.WPQSL^nCNndHQnj[Q-rE%=f[stL1^-,NImRd)'PA-
+R?KY>>jLdDVmhf<hjTsePSZG,=jNK2Bp>oiS[lq8)5E=j$[&mn/U74\Vt2"@m4J$i
+-9;*>Q@kj`?"k(Qd94kX(7h)-j.UY>Bh!08=U@grZE3lBQSuIMfhn:eYA@A?U7+:f
+H8/5@egI2b-mFCC6979HTS[=R\7t:h.I]Pe:^R3&$%SlYULZ*eWlnjP2,3]h@pCPB
+NX2;J#b[tFM:)T\">#2F/E!<nUD@gnGg1bB,::+'""XTULSuEt@fqMjV8CGd>Qk+q
+W$#:s`VlnB9](G?X?+?Xm?!*LjB29D1A]b/)W$p$Dm!,LYI_]SM:@1SpT7W:YN&Ka
+.p-igjRIhqXa9Cm)U#<fe$?S)Xj))>6<69;YUB:u$JQ,#l3FS@3'Uf,73jUqUhn]l
+c6C0!U4k,%gJ+jTA[OTYYG/`<@`V)*;7IQTX/:'\!`ENS^bXiB#("?M']:4Ied<X3
+[mP[r>=kn=U'<]NFD&BR4/N3#h5eCsY!qi1HS)eg*)jJcX?(pA65"SG)m2ep.b`LS
+qXB_o!'#[pNI$`k"%EGJYV%'R7[mjK`[2n^p4HS8"TY<r-9uQ5'[5bgYe]M.$`g5<
+H`^];W$fkpbD3u]_nu<0_]g\N6S8f$JrSnj4p;1(RnL-\(W?37[:6nY\uW7XZ`[M0
+W1jj'gK"IsF0c)T\"%6CgP<9]CWSYrX(D3VF18Bk7O2MYYQDsa%*,lr[QM/Q0&VHj
+HOr5lkGZNRX^I:ug3>/pn1:D8KPo14>1TEu9<HpjLVm(p8852;_9RB-WT<%gh!TmM
+em9?lZ13,_i]8r$Z,59M`Our(!kq)+=09-(A]d0T!)^\)Lq:8AaSZ"c5Yqb*YVD5]
+>G<ZV%*CH=_p2L1CYK)#"XD>Y@F1fjjhd_<4S,X;$*D53*_RVM79(Mbf@*-/`7n;6
+!27M<fKnS@e3-9?dTEdq1"_2tdG/H>S,_.o\_5];d[II3#S8,7(36<*8&i2&YXi,T
+)&esXS21_]BUC6CJ78E9C2cd,L'4&qlQa[ahb/CSh1:I>kA;6rI,_0R?-_-".S6p:
+k6AWX3%<ftM;]>Ei:4)3!j-6E-Q=)RiSH*DY_Cs:M;dNXi[3L=rTE4SiT1-LCu,i]
+4nbQq1YpF0jSd]eIF[1\6=X=lhO[TArVPd7DGn2'i-o@3Sf-OZ<T)^Ps/.I0W&Nt4
+.Hs#LjM!G1qA`qXKBeS7jB^s.*i%mOm]bPVjb;OPkuod:NS[uQi0GM$?J"Om`B(o3
+h`cbN8iV6*SaL</WnsrHb2\ujPhE'_.BO?LhSJ\G%AgeC_&Ro<?E`[doBUiamXlhR
+h\*\Qj5iK3mK9WK^0U)sdP0QBLRr/9*oH?l9AeTDHsZ.%^A+6_oJ[iZaIaNiIG=E:
+'O4u_j1burSiuZo?1E@+nk9_chi%'?-fa*DII)CJrh8t62sh\EoW,ndN[7!*:n]H;
+pKt>jjJ<[->#ZQVr&sa^jV?as.K'0XP.iaLY?MZ(/1:j<ra)%VJsVXsL$YBL1Qijb
++ojS6%>MbtE6r2S)i+\CJZu^#%=u>>!Ws8h)\7b?TS%K>g(=`58"g#^ZqPHE)%HjK
+.7i#e.[EMS7U]8(EA*]=-$%INi,]tY%4?5L@,t`OQH*Z+3^"g81P/)nK,R0.-O,aN
+iNsI[%OO#g%H:4;e.T_>WlX,fR6@:bAVXN#OBZNN72iI;C6<bcdO-*>e"O'?FV\V%
+MSUSr)/NQT$5j7'j(rQNJ!7',.%&/maCA&A;_VYi#)]5kQppZ?La?dL$dDMSZ4$q5
+.qu]A13dLjLMefZ7()c;QO<gmMX*8<XX&Lh]t<%ig&.^#X,`WCZ<_a1HaT7YB'^QG
+2Rg*?OSUe[XlbCEG-1#AHVOaFES0)8\XW#^p44u:)X>s.&/16$3KP0]VS8,_&=1'`
+qm)tP%$5'<+CW&t(Bu%oB$?!<Lg8n$YhV;N_D)U,*40Ef>nK5>>["*3&K#'/_XSUZ
+V2#CM)ZrNK.lnWJ+e(at_[%6?(eG1r<u*LK[$`/56'S#Z2f,jM*'hrj[2T:s`1E4:
+/gOd@\h\eW.7E[rAf406ZoL(Ml)JY]__[f[&4]SB3=S`G92-;C_3A=E`_kMs)ojao
+(E1J[$qDJ_E\s=LdaDq+a\?f?WD#tV4XA][8E@ZC[?WR+6d72?4Q"J+XU.-be/U&6
+L;D$O*X!&a.6ps7j3L&l<S[UC7?&;>hH6d[Euh\G-%PR?&L2L)g=%e\<@'G4@r5Eb
+?$0i(dk%n=>IM/#A&P]R]d[(VmB^5uBY1g$=]=]0A2C][M+Ce8(#<T]<dL:e=i_Vc
+DmiOYK5eu^Q6U9G[tVXj>ZX)AEn%VQ3HX94?9s.R'n.dEht)RMHHs`o1)krR21&]f
+Ta#"pi#"@jR9:#['ptqe:'7(aphgI3jto61>%kGdaXFXp<hCo&qK@q"l1tm`VIpe?
+:T1)cp#dW;E3/L9_`KaMLTDG"<MF9]-2Cm5H6.:0lPjSqWTfh$@AUGW<PPeX)PpNJ
+g02e5(hd%g(kZ^KLC9X6HWGK"f,H3@XCf%>3:1U@1A;"F8Xd`:=hBK!LV@uq5(c'>
+hdaK5>UF>*p6)lsei;Cg]+6oLH[!mp]$G9"-p8)"j_X\3REj.6s-o;HBmre*-+ug&
+m.VN='ts>^e<@:a/-cBsXIgSaici([H.:YV#HmajIE/<%I)!O3aK!?Q2^SO[)A2&-
+T1Z@S7a8LFK'3Pp6%MUYXP=^*p_%[VHjihj#_PAEGm3,b!\?fC]KgFA!aFUhKW.!3
+!pDWEOPq`hKj"O(f#7t>JH@=J;("[9(mdkQ3JU!p%78!S%Ui$tJoHuCQp>^$g6;ts
+0Wl21"`E$<PQ?Z'(`^>F'+*S@K/.C4%)eM_I3TE'#*<[l60Q>p@IZjGO=D'`TQ:(l
+`,gYf2BKg3nI?`G7j(Y!&OZ>G+Ce)5.^Asl_'g`FauiFRZ$aL1=V1Y0P:cl%#V#hM
+1)[l(0*oN.(kMad)1YOD":/QIb(O_'O_gcs6r=I?Gt:`JfI.$AUbdd&j;C6T8I$B2
+&0].d$<)a/%3`)8L>^>_![)1c+e1Os&D@IXkYqjR-mHd>$AeeJ>6FrR/<L#_6HT/]
+E"dhC&G4T`8Sm4>Eh[]O#e)5EkVI!qM4'XWek/5m'9mQpP*uHE$OjE$"pf4:"#<VO
+M\%_%Zc[s!nf7Z9_&f.(8AS&$I7<;jl3<'')P_"9)ZWh87Guu4c5;_O*!I?+WR)Nb
+$<]G$*=YF/5T,gGLBT+HW2;85)3`3Y&HThK0?JBi*%HhGWL4s*'^V$J1;jT7@9bCK
+-4U_N6q\-:-rBQ7JQ('#5p\q^9u+oRdaG!`OQ6L!Pd66JC9\02Gs`grL&i("2F7^e
+G_(O:GL`.Y9*tq`7haUn=1H\Pk55=Ue"Ud,,3DZ%WBR*,AoO(m3D_3MQa:X-)c^XG
+M#k[TZBS`9e2#T_Q-h8iPoU\QWC0b&Xa6K`>`mcE+%.V"\fe.:PYm>d3,H08L_>`T
+>Y3IW;8Fi[beAfu;hS),q$1(,3=s#"WX&X-a,[R+&7#qp:Eh'_](A>;)4SkN01FeF
+KJ)gC)n6?[Z*q>IC@]pp;0T4_ft;Es"X5?+j%*H!SUfLW;;;J#/;3jBkt_%^.Y`^1
+*@%(,p*S_'It_9?\ZBW@$.>mVA8l9I_>%dL'MLRq0YLu8=>'F+g\Z3K2=[HJrVqK_
+-&n%!36$43*oHkHH#aJua4H(QZLDW8;U+FHQg#K#jGS5cL#U0-ZQ<Y9UQ0A2%*A8?
+LYrR'Qbg+=aZ/5&k&N[b1JV&f;T,AoCu(G!??=?OT/Yi;,\j?a7(kP^23G!?Q*J&B
+AbiYnB<:KmF="$82Nmn!m3.bX0p8dE*:]4$pPF"/LR_D;0jT`r>."R(d+J@dBnB8N
+'#(-U39:[G!,\e/mISdfLJDO:eZ3hl/^bq,>\i_DV6S*$/4b[oChr4>'Lo^YHC&8\
+X](Cio\V)EJl1kSE`Mhae]8WKBtKpETT#2na.&DeB-#C.p+_trm][SiNL@BaIe([O
+7k&?qmCb>?Hp\5_*Y;W-I^f_*Fdk%6m="fCpautog^e(59ne9\NsXSXM[l;!KX3PN
+(/1anqsU[2aE[FO`78%sjPCu6GuR&jS:;2lc:,oq+"t,d54TmC3Qs;an)i^8BHqCN
+^`;N)gNkd_oT"j-OuW^lB9/O(pe&bKIgbFf*/=*W8V^0`<U*e0Sb;uWeb)t0VeD+p
+/$>Aed9g\3*HqPXqT[c6V"i,12lZP,P!\u2F7!8bDIMDt%(Xu6,Mi*kinQ+p3*0bW
+fXo1H59uWnrBiATGKP3'+18Z:Q/[,1(AZ8eM5YtIo3-7.^c26q1Y4$ApX\YP"$iRN
+C*)f_7%od.2bO%[*N+%M"adh7n#$!k\b^QEZt_tcW=QeDriYiC^N!i-%^iY[PN$rE
+On7kIdJ/2ek2#L>n:"HuqS+-==b75I.QuYe?RP5H39tlT0Auf=rq([^Z[dit8i:\\
+&KC2Q'E=1?!5>f#5O7,iU\DJ"!\!C;-qdaZ'Bg`0q7m+?5YLdcMm&)4KYN0*^Q\[_
+nI;kcqnO`q_#t4`)r2LnWtNV`^k:1RGmle+r[rj:*/kOsPOh)5TYZ9D5TB;Ye/H/^
+(+fY-'GDt56la$b-,6f1^Vc<JoHllAjX1orXTSmFoARR0jMG]o6DB`3N!hn00>cKY
+6GSXKdpPMSeU`8`Ouf%!$gg<<-GuW:6\IHHqea3^SZOmh0jGd7!h"j"Hn\ed^[sV*
+Rr-'l!Q5C71^#[("@L*I0X0iq$0$\*$jAt=!Q<F_6mLYLRHDHK756Qf]!P>=A5t]"
+5Hpq[`B6Z"R^^7@/h24=`H2!o'I9n$PmE#E`9[soggD_GU.*!u7PnOB6slo)K!)Ia
+$QtL]Wp<*+'1Q5;7[.Q*XB%eADFV!>XMT\t1:'IZ:HEI,7l47#lub=iAr''s\AVp^
+@am0^Jk(K<3:pBEZe%K*.6tKP8*kN=HND-dK/dst836uG9Lldq0ggj^7&0c6MrM$1
+K"YS\7RV%50b-`am`5NWaRal#*#=e&Yq93*SdL9#q])O1(.#7p*5])i47+h430=jB
+8QchE/=X7FR2O0O5#e.Gb1hauSj83:Xb`Cf1@.SIq58=j*Ft^54I1rMQcVn88_g5M
+N3#U,)TeMC4^=^>gp"o$33JYk0=&iYnstu&*6UtBTGsgu'.g7QA4p>J&j%O5XLj?8
+\Y2\l0:]Pq>1h#7]s5eqUTD4gA@FOtQcQ,2#aE+2A54qlE[lIZ9<1%Z;M;/G]h<ar
+b66%^"Mi2@QaP"99Jk*OPgm)TbtJhs1Rucabf;T);pB^0bX5VuZ)X]1d`eYRN6?4C
+K]#PWQd-l1bXCEu96*a[e$h;lP.?uU<7&pI0asT3bG<e97-:V)h+k7oLj>C.D!K5l
+ld$ikc8<]u)KDl?rm#kg:NGpJr7a3`O&((I:L**<3s/87"ruY;0Kf<[PERHVn2N9*
+ch,c4Z`LA]#LF^4&KK`Rr9_hh(!rc]:0YM.2%%^rc`j_e:]&-cq[?8Y[nrSl:t4eb
+o,#aO&5ap^d#=!Y@5CaQ$9?mqdBs_!2'!&N)pUMGa&7+2SHLWX+f1/@:?<B3N??R0
+,KDA[;0rX?d[j=)HjM"EcW(?6FC6L"`_8N2;Y;V><;o;5+&G*S\2?(@9et/a/<ij@
+`<#(!74H2M3`Bki_q?bA'beMg)q41!;qTGo2$-)n%MO^+duogB6D:EM6W<qI;)LX'
+)jOAs,1BLG<,G'&e)A+5=OEBd51?^"9"WTIb7NrY/,`"(@Z2O)"4]KG*,)u`oA*Cm
+<E*7,<IHqm*F2[A)877)[nU&@$3-tN7Ega$efoVUl6%St;lq'PW'+_C9juV+!S2C"
+<am'!%1^'VV$YCHeIspbMV-5)D`s!C9J':#0SiD+E/h2=04:-uHH+Q9o<gAK9mq8q
++O&)NfIf:o=2`1ch0;]egXjm+=5]H!RQo)gKigE]:6b+J0gjS,Vbg:sfNeJRHNVn-
+mau@Gb65T4gQu%0K/S+!dZ#NFSVY]/Q)^C9b?S=O_Oam^3J]gZf<pOIh(%)HH!/#:
+e'3m%3AFKUT@`I&eD6ME[?*WG?SFX4LdbBFV3t+B7TqZE>*HTu,-fiH34-iOM-Z"j
+]5H:9o%Dis;n\^Mc)X*h93OKcfp`=Nc&Z%E[E!-O>:#kB,0*66Z65YE=.OP.`Hthu
+:YM3L<SbOu,PG1=RG;<[5FT6T"M_Z1d"ra<N,<O3%Ek^3RTj6m-PI#m>ZTO[cGBb2
+g3q*kqN`7U=hos.%1UmFjj`)1crq13?%(/7?.iJbf3K\M=8h&/*SrXOK\\p(h,BQk
+32,0a"Q""A?+mI:mBPMji7R&p0Kmh?/G%3R#MtZO;du>*$Z!n@ai^1.hGqeOo\;$P
+o$DOH-5lPN^$O)Y@@V$I/\T),KgcRcf&*PT>0)nh_-UL)N*/=DLctgm<WV*L!$eQ+
+>([6f9+FthW\?LH0U/8qV,1Qn(.9.Ii9b7:dh5oV`DrZMZ")bDM83/`'jii5?VV6G
+7CoE_X^Ks%;0*!t)b\s\=l@RF@5IplD@^1<%G(L&gkH_*]YY"sH&OI`bCeIp*7C$]
+(p_B-#SnfrDCJg3/Rk]Iac+'qVCi-D03<$F@ksI0-7me!Ht*j-bnE5"#q4fOfe[LI
+$YD3R><-3=3o[b8=3Fkr*^/OpKOcDhA%"Z[<]X_s1h7P)A:?GnV;u/f5diYW&]"q;
+"u3S&9dq,2j>KOeG"ptF.qJ1:fQE'^S[2)0l=@V.N0[B'%RT085.GJ^jW7$*<Jfgl
+<+D0dP:\4pN]XeC@F@nO\DCb(-=Aki"B-XY3XQM^Nb;0;&nWIrhmR4\ebFrC39D`u
+4+5fCmUK)OZ716:4%h/<:2=:g&SG#YB81Ul]<u8uGgQm-ASu_TenZu,+!htI\orU8
+[P$N@KZNg*BGI,0N;@3?5#QoeBQf*N(51*7FUPMDYO6heVM=<kIms-q:\KZ8`fVg,
+F].pqkG>TBcA1IC9\hmqBa[XL5&G"b6t]84`JGgP^5s]W5\KLEZf[n0Q<e(71[5/r
+l!=SD^4NVoJRB7jjLX0a`',WIBj/NUC"+NgG(De]Q_C(+l'54J.$j/;>N]mt@$V48
+Fu3Y+?0`Q=CGqYi^(b>uXm<,4B.b8sWe`AVZ.?(.l_S"?5-`[uDJO,)f%k0/"_0Jd
+XDC)?CW=>l5-I-ja6PX[aF/,FhC723Z/=sN&qLHuB$917ZY^`Efm=7l8suDRj$tHI
+D%ft;<ik":i9bjhD70C\:$Jo?,[_tN&[gY9hVb-id`poIDACf2DG+j7BA]$1DB7qY
+Np!jaiU3#oAtAhecK&3,"R`\1m?1oG[&@E!fo^lHDJhl2/,sGqr*V:(>h,@$Sc[g#
+q/8-\M2(mZ55A>>khj\b`;:Q[+JL8oAFENAbOT)o%dW"m@FpPCjGQk@9oCpCJd@\F
+mnV=#T)J/=hbLk?n:q-ck#LMu#3PWAnGX?a:D>ar=7GqsEG"G)>KH!Q/b,qU;0NA@
+/X:5r%;d>sD?gAb[XN5:)/+oTk"coO`B*Pp"N;t>ng>L4/u`j9VJX'aBkJf6^>eZ)
+%I+u@np]$QGeA%SJNhS1*,./!*ZoH$bAs43?!b-`ruf+<2tLZ/A?E+GhZh_q&m6;9
+i'ur%o)\$?I<*oha'UXY2^ri].e:mn?1,.CHiJ0,rU_Y"b$MDr9S_Lp!d$'sE*l5?
+)NU^\$obfgY$Y+7_:Y/2G[is=^cPVq\ZP>+mu"E"P7iuC0uFmGL5NPC6]M!U)-oiI
+LC7k8FsS'UM$kktE-4TK]uO-Sd\4+k7)\kTWsY,l);'a3r@//TC:Zd<C@Nb\ST$>O
+Y>W[iHO?Vg6`HJ8&d"of+JGK$X=B*TGC$KYdMsfEZ!AA:#sW&O:MqF;Js)Ri.nU:p
+lG0W2F.&%?UcFgY!hb\LZZqocV&H/1l<7/,(fXCT/1R?PBgf&nW2nR(V?:?YqTQ)m
+H(9mup8=7W;RJ9[F=d`b0#3RH6IYTgV&>6"W^ssNVLkPpQjU/[P.nJanol8RLWl&N
+SlL"0,3F#1YVH"`H(Sb";41tSnd:%bM1@[="a&D.Dq%+lA*t]so[8OFE(dT_q`ur`
+<5dCa]EhJWX[I]H9\HFq\[==Zbj),'b/!n/9&qA8H`m%L8&G.Q^1Ejfr)M=nAX*+:
+]sqZ]$&?Xaa3AsL]mMo0cc1`fj+r+&)Z+a&ED"<#0)shDbP_k[:oDnCPYljaaAHdd
+IAbl)a4of!M^<p4H`,"aAK-'kL2S0infQnrV(pG[h>VI\I8AMdNgBY"nbiF)I"nA!
+kgOts_!4C`rm/X7ed$W$07IJ:#WB!fpU'oHZ;ns;lci`84ph7T_Db9^ljrXb;ZS/j
+"UG+@N&V@W6j5q3-u:LSNJ%B>G_-2X)3./'!KcA_+GPlp_h"3-AHt,FK`_q&Uo8#3
+$Uu?!\BntL&.:r>EIcmS<&.%",C*7o>ossn+HZukph`<_bJs].R+<KRPDs:@0t>_H
+1o\f3j%@!EAho!:/&MsiL1+8g=f9.f:u$"LNSBA3ECekrGV56f<7uf_D[s6J`YP8@
+hW8%,%W,)O-88:GQ/F/M]TiRL6`8FS<4q%F,DE13D0_'lK2%H5_<][C2I>.@P?]tg
+4`+#*9GkY@UR6#//2\E,7XIEj+(K-/A%)4t7T+pnfk,6s$C2JoduWoP>$gAn;igBU
+Frh]:(N%sYA@Hh]SD7m?RZ'^&km6!e?M3EW8YU$k-Vd%cp*cq&OQ@ld\7-9Z%Ecuc
+1=&W"eNJsE"T>7E4=8QCO6Ws[Y-"Gdh60K2r6$cf,RFW.$qhAQ\^7s]W]EuBAu[X_
+A$F:lOfH)$.hJGS$SW*,bdb`TjF7F_b$\g""jQ7ARQPFlHR,o"UR:pC!OMG%a\_Q-
+)9D7sUG9e=oQN+4#rB%8b:Z2:/kh/pN6Y-)UcBUDmAucN.cHO+OJX0&4Gnn$ii"#W
+Jp<"rWpc$WNBXP]E#>?bTSb*&+qU+cWJS-$(b.gbB.9]+,,cprU6pff.?CuLaG$=h
+VMnB0n=pdD!Gh*CW3kB+!eFAMK42:lMu.#gaO:B*_j10uLFSSV7[i!eXd<O#eeP`2
+fs]G'("u9iE#0^LU'RBg("86kLgc0OPR(=4>l2_GSQN(%=.j:G"rFm%=Fif!%L!>#
+4V/UaMNd[pKqZ4#&.V&U'J"h=Fr2HT82/JDKE>1B2'M[<5WbX;J=7#W@d5)-^aYQf
+qpAiX2Njog:2,St_5;/_%>eh<T&Ig=K:Q\UPqnikkh_)NYUIM,Uh;)T]o$QnDQTUJ
+&&,E5kM#2n)a6<S`M;\op8,!j[%M6(CqDme!5<f?frTriVX,.<)_Uft,m\,\RV6u;
+:Uk:G-.Pr`HbU$0At/5fVWXIF$+sq\Se?R(~>
+endstream +endobj +84 0 obj 14755 +endobj +85 0 obj<</Contents 86 0 R/Type/Page/Parent 5 0 R/Resources<</Font<</F4 7 0 R/F8 15 0 R>>/ProcSet 2 0 R>>>> +endobj +86 0 obj<</Length 87 0 R/Filter[/ASCII85Decode/LZWDecode]>>stream
+J/gjB!<Cnq1)CA>,@SZDCb^SO`e+;JJ6N52%0iR^Y^keG"Vnr[i)C$i(`*U8YipaD
+0clEIUkBqf$p[cP9oS#(Go13;MNnUcW,*(Q%3#bQ,C02X>W3R[L@]J&fVi;\*Pk1L
+5r>04'T>NNO[2+*:F6W@"?Q'H5YNPfaWrSA&:u>L%Vap\"[H<N'OAnY6;T/,:SnUG
+_\$k+E\NN=%"P$:csedFPmp!PB]>U<*(=k7m"F7D>p5/:=oo7cS#MAUL'0'QCl:0&
+&]%=C9`RFNh\rEpm',8W+?RpmK[Bg:]*-68Dd"!VctQ8q;Zmh4W7he<)+OfMDT?GC
+$7US(PX,Hi5n1k4Y9S;Ucu5Kq%OG[YW1])+N8pp%nV,/bat\i"+Nh*Oj/C`o%&8nL
+/i=)7C=WcD9&;Lcj%.2$N?\_S3=I-JC'?.sW*gJjiG0;"##-m&$3hZ$@Q07m0^TB:
+@[PM$NoP4;'=R*CSf+PG8/)pGbjndR[7gCu`@A0&od_2kK<?.c@0EYJ#6DnZ`CiL;
+-leqdr517^XL_;pWtSIO1*R2NE/I<0@T%qR+c@39.Po;>2UC?a"#u%Y)iZsP'J0D6
+/7F?C5fsAVmY]F$D'p1C!M&!X;&#!K2S/KBdmV:LA>:bOP%=kReVmD1+U(b!()aAT
+:hCPD<%pTQ3pnc#mS:-V@%Z'a3i;M^+d55/,AN^ZV(ofL.]S5SY[K4el:W%JU:+Tu
+(fSYlH!e)&9u-.I8C]gA41:F&Kj):r`GDeFXjY8&2e23f,7(FE:LB,F`669SdT5g8
+cKK#8gCDA(cm]J7Tm.sZ&8)B)dh3I(c,%TlIocqK%Yhjq-:`F+N[:4UW]&QQCYcHl
++!t(VP5daQcUM\oU'U$B``EM4rL7I\c=NSRn'd,'g-M<d*,*u\CT"nsrJtN&Y>,"o
+h09u&'tEtS%Bs0G1<(/4Li-@4Yu9^&)kbgU[;K/krTfbV3i'uq`\tc)FC:Rb]69rb
+rSq8Rb_*TYEArRb_JFGa22P/\G8Q!?;WZS:74O;gOQCc\EG_FYc5%=9H`F-ql2=Vn
+V$?Hr1XfV]Pf:o$&#LHQ8JLoAA6sIc`#0]_HbC8N]D"DEq$9@On8akl_k22^dMM1d
+?12&Fbo#o9g$`7Zdp:S)?^o>bh#2Lm=4U*"_nu?5[#Y$mf>%1Am4[O`*'15^Nhh8Z
+64cK..TK'E$lB\4:d`ja!En_W2SCJ?fhu&gJ.:UT^1<P%LeICaco`/]'WVKVfe"B/
+NR^%eNh2,:Gp1J<mh"+c^^dV?/51365T"YS6,TdYDRLK0\7#kV*&WMr&ePh@`rm.t
+7Phj9()-J5cJXW$Kb63b_q8j*i^>;POL^u)j4kR$>0\S^(o0'1-HOW7dUSs4!%=$'
+)pD1B,u88:'fbR/h(3o5ERYksneUoE"B1;53^U,]*m[2/[?32Fkn*(6Y7dR&N_,s+
+aa!t8j6W(lnmS-2.6/KGCWMY.l89:_.Li4JLM*=*-([FK]Hh$BOm,nN/X@0kQuf`"
+-@p$93-;B*ZktOB?90]^(rb-S4dg,/oFU8;`[6jm0B\&e8Cpc,js(ZcP3(?.Gp7.g
+eA`eu+Npq0V__iTf:"(YGKj9_0P8K`S!0"Rc^D^L-M.ajo$FWZi`.k5@Ru\/LqOfW
+,'TtY,Fg2?Oe(O9&5MITRoE7pbQU9n)3NUIU`pGB@Y!.qFR_)?60_9H5'Nu1j!t:h
+V&8u]9H3p^0?/_6*Wm=uan]C\o^NdEH9Y5i!>)3.YqQca4&$Y72^MC#M'%%N<9*8L
+!E5SV:jO9b-s\6D;oXW\W[C?7[25glC66hH4\Y(qBR+_!P>K5l=Q["GVc4RAf;)nM
+c_XJuo\u/])NdlD[3V[bStXZ5XM\d940d:=VU:j+9ro@;Ti@Vt:l<(Zen]@R-g6=?
+,9U`fA-+g=1kMI-&sGmlH@^7A/DB)DBd;,J?4:`"W=qQA/^YMGG*n'1BdIGYFi/'?
+(=_(u#jk0BY`uUXem/YjDC!VU[s'7?g\FK]D<2IMp7V$#7$plR/Zid[*X,l*`pHAu
+.8ME_`Of6E=s+GRIIqQ@VP5nHn$.AW%bAt`$L\*iP2!#rWDBE3$%h!6Knrh,#i08.
+IVid)YmQ5s'DsFlY<=mEMitn(S)!ZWXm8^sDFlGGdu%-'mDN&6pt(3U8T=A"^CW$r
+?Zno5%\<X-\G4$NS-id\3E+#O5tU"aQ\4Y]&]D1X!*\_BO"egMHC/anAXor\nK&<&
+pkK[Hg(%.8$"LLk'qH36TlWp#Zll/`V:s+(S8Ndt_(E7b\>sli0N>8ZH1pXfbS76%
+]]UbIWmYPba.)!fGe1HMg?6XZSk<%1]D$(!BP59a/^Bm4q6rab3/s:=C4jN.]Z4/[
+Pc?M,NkosM=]rCgX0hT,apa7XA/l2ae"VK2fIJAf\kAF>eJQ(%a&HhKR>g^up"B);
+11'p<_tHQu8fJ-RC4'[&eqMB'>.8'M4?K]^hR(P=g*:D"!P6r*9A$ke05M(r\98ns
+gA"HSj<UG*ElS.5&K:LDD?[F&G1PT`B5a4JnB[4pT&8lf&il>RrsnAo5:!-M*e#gA
+ggp]MVAX/,M#E/<bcBfa&N25<)H:eukMdh;>]Sr"bSOn6j'7HmQt5O&=r/,HSFibI
+_C!iZ[jcY%'SQ&6/']e$5!%r%W]8#$lNf^88hg@:4O^I/N3aX*abEF#eNA`<6Qgj5
+CU:^C5)%C3-#oKb[%VWO;Od,^4:DNf(tfSQNZs<0ARi>rk;;d&;5#1-K=JXm,\,_m
+5NE>5(+D@Hb$,gGnr8^Oof.K-!QU$PlQ`P-rrBK3Vf244#LgDq60Gpkc0FPQBmR7U
+e%3MJgSeK3H[`-23nI;FSHl@"IehXP;^_kkd?Jo/fU9?qKS0_;a*blmh>@4YnD3^&
+G^j_k]iX$.^5Ku)"t/HDYEA4##P@h86VAD3mIg"qf_QMMq0cVClMlM$HOoa.O'MF?
+kl9_@p9/f7msrXgdV@rG^*6O6,J\/1$E0f,=qD`JaOD\3*[=<IHAO!O8Gn3oTYI]d
+.M+p.l3d\*,^Y+iA"o@7C8Q,i'a=(t@"f520Nr!\-E"q`VW\FtD;tkS=Kla4`FN@*
+n:l[5enTkI4:l>'YUV+R&I'Xr!QZH8%2B5'\I-\+.R_M_E2s&eVP):1#uE\iYY,(9
+,m_lH"Rpr_Ye45&=U&hh!Jk@uK8r\R/0Su+%hLF@:m+J5;$\lW#LM'*OUDGVQNPV/
+#4TM;9U,u^UB9p!+G+c@BBDcVWiG>::2<c1KhSTo_%Y+K8krQhKWn+r3*%ONiUKPU
+MWRcI0ba^0@]DsuEAjl?Hr<BCQDH];AFQaAGmU^(:^WM77<]M`1ikBU#gnPJM^]Ap
+L/--JWJ&jDUWF<L3_b<?<ilF)"-<Wk5)"fF#`+;E."<57Wd)V-4gEcbLsS6p&nU5C
+01Es+BMTV*DJN].C.V&=1%mZuqN2%%0qp#gna)Q4ocU$hq,-K%98nibk4s#_$h<a,
+Aih#%[3.oZOV.YuEVUiY9-KH/,,cFA7s%u"`d+j2GAa/OL+YoH*.@8K-"p'TL)D=S
+eK<4I4/]V9JgMdaH@0;2bts@PZ=9c*?qJC<,GhIj7PQ.r[(c]/-??!(kWUXd,bac9
+^Os=E$T;3eR%lFN30M0+OP)/l.`n],-fqH\9SF^-[0a.>/ke0Unt8X1ibN?`.0]At
+C52@9h(Qo&-UL`-ME]Ed#prQ.0^e$Lnm`pXG#K%j.888?,eYt>%*[p"-PCn[Eh(hR
+UFOIjhD4CIWmFKm>:XSe.e)CK;YN!Z0fB\(/MbR&Bp`#o#;-Y!U?k0&o6e`%n1XA*
+-?FelO;Tt[_(\eD1WZ[FP7\G#5n`=j'2ki;;7;Z7XGUQ`>naP#1:7eEYYT/c/`kJV
+L;bS4_`\:(<AQ'cNpAj5LGL7J5".t!;Kbh>obQX21dso!F58W-Tg.Yf..d^?1WLD)
+G!%SQ.?R)"Z`c[BY+t)l<ln`N0uRK1DZk+[3/#6t_fiCT<.6<u0-W5lm?fqV&6/n8
+B*,*0_C1!^iaQM=@-!DQ#W?S\+HD<6fec`6FEV'3I75Et7;UIf1g`bnR7BR]84Uro
+7&7](IXqP]FnD>"MB7G2H<I31k365G:a&K.%$g%fN0KngL-0qkBR`R1KdJkB0#\"8
+noVn(0r2[C1tZm33DD@"DN+BaNaGHCSqO&:@r)j)!\0)kTR\l;O_D[eWA@8uq,-@%
+?KS%W`_M&_%cdeu;Wo$E#Y.^5[WhuL>:?UI#<u1c4]7Ng?)\_d;1hSbr+(C',%^u\
+1pCr^@$V$=Il1k;[;/etc=9jS<:rY:-Wk&7*08WI=G@,]_H;MJ]iEU8;)HHkA('O,
+3[p=PJM)?KF[Cuq#&D0d3.k2/[8:'Bath$I=t%Eq"kmk`E?+(s>SVX(V=.]4cWi=D
+?DG\Ge\lFd2!Xc.<J`M9<S^OX%ZJfjN<OK5%n;dT!E(UlM5`X5F^Tu\<FY*;@jb60
+8Rgd^*]*7#Q3hZ\-#7%&3f;KJFnR=qBh!3Q4^uuP@hrCL[R,<6<FRj[OiOVjJeU%T
+X("Wh?cmaOeF&CkMEL)2,:4jQM+MEIO(n<6Pu_u32M@mWX!(3LBJ07!<a&e;VeJ%L
+C0$mAQ>1'@Rp=O.B/Vhe(;>[Wh!--N+VL(qetA$*%)dmrA6/:sDJ*mdrG8q9;qD/B
+QE>"&gMZ9WAEb4;[d$Q(6B/G%4-o\FG5c-`"*56CC,ZJC2`YbfCMq`OE>H'WO>p<N
+'NaEV49YgY-C/%=R7E+tDWYP8["1fJV0+N\>GF>s%i1b'H$*W.56hrdlFD.O;0AU4
+E$KRM`d$Mjs)sa$FuODeFG)ut'6gpCA%!V,7^$r(:k<-KEc.W)LP.kcA0W@^9"1Bb
+FsABS>c":U1o9adiY#a9K79lrj!p+>MU52;4C]3$3pYjD;N`F7?rQh4-dQnfPgEOp
+?sd"KfnSFifE?1dlX![I>?CiVkGUJF=L-QJZN[shMC!gg%t7#O.i6Q,kBDW<2hg?u
+>!ot]ihqNteV*O3,I"CQ\9'PeH%i`_fpCXp\8Q)^%=eXQKNI`5/XU;Iqh*%(M1tMG
+\2Af<PBDOVI!B=Q==JgQs+2YQJ[iCGQpZcK$%Z2E8R`!`\Ct/s7]H/UJlme_GZ9)n
+P22M?L,ep]-\S4]me&PlI<^(F#Cqh*02X6U[1o^0[-kNKDRMP=Opc$9/$L3b(ks5r
+@RU0N6dLre^kPM#[.5DNB^Q(ErKO@NOl`:".r;e"6V7tnb;gq[UFh^U3k*d-GStRd
+MgE$N#FE=jbcFcbjMos@OM4%,027JJGO,GI%,<B8^Oi^bat[+:FC\uAJF'&!C@Rdp
+O-oaG0^P1N=eoPqZHLE3RVVQ59-'J\nudV*_rmsB=c0oZ8VGdeR9@XI\W`E)A!i[K
+`i(,M\`oOjq464S2)u:FlIVK)d@<muTYdV$RD5Bj0\;`eNnL\3/?PJRBq:HATc'Jo
+`+,F@bFKPOT3;1cq,8B[ACS.qQD9Df/Lt>ABp(%rcImW0BTUe>"d^-XL0A36pQ9#I
+'pV*9W9.fbg3KS7IB!FVVl]]Y=b3MG6)XO#f.BV[3a0K4*CLg_;iSl>>"mZ[d@6Ro
+f!;QUl8,Q['r,='hO<ZblrU@NT](1FU)N%FB?-^+%]3BWRG-2qH1.CY'qm\3Y7hR\
+3u+hk<M5=SY1`!6mGY3ogTr@oXqeFPRe<cY&"Ln%gRCR6RljEI;6X7*Uq8:aqcfmY
+,HTWs[X0"q:9[CupQ_-e<R>?$=XBA<I0JAVQ7K4WBKMSA5'm*f?$gi@4*#(g`OY,&
+\,"mlq'^BTXd7^q\Y\T(>F02(GIcBGQtQn"g0L@uc[dVU^.8[]LkVQm7p.kl.gK3X
+X=KcM'S>po9UW\J48FTBrL`uiS,(IGm[LsOi-LmWV$]H#pbeYS6c"T/N(g($gXj<d
+bf+;B_`Q;[QGpNG;8;+g_@oGR>PG"!otg<-hqV;K\iHM&a-Bm*_36n!)u[SM>JX5#
+`d4,kDfs"Q&'+jn_R]?Tr/JX@?WG"@T6d'>]80&TX_gLNat2_U9_l<SRa&F!Cra`"
+g5t($UWLbOdMmpO>Cjq?REE1ib$;3a8k<66[*X3.bSG]H45$]YNPo#EhOK;64#t-h
+3%Gs\24E.90n.trEQ9#:<S\;>NV5@1$K'TJa4jSOI/feO/&U)[YFR\Tc+1a)PLL&Y
+>9-1-]_m$p,LHB@Y$>,E%Goa,kJj"qeK#IWRnDZ<)6\?"dVLG_H=bO<$.W9VdsY$D
+R@ht,)d=pf;%!WAY-]DumD<!\P)&fn_i;9dYi]h/OdUIYCe.kBe%2!2j^q2W];]/n
+Z.b\PF%#?MIC7eb_^&I%]?WRp,Gg`PK[e<UTNje?\b3s<bgnmWiu@9a:GJDf;#Ybk
+Mf8g@RK)7D%)fjnU`:.qNdmjcFl7'$aIWFNH-t[=8"]3[n%JZf*^n#>*/#@=aH"f>
+S6#J]a.sb^i`p!TDPs6\S`\^Kie6.H?9R=2*;W#mj1[/Bq3C#)9uH=!fn<^W*:;H.
+#MV:WcE-iqrMRg;X`Ie2VHg[4IC\6!UYN#?g"rL[?F/q!1umELm6&p?rOUTC]C$`Z
+amPqc/]$NiQ`NpGj,OSTSdj6,A?rg3eji6n4X'9s\(<:hnHA*[Sh%#3;=H`%kMD*S
+h(.q7,O#Y?e0So%>:9#L(%U]Sn/d;1DLLYnj7M4Lf$2D$SK%8COf_t8>CSHm?RtTh
+4neVke%-4b%N^#_VgMQ>QY1mEGC#kFY[^h&&`Qeg17&C<=UNmG+L!^.&Jq9.X==tI
+NI*baB:=Qp#Ptuh$j=*NT<u<dmfh7rRc_'iOE(4:Ur8@A!h[O4DBqZ4.1lO8s#&L7
+_>lD2MhXTMON9[C(_$YdOg*V[+<(ao_VqH7CCu7h7^4A;=tpUDJrIR><,O9/N^uPB
+ff6cd/f5#Tnu2b(&hk<A#4mY@%LY.J:<$5bN(dh9SqnY63TTsK14fpD':Fg)CD.OP
+7eIYCE]mVHf3oBG>W*Zo)Ha))RRl4F?A[0d<CkWbQ#VIT.8ehW^@`P?6(njgA3-b)
+Q-LZfgf3,u$7UR]!WtVaPVX87%cRdW@L8()Mh_CsUdeWHMMq`aOj$HgV:3:N;-9F6
+D55hN[[U^&i+5KpBD:0gOPU[+hTWC=rQRlB0T5<H)D6e;bFaN'opZH+:2*9>%=3F"
+cZd:&nm;)HRW#[UjkUBTP>9cj]=EZ4UKRr@@/[IVLkLsC6*OsWZ_14IMMC*"@N-L_
+U'QN78TYfG61BeQi<I,sBFkW3P:-ttYqSF#UuB2?`O-:UFrI69g-1G"J]bG,.L[5L
+)oF.WhVj3/luKKdMm<uDU=#.@Xt.jce@$mMBQ/j'N(V\KYcerN^ohF@Wrsg`k\2.g
+O]990+@m^`,YG+0D&T0H>i:nnBe37"1'qc(,qC^E=Wp9B1BfYVPSAS\bg[&L,0TSB
+@3qsPb`O;OEh(r9athJo)9C80[Y)g\/>l6>M@?md:G[tZ3[Y4Q-H`Xa__fXpd))+I
+1lrFF[>*nORfHMaRb!j\/c(M'\!A.B@lOr4c"5S:6]U5\(%$J,4O/k_>IrBqZ"Q0h
+C[gFi<s$s(L2U;/o=7pf?$/>3H:N2904GdS[J+oeE`b!VX;F7*'EZs`E$I&l5o$I:
+**:=a9*m54Xa,Z$G_A&76dZ$*=@B[j.hnXYF2eb\+cJ/rUThD8hl[hFB9U0b9LB!F
+JYl_:AI.WjhlD$;&/r,'E[VgfR2"54kW/8GUB\5K$_llh*gmE#dbo,DkZT<lgt@Ue
+,H5HlUK/B#.L':6Ch]3YP-27mR<f(l-DK5L@>[+'3ZA!)R"gM>XfET@`qZBKbhVQK
+B]q(4QtKF]D4GUVQ?Se\ftN$Z#5Oj9aClLCR@\@X-H"1rHk)j5oD1)?Vso*]Mk4^X
+Nq_/ZgQpHt+Ibl<\a?phUUWU<\okS.\*!/6Dbu2pY4)9i;4RHp4@_.N3XQ+K_X\DN
+l#f2*D0JV\X-K?^iP3!rWdc.$;=_J';Q1l9SB.E/?LEH0`])H`r(0V/oEJtdbqtMk
+r_aB[>t$2u1`,-[T:?33#/-\DeAso5MlD*MU&_^dY$)W_r,2"L1FICHpRr8SI]qT>
+YrC,+i5&ZH%uLG"QmiH9>Rc8RV?0"qp@Y(/r`TkMah!jb![+iXG%?10`-<R)'MJL`
+OM%j7W!(?&ln!f#I,ujM(B4Y=;hf7bmPr4Q%,l"YISC:C[tnkT8W!IROgL%Ii*c_W
+_qQ=&h7Ae.+UL]MX$I9q0#^kT*om`!JP\n3P:5fB+Lr;Jk7.j?QJ,*e]MsNGI#:C,
+]bt;4,]PS_0Hk,A%[h^9>1(It7]9csiH1/<.md6+8K.OP)f:ZKp&7Ko+TNc5\0b)p
+8]^]D*F`9<Q4^td`>I&Mj1N,r187!)Vnjb5lEW2mD$<2bNm^Pb_F;g2i@G2'_$Gu0
++cApTc1UW5-UQ$Zo<!:gWS]b*En!1WM/5I%i4%"%geflaIiXmrak,M-TM'*S:fZGb
+kRkn.+Q\fjC#jW=V%TK":3)F`k\KBn#CM_`J'\7`7b@MA,fD+RK2N`uNOga=74O>'
+>$FYAbnF0#Z8sN=P.W6e\!^4g+WEIE5gJ?2VBF``d_kdikuBR>VbE5gieY!W@HsKN
+ns:s9MU9uA%ON=PY#GLY==W,FV5CKR<C_0u.BN'=o]hc=)Gj#N7'WQ1m*s;VeNYE9
+$(LS@NR$!06S&sr82^Zsd.OGJ:1:f/.tGkYPQ,0.Q$+WW*d+%F$A7W]5bGDMUfla<
+BIB4:AG2=3YDQq(XNLLF-I0`bMF=W5WX(+l,TA:;ibCcs-_7WMhHML[3%:T9BIDBj
+YPMA:PZ>o)mpU[<Mh+dQobgD'k*dofel,i%mCRRO^_=9oG\I?ATQJWF?0fU7mR97M
+p55;D2!&n`'_#M'.>+:OOU8$.0L^)(a?gjFV(ORcVH515gr57on6J&2`ru$B)hSc=
+&`@-&&?0)ZZ@WX)<l3EZ.UJJi>A?VP]W[XaO^(ehYXu%9f7FLj>PLg1S[Q:.,qZKi
+"&FoF(W:M&*oKsl7;cSoWCn`RjEW&7l,dST9=l=rZLN\c[QA$1<H'TVE'l:?29SX6
+0&fQt[7rdJX,hHWAr8I/.@t1l=UeZ*EX.X2Xp(u,)21esG0nE8Y<hkZ(p^.*ED_R^
+cmFHh1IaE^f`2@sp19`#=2C5]X/jY_[%=-^@#%SU1dVQH:$G%";-;\:,32joSE)&i
+ofeMaa!$8G13KSF^9D1[;\p5TfUhaBIFF-b;ecauL\3!cebZ0t5]dNKFfqCf3p0Z2
+k%Gb,KBH)Yjm3k\>ZD,n3bcUOD3\"t;F-3M=U4;E+W\_32b'@4gUD6kOq+f0qB4P;
+YAfts:;BH#<(@.NI[p&SKI!f1e=7&!kLS",%Yj]\#XFdHh;E8IP43X1gsU)S,(2>G
+_))UfEc$MMaEHVh,hrK<nm\Ul\'EnfHYA0)IHA)kc<[9:7_A+HOZ`HBo\ns4SSe(!
+bZf8i+WRPGn>!>+\Glj^>SE%c7CC&pT,HY$(P['mDoXnYCZHFnM"IH2fTS%R25MSI
++m)FbcB/Lda>n1ChV(=YI]r008%K;(m?fuP^@+O/Q7YW;Lq?4f,*qQ3)ZL6!9d-?Z
+c#i#3IU1ur>5Y7h02PZC+NusiR=Ob[DNHB0Wf*tHNk5@2'U(DUWh69>F*ODkIIZJ=
+_rU42gNIj\+l-[=!Tb4ea*+nTgUm3"n-$YFHu@p%]?eXoh;;%VrqGK)T8!&GX2Oi6
+-f[D:O7OD'cl2p6GeNS*qn?m6q:Ea]]aq>7p?L^/;jHR[<>G2/(YALJA8"VoLqU.@
+46,53g[dW;gqEhB+0of712<$-h'KV05\_1/Z%jPjDl.U*5dHKY&Ml\OpS\^7#j_gA
+b&96(6bllJ_)bo#TY)HdVa4LI4b<j8lk)BGj2%N$^Y33`_DT"l\"FX^^mk1m\=TN9
+i5&(n69(;t,UC5^9u8.bX]eak(`5T%Va8fJ_Rpe_CaR"M(qi<N-4CY3ZlgQucQhKg
+6,J(/r%>gSIR;6T,^^Z)lnY6p-bsgO66!8&&Ea`(E0.\J&W&^\=O!8ER#1-rP>P8E
+ZHj-,73JBr6qE@Qn;*mN5*;6]ROF%\oM$*QQBJLFM]5D1;,FWmW0D;Y''!A`+t&rn
+MT%;K'4EC0R4H3)gI(U;S4#Q+B[+I&gm!a^`&(%EgdT2P@RPlN6oc>W<(b)F?k`0.
+7,]I])uUfi?UYB<$LCKe!4^!1B14@i#kA<llrF_O[)E&)N-Q>[0`"6)4pWR-Lf7nK
+8bP"=-5'!tTTN%OT]Hb"GaF%_]4dj-l'`K?Xc:I"a5h^V3MAu7a%*+O2*?MjF;1bh
+Dhs'R88NrMZdcju\e,X689ftGkcp'qE=WoELlnA?0H#uS[L3rXa]Pe]+V6,jdh__l
+a^gj<FF:g7R)peD8-A1CUl1(oN5@u1a:tC>Yn0FDGt8L*a<ZL4*2pq`K1L)0b.NhY
+amR;^M+Y^H9(\0:5h*sCLe,IG8DK*G)<2TRKa8Z_[FCX:Ed%t3Y"=cF9;J%*]/3+/
+]ufVd8c4`EEeVX-U<=dm5Z"__5_BbE-;7l=R_fn-)pUbY!Ka=W!J6TC*6aXDej,2>
+^i4u?1Yb&k+&+!l9Q6hd1t'!Mr1n)!_(2t6!Ji7^r";sa9X60C_&/Pk#;m+tZnsDZ
+N8Z,M,Yfn=c900C%"6A_3mHF=N',M3gYY]oZRuB_:7<'F8ls6*.>[?YUI<Xq$e3Jo
+fGU449%;S"K^+B;p-A96c(s-no]48C,ttE&]56N%i586)jb\=;:))m;$RAEYd8&aQ
+::(661,mM,%nt?E:E9KCbm?POrX!u\:V$9t/I+gGp]sg[c[`>E[0+eVZcn[+:b;]C
+<*'aGs%J[X;2#%pTUaC\hG2kN5$]/Pr=;Yg#Z.VQ:nX^]oaF_Dn^1169aqc`'`(N%
+)nmm;d:Ed3N>,,E<t(N&&]H8X>f]guk>A766%&l#WO>L>##"=0dGd5c'el%LePO4C
+:H\PJZ$]>Q-RTW(c14/!'baN^+jLfJda\<EE0F6A(sI;adegK"V*<;G+B-N@Tq%V$
+["VFa2pV(ceAUn+ND7+*5tT#Jc[A$HN8C?mS&@_O:PD0c%6@L#(<p8"TEq*Fl.O0$
+kXtp*\Fj$o"KdMD?(b_ZLa7So$B,F(ge+)h<\bQ8qbPcnIb&&JaO)/3JTB>,AQGnL
+$K4rb(kTl!`(R,c(P%:ON1J.lmgdtiNNI-@Bb4:3]XA6AN%J>U'Ve4pl-Xoe<OHG]
+F^N[q@*4aCaCTSGj^AOVJ_"+;=;>W^ASY;bB*g_Se\%ZhT[_VZHV-_>fPPIs0fIVH
+UXqAI9u6mlF`p@<F;c0B&D`G(9mTm"_V&d0=068ak_KmX=>V7?=hR:%W6GYq"4?4M
+;>faB;4,^XcO`A%d%-cQ>u!h2Ul&.t;kiObbn&6FTi9K?X0nSM<NFf[Gg`D[gANW6
+*>dHNS.j_L>6'W1)XiP88(pAfcs95s/ZRMEdFrEc>%OO,]r0W0Yg3[9MhS31fd&5Y
+;aFue$0A>F/[\Sq%P.Z?gE\rr%@r=")&3;n:Bce`ICmeb%,74HP'srJ#p`NIV;0ci
+g5WhsNR\Sg:YM9<g`7fs^!Kb"_N_aQh5/-Hb^Io6b1g1l4q6FTRbnMo0O7<og'&TR
+Xj:8ffigPO>s5l-:$L![^L".'h>QPB,"(4(XP?P3>\3A0mD'?'j5.ION0qjh?-C_l
+p.T>3eP53X"]Eb0PZ8GR/-)>K7+=O\,2.JFg6K`1Fo9Vh=^A_C/OBqP6Pqg0a3BVL
+gI,?)Kg\i(]3fCCht?g$.`pKur*G?M?kqs6p&86+`8NTF?nFIqD?O?]77<F2c*dpe
+<Z5=foc5`gQ8#=@S>MS30IMSr=:KnODB275jjm"p/F\32F^IUE-8_NSfS1d.AVo$L
+?=I4jfYk1,Tu!cEQlAlu&'^CGTWP?l^KEF8SM7sE'p))hJRQq8=Q,TVJS&DX/_@hW
+iW^FG"c(^t3of=S<[JgG%O>._,oJlpA/'c-mO7,cULMM%<kL]Y:+]M\6lI+>@fb?E
+&TZnUYmhjd%X"'RTb"]'bY-K*&I(L1]m1S%31aG=6fo^p-4Aq2a\\X]<Meg$nkJ'<
+i<uLoQZ3,VD9\Lq3(?qX;k:uKbpCe]?XQPCA_%&]L0NSeq2!="gFbWR?/hD5DVdc'
+At:[(k%J,L\E45n;?gX\bo5bVVcAb$h1fM[mK7'Hn6Z5_B,s3A/o+bc3bS-XNYomN
+:2La*lfH-1*PQQ,>2A<<:/b29[`3LQ2MpUK8SGPXV5oYi[XRF`B]ms#kMfo`7VeL5
+P2Md**YN'k&I[hlSn9mC>D*4eU$H>R53S#5kg#Q.(7jEuN$WWJkh8sL!S_=r&]K36
+B>0[0:4hE4JXnRSB(1@dQ>iH`<8?lhL_4:LP#$lI94q:3O!W?@k,Y/`MjB+&h0nm0
+rR,F5Xg,;NjX@]S)EsT!b>'*pC9E+O%]X<`!,M8cjj'r=k*cmB\DP"XlZN.3(:2sH
+ZYLn[lV>K9AlE!,I%1DDCQ[(]VAU3$]A=$pm01V+iP-9%j3@+nRpc\emPkdZ&$<sZ
+QdHk7M4d:&fk";3T;L5(;.boJ/hTHZ)G[o#\=/C=:ELdH<ZZVui8t<5P3u2s1>o9o
+@Kl1Vo=jaaP,h$4,ZkGE7Z*<^mRd><3=*R79:iTKO^?r0_9G,'%uQWp*$0nL+oW+l
+9#S&s'-ZFR8XkU:\>6HOR<Y+;iRhka,FbF3[&L3I#d0qCQZ-8)#eU0^po]IiS$T%3
+NA6d.r-k!\mu94^6l;=)ObO-LeJr33RnEaS$<*HG95S?tn4s=-H$X=Fe-I]50PM+B
+-QB[Prf<gJD)P)Xq(-L5"7dMeR4d7a$S/$YU%2<:mI=jDcJ`YofPWOfW\3AOL0nh3
+eo#s)P?_mDqfAErl\X1`DVj@?n?3hBGRkkcR*QQ:3V2]8.;rHeeYRC1,ZJ]HDK:4'
+83pa(cR82?"=$tIn36qo!Oa#0#4\+lESj4SE`dFI;oW/NT-k!*A4H(7%Ik9hNGM(@
+h[lHC$&D^MZ\K66k7Vc=M44`FEIjtE7i\"b)N\;JD1>c/L]o]Fs!11/B$<W)G@2\G
+@BK@4]9d$s+WKl/AaZdikf!E1-(,iDRmDL"?$e"L?Ypo<Y:_D(G4IF_E`_b\dLA=j
+%ju(3Vf`sf+H8MMT>'O%].9jfH=iL[%50NVLO/Xor!91`(if%5[qJiDk\q[MN/A6m
+2dpr(F5k5TG"#VY2e^l;i-;F]pL/Am2X#=h]QV6:pE+9%TcA7U.X.'3GrKbfGE9&E
+GBheqGB&C^LN(++Hl(0-DMN]8c>\!d25BKJGQG#g%t[2ck4isSG_.O_Ls->qD%,rW
+8^r#9d$(k1,ip,J/XF;Y07kp'K_jY5qCnfD#i#c^'70`>WL<5bZH3V+#V.tHm/^u!
+B=RgAKGO[Y(imXU""S^?X*_mr^KT4cSh^)gNI-/mP;.]R+M%u#f!4sY^:MA]ccDbE
+UoCi,HH440T<erdqY]`BHe@cb!kuc`[[,kYO8lesZ2eE,If3\rUAEDef<c2<1DaE5
+rOU=s?br%*`iRSWHrn=aO5YJl\tEGqr\FV4EtYBhjfj:*HP:Jsq\#7q^](_,r>G:0
+VmZDS.t1:7rBT_AlM5jcN?S/hrMq?@,4tlTo_Zu"I,FMlVoUPFnB#%V1WZpZfio#T
+)2J:>?ni3%7RM`GaD<[OL^g#NTZh.')idDj81Yeq$\k,O75.REW!X?'LB7`):s97c
+$\kEb!5`1fPDk6+&TfRA1(Xng@c=*gEZci!`<8Iu:t,gfN!7*"R*o@o):QUC(r9%i
+$5='91qCESE\jE<B-RGBB!s*:=2@gdXBJD"T+'fRWo6G'::+7o'hW_dBK)Yhmo5rW
+(.L%teOCdGKYhg`)3)YR3%2:HBT-)o0JNULapKp3UbXrH^1T43N(-Z1LuJ_))Ghh]
+8i7h*AuJ\4oj!Jd$XBlE/2fRA3,P2EgF^tgJDM5ebMD[>\pcEX^qjG4!fT8q'FG`-
+Egn)@%k3gg7.YSkrB!4Hd:kGc.:g"u1=c^^NMpA-LFM7sgBJ!'MQSm1>Bm*HD??uK
+30&<*j?>(Ui:!eN1<pi6%\i=P]HC,Im5OA>#8&Q6(hab\@Di<N4\Vn/be<B/jFKLS
+)bSSo/Q;G5":Q1q)Bh[7$D>3%`"][HXn)PN_Fj/CYq2!KQOL!8g;'%-:\&Pk`CrZl
+^Ig-F`pk<_TQ6?R+hL"]`fFmljtkE66QSGY6hJpM85j:>L9)X_M1u&0E1T?>gV=X0
++_Y@VXUN[o(t%^&EZ1Z\PJA&6m+]\P#%:'6.LA^VCs=.qjWKDXc4i)ZMJQ7^j\Y:>
+-UFYJBSn/C+qU+c])eo:<]0=oE0r`H(ml\,@TqQMUBsOnTu\]&*eZ8V8l7L^cpE[9
+%3mjtd5)pGKJ\\+#in+$!Z9cTNPhF33<TEA:aV!5_@.7e6Jt`Q$%mKJ1lPiCLbt&8
+392cQX)Ms0[S&)h).Lm.n/-lDi8-7u""<Ph%&!Zu1_&KTh1.q.)OqbPT`FKl!E(s,
+L;um.Js2nl:i_mWl5jhsL5E"ic"AdM#,gYC!+hn*)BP!<0nB>FRH`Edae%^5#'lh+
+:\$%Q#8GU3RQ=XS&[A"_VIgcV.'l1ED*')4[kaGMZChF@k3RqABGRCulDR`.^F,G\
+#I!WJG2Rsc3^1fXBfZl&WeaA)SMnDHMoh;/0KLqkZLMrUcDmS)6)GspeM>>naTfuB
+ER545^Lpu\&0(==n7p\EdU-@LdOEB\hKRG#LRn3V]6kLClj>3RGTi/Y\"`6,b.(0[
+:>;AXdpr<FbKC]tO8)?YMMZTK?Z4`oIo:@KI(b<%o_IHuU[Dj$.PCaMn)aA>7/T`2
+>;LGU.''!&m!tLN[jfK4.t]es=Nhp0+](;"'K@Ami1oCcjLPblk>9fuS0!4G^(D(;
+E=#2,4^uY/";"*^ium[uKFgTZZM5tkiOg(a0NGQtLa*2a=c\6__A!)3M$j;[F(Sr;
+UDAYa#pM/eM?RH<'6@K<NH>28X@/D`1]3#ecnPaC2>3/!dYH5$5UOFd*P7]iJ"paJ
+Jl$^%\Ahid9ra>7n!4alGei_WS7I].TshucK,kl[DhH?p2+Y%?,@eA%O"b`@7TfX[
+U3$Z'kJ4AAp6ofg/=q\nl*(sh@T6R4&Oil[*4t-K.NF@SQ;XEmZr@O.jfph3D%N3V
+),OHCWH"8a2IO`%_'kfe<gb`Pa>h'?k[i210To/8)Wo3g)a)b29O5KD@K])0AD(G_
+RVaqf1Gmjc/W3$f:lq*73Z,O"4&1I$8b]H>aP=+mZ@*80a[SQ7X=g,"C4OGSF?pq[
+mZ_afSBAD4.uM.s5P"YS9uEk[BZ$*M`U[e;f5WAC][&3ANA!tO8nOr"p7?B/@8_C&
+,2_'LUbd==b?AmF)f2Z2:LZ6,q6rG`8S"]>ihB4P"[)!37B(=IJ&SD].&e4a2:Nn)
+d'hTn,SBm36j^>TAhP&ogl%32CpD(W'LjT74E\ln9="*k63nJ`Nst^led!'pM<$6F
+d=/8Z.`5BL9TcH7VRKU,%$9gB<j(uV_H/X\?)4lQY"(spZ$A=`8SJER%3Zq+WCoEk
+ooXOc&nBWaP"Z,o\TF!\cW\Lf*9Rd%[;@%Pb;T.S?.GgVF)JCmMgjD0WR3O;kr-h5
+@:(V(@SR%=A/VG9CIrZURFb#gc8.=r>%G4Tm3(=kG0M#J(#^Ol&\ck4b#@aD#;$E*
+_-JRbC97B`9o.APfDFc'n$Sm`X@]m)#XN3B[HG,Of%8ePA?KgXYdWU"gth]?AS:\W
+\X/>_=c8G=--:PHpfccQ)l@.`F'Q8"B%b89F,7(hICkg^&![OUH18dh`^%Dqc5-k7
+Z+]Oqf=dtMfFrn@X3\NB@B-p@'_kD%#+(;9VNU/.4:a>F0T9/iSLL^e=Hqtn;@6_n
+Q>:Iqr`X\$8a;LEU17i8)GTgcMc"<GLU';P:bB2fk<.^4$VT,t`$[CKbkX7T'5)91
+%mN*t'%ooL5gL<'lHFXAH#dVX0ULo(;/E;0V(QQ+H:'2r/@1^ai<RQ[O"HQT%0<k+
+B@%:?:M/#eS'8llKNc\_Ak_YIo@C=s)S,-K#>^t!%]Z+Hr:9'Q]roPMS'kJU9$>GB
+!/!<X,)j4\(6pe"j]Rh6/F"UGf+S@sl2N*,8XqXDZpb?76S0RkarfiYi:f_2-L=aq
+>n,2kpQDt%HYRhEda$S@U4I6%aNa34b!]GIG^*cPY&MD24?&d+._JQ&)Y5N>M@4`J
+4-slmaIq&)\Q.G0Z-2NI1eIDaeT$XW@_OeobD<TG8DLmH5SdS4)3`S*k1>g0VfTIq
+(I7%7;4d?+qn!hFO5%oH@Q6QBd^d+(\d$3PDWG$=RUNJ^7mhkj-6q'Ps'0l>_*d_&
+7D=*:B]&EFWHR\F<I!BgjkZ(Wo^ZeL]?_jFc=4Jt[UgrK""u5O+fE#oW_65D37b2@
+UHSp8)7%RbJk_(?OT-+<QK2uU'tfW#^DL3s;r07k'?s7i4m>[mDh(#JML)_!jjm"j
+ofcI.;I<\u8<]HXGOaB9QauR1_/jh(`S`pj"3&U``q^/1P^)Jdo9;'3pQ+="6)VY+
+?Qfq(7,h=GhIH9e)q4XJ2>B95L9WoqcM^UeoDLWIoR?<7+YRF,I93048;bH7CDa5[
+Ca'.LgW.D6-fk#XaG&h7q![):ckJ_n2#_F9I)>5180l?5[/7'3s3M2ODuTh`!<Oq0
+IR5+UYR:Jef)gOhP;!dP-_PgJ:+VJ9!b_YO"(!24>6"nCH]W,]6@sqg)Z^2f+ba/q
+l7E93fHLJU6DH+9kOALjLkg`)^b!G%LJ%lh?8=1S";$CrK#J&C%gc'\#;Cc68-9.%
+R\J/D+n3SZ&>&a=bXa"2J>-pr8K<Iu)"e!PlXHYL;"B754=VOp&&^YekK=ER*=qA"
+LsZ@a-7k2@P_DYq8$M>'0_#_C]apn_JOhbU;#(Zb3=lce&MXWMBSuqS/J8KR&oehH
+UW<ZbNg4TFL56`l"tXbI!esP^,K,Nuj9HGTBb*_W(X[:@0dMX=;\gW/(3,HO#llg!
+aVICO'/=DAnT>[G!ufRH(NDQn&W7J3AJ(&i)KAN/Ln$//?7mV))_l/\#Y;Vu7YhZ5
+KlQ,hJ/',`D]-Wa*@/<=OnTU/HQTNE)mO/hEUt7!]R7!rU=&EQOj+Wh#!d1I'sK*C
+`h*n05%;T43^R6G8FeL2Y(c=JL]gsqZ9mBfB_PCsj.[#-:M*g!`$<\ac6@!Ua?ZQ+
+TIo_<8F6R*K2j/e:->g[oZq\4nj+[@"XpZY5S"hXU2;5&6RHi!,>rD]P&dmBbZO2R
+p1Um2Deq#c/q,*(/#J8OU/35u4T%N^-Nt!-#g>34e0Yeu-"bg_![teM6p5+Z/4e'&
+jt,k49.NBTmu3t`k_s8Tb]=tUd?=WfdS.3l66f%r,ma(-F!W8Um4uUBp2\lGj"W8\
+p8h077E3Y-D=8h"][_'uHAu\?P=d"):3k;d1IVO%P-uhR8LrrU8$buAJo*AC^l6.o
+3`;S-jB=7#mk.O".Hc"]'%8Khkk+H53YL%"F#c3hE_peK0[g0+;[CWH*%5k@LP4D=
+Er]ZJ+#@s`+VQ:['/(e48M`h_4qcKt_](0@(Hh:r4*&\MjWc[I@60+'27%E^e%RrG
+EBquj16[2PL0UchaH%fCO6JE]k=YN+As<SdOjO=1PVeAV.#nl62<)u4Zn.0Q3^2%=
+o[G@Pe5J^K5-1a+NmpQd1hN3kCCq%p7)V;Ykr0@:UHPW[R;0$lOYo;%*ghg/Q%G`G
+8h-W/>5a;hUP_O9`E&k[_b.;31!3[r$&k>5)Pr:`R>0?<<4\M*Nd$^[;^s>s.Z6o/
+VbQH%8]$"Ul,oqlr:10NSOoW?<;*<@b%e;:PNh#)j?HHBD+LI_Re7;o$3rMPUJ]PW
+X&P09Pa&!GY=YPB-kr>KoW37k>,,eM9(2,5Bs10DLJ1<LU(kCePgH6!"[Z3t:ST%q
+<D?2pnP0ff=&eE_M8lJ-kbtm&:t4#lPk_*)bug5H/i=53FVLFiX'#"MT$"Fo@O4ID
+"LB:srj"LI$JMc74^6)>FS3O>K<g!-,d+CN7tM5jbD*4M=>gHa`"fgL<Q;;/b,mP>
+\^eF![J*quH>*`M2Ds/U[G88l[X>$E=R*9.Y;6]Qg6E'V;"Yc:8#!f^8R]%]`?I$5
+FS:ecJAd@fL/i]B.u-JJ949A19[E'a_hDF)?Ck&$_@0'C-VcCo,f,F><d&(q9O+4>
+Z"<9<][2ao<`HbKE4km.CI\"R(6]h>p+1B9^/Xc78P*@WlOpWlCCH0:efm7mppB`F
+C;\Y5Md/;d6#>kfB9kJe9Hn@49XsFG\X$-[Q=Ea7>n`N69_NkE[Rk'u).o0rA[ZSt
+G(E=8[r6)0*]-)q(DnJ7R,cbiEYcfbQDnHi/Rd5C^CZ4e@a[hi:lk*?!0CfF<&g&F
+3<^+26a:NrU'rYrImm6=F5q1\8J)/&s$o"PG;'JK'Lo1da`]*07LM+FeV'.o"]DUD
+5*[ge8Q[/a1K2h%^Q8`^Q`+bQ,+,BKHNGEkQ!0tB]VDm&HR$d7$B7j(fZTObVe6Nd
+eE(ra3<3f,==MI5k@m^Nd8nF$IQ,>_[uZ!gR&Uu'S*HlCX!<*/WHh'+dhiCB8ejnk
+Qu#ip8XItR8RZu8:O;cMJ+qQAQns->]mFqkKJ^d.3'2K]oUV>UV(&TCGMPs%gO-Kp
+=1@XJ\5]Q^&uelBJ_5.;=9jU`%8i41S+Rk,f0!N;De:q""/^WVlJHfqSR5Kl<B#V>
+CF91MK6A#2\Wu1\!Y^DkkcgGL?RjH\(J=`#_-e+e+S`-GEJ]R_[q7RXp`fRM9TF5)
+!&>;(Cj,9-[2!0uD3+E?B6HFi=SHj%i,R!?5XH?HMmIN$nS\sC/rtLEpY@G[-Y.$W
+4NRbC=UTVf1Mg,(88PetQGmOJ9/d(rEk"1_UBQnkB!m\OHF?5_7qSqAm;"R(OSO$?
+P/32HR:;Q^QT5&Qk=M%$NKb7ZOEUYfLGG/Q[:PG2P$#\P=BUma09j"9RELYT\M]do
+#FgXYbpt$'fe$qI%?`X4PrW)<).RA`B!3(ea>U)e2KU>T7+u)Y/e;N:n?=dpXu\LE
+FYJ2Sg';hJ$H>YH4K-;FP^l97pa+VlG$4n+8"G@`73QsZT_^F'g(Z$J(jd/NZYU1:
+=<C)V)'9>$Pj2%ii\81\$$pg1T[cP[Au`ZLC6rZeHOLHKfL:Lg$:WIb<]EmOH@JXJ
+e#6Gm=#acg\8#lL@nt,lL&-M!lBP(I9i/=tV0]=AadB(H[&R+AWk-0G'd1sDc$;8l
+V-:iiPr5EDL6_U\VOBNBeNp)7YtI.BI!U4>Qb\rVrDf,HY<%cB>*Z!HpSo.(L0F0[
+M:nl^=K1#\Z<2KhHLn2i"g0niLg&!-\;c&pc(\-RCeKNm\iHN&b-<-RT\ED)9&CZc
+7?,k++aOrO=g_Qt7eTrNV0XefHXEOpI=W65[^ni7p!pL?=gm$'NcAF,:R@?)6Xh"+
+XZ;+iS#AS'"fL(U+YeP[9<GfAhe(Sq-N`YN)7?laJ"#)dY=#$-HdSd1-urH*W'f@%
+S%iU*"hsfR]:0JIeqo\rKt'dl^cNOje+&tQ@B<.BEsNGjJo?\FogO6M\iKAnE?Dd%
+qmu\[]/]u*KEK-$$*tS_`&m4`>KrFkLV53d@9W9#6S2U;'u*AUP@HnuH12s2o=d<[
+^,aB9@\:X[$(a6_TM&"M\lZPB>KBHU_0fs_r&uZZ.utFJ+\HS[0ulX$W^-'kTI@=R
+YUcCVSI]dRb":pC8,R_Xbh4PYScfPs/P+ODc-=JJbA>OmCiR[ui7Fn)Rf)nVClHd*
+Ph-?M^*YDXN;hHRkKp>ed&EIZcpc=KQ-H+_cofX^/L]%!01C:BbjW6k%+r^^U72#C
+btUgXI*p4+;TsOgbq2N4h%X'f5L;n;f0(e5_o^77H-g3/d<uPUkP`g;rQ[P*fI+Sb
+:gPVCLXOtqe5RV=9rdAd#]kfdU<Z#=&&$,glJ>90j=*jm:,;,`6u]iNik<"cmI'u9
+j4c2C'#U#PIAl(0h0qnZ;f::EY0qtnIGZ'lm"gqa?/OG>)r=l:gKj("/eQiteC&cH
+UWudmDZh6l0I?>\+:r&B;a9%W]]Vfi";'jP@U.Cl3;^gl.NH^dZ)"EP8_F#=BtWET
+EF<7h9@rpcjLk0;B]rYpDq9s,4GAs%I<F^fJ0JaNce`8MBd;8:?bG6Xf\G,>K\b(j
+:ZLK5bj@):hK.-T6f__Pem0jFITjpD=6ofXfR@8j4R1Jo&*CTJet-mB*G=cI#Ns%[
+kT8LCIYcVc"7H+)Hqd]2I3\!nmHP^Wl<^a\YiGp-T\B@?AkM^MSeBfd,\N+YneeN!
+%Fq56LpCA?27]p:+#r+OnSVeJnpTQU+!("!_e-Iii=5_!!a7C/!VBMtp)Wkd[VPRh
+.-"Yk`1L2eID>Fb9AAn6AnoaKLfEF^G,64epu]NYl8\$(g%;'Akg#l#M<F^FNq+9>
+q0g-LjQbY&N:J'2\;CFVT>1;dFR7nor:--3@acV&b3T>UqG)mc*Y*="OQmpI6gd>:
+J7]o+!P#XM2%U1NK0aJ#E\naA%A9D^^i1nC$qDP04=1jRLW&2IBM:T$1D^M?d?+Q^
+>p>%n`aT#i8gu?S`l:hGR)W2bMoq^q)/-g#17l;>Z+:M#M+3oO`kpq]?BmmPcUOYf
+^t,[pS;a@gMUca,-(.IX27i#"9dl9+.RT)h+r(NQ`9@hKUip*$+UXr2Gr6oV".)C7
+,;Hh\Ii?2KY5#Y_OD=s<b48YZ37airVrhU\>0TffMT/+?_cTp=NJbR/[8o?&IWM=0
+lKjpr(:,rp\S4P1^!%9S#1)e>\QH;80t#p$nC)f-'4K;&K!4\pOLnmSX[f*+WY!<O
+WUC<Z"#7ga_$0:Q/cNK^^(<<m=oD[QUcM:[r1K*#2N!5=C0'`*:ZMf7YV3<c\\TsM
+'`10h/,9E0&=a+(^?kbQjLt$k,lXrTX3U@Qm+b;#].WSn)a-IemLTCp+t=PFC#EYA
+4mKU&)*U@%A>02=e9I_tJ5E*H"p"jp-NjNR'H/8N\7QVP8gnGm8ko^E)2:k%Y3mF2
+G\A%siOlO_b/bi[UJ0-)eLN%H9$]I>P=e#qTRi&?,"nV_^=L?`E,rqBntHRHU9lUf
+Vb07\#8^1c>mj$@J[2%,dF2=W50UCV:9RB5UQ%fC<?/*Vc.']Y8C(2Pa\4nJ<5gD^
+l'T]18p-r]=NsBqbb7ih"ar,M;n-C$c#m<MAD)$m:K(EfPkGtnoDOG1-$1FP6s$at
+]fT+K/RNBmPe<nn;j+OO5@%8(fGW2J*S3!uZpe7m<n3I\.c6FfB-g-%4I5u$nVh&t
+W32k@W34S*(6^N>L*2b9WA?AfX"/3JM)&h`nVguaRM;tUR/SO"Wm,DuUnW+X$E&WY
+'5a+JR(LZ!jJg^-'"1MNLRI<t^,D1n3MPPu"rM^9QVgpqq-5urgqP?(344As4rF!t
+n1BJQd(?6F3`WCJB`<]79q)pIP:SdZ\=Vh4]%EP<)l4Ua:65*LVJ`l1>m_skHE"UI
+:la)Dn9QuS,&f6M*N=&U^EndkbQM,dU%+@\Mk\Na8OlUWgp^]<Z1r"&FH][d,tI@X
+K`jThM`C4KBMq[/UOArd)[%1%-)@6>F#SlKQplVg.r-XpL%ubmPI7;3ZK.CcO_f6j
+BDB8^htn*@[HP^uM\PRa/5fLcWF;NH@(d3GkOj7[kCU?c6+)V^42I!4jHDn7$t%-l
+-QqO!^,0L5?n,N0i8!c'A:"Ac=^ZH,[GO6&Ss.T[I9)2!W"Y81Miua12[h;6P@s.^
+Tcmp!bK]lH(cZ^^o%Z=F3.iK4@VVQh1b)&oR&#FY$D@k`LLa-k66jATb1nRsE2"0\
+fN=lBBd/6bjr(#jC@:'!6\e8_+[aUr&&;"_LdkLN73`Y/h>%XYVHGE5W6u.m6u=-j
+3]%FZDF<HY&V%(D*&TT;7nH*fO4!59OQ[,LTI\lCnA[j.pnmp]4H=M:W:tq10F/p1
+%$5!nq]mH%-@r^nBV<4<X@Xb-8NTTm13eCCK_e#dZi)b[&;!K*@k:2f["RsI<6H_8
+]\k4e.*;+_]i`/q-"Na/d5!\nol=Fbgh3$PW[,_Gj#(>2b`8d=5*.2m2^@C'O9j]/
+48%bs,n]j5ngW!9RFYVR9J21?c:UkmC^d/YU*?m`F@p7S-tD&/Pk'QU8uN_famB8!
+VIj5^RJ/>1Rd?1_nq5-n.59Z'U6tKM<mCIU2!/n/RL_q+[$)3Pi]G\I.YPVLaa5;,
+`@ad,HA]TEP,#!e==u;a'iKi-Bk$q!R5"bW<!lSri^@U[Peq`>l=QomXYG^?jVl%X
+D,(EQ.B$(o+$CI_!2j@9U[p[8cH$_G,E-\@+MnI\R0t@+9C&][`e1UnlWbe?L+#h1
+F9<Bs4;7+1#*0OtaXRg0/2\!&.JCD3$5m*6V0&DQ"\6?R#,YQ5Oaoo'`Q;h4@ojfT
+F]KQA6E<Uhjq<uTG%&2ul"X]W$</1r^:d6TUM;;"[[ZklVH/A"2QL;oXjr`Ieg%_:
+/\L&Fjc7".fu%4I/VUD%#"GHCrDb.<MQcSW`k^o2A1Y-O\KJkufbs/L?c<tLdXkr^
+RnI6;c1&>HVU&Tf21*[jYaJP;h:u_\8R6W&.oh"/'9_HDOn*pBKs63MpB=B"MUt`k
+is-h$#DA7,6:,@qa!Pi76Eo8G,6XfpiX?J;U'b9X.0a>@Ej[[l?5:?P6H;E_.>(s@
+2T&::%cV;4pS/KDE*.H#i/*b_,9k_i0^8%YPZg[$r_/-%lR5O!%nYb*Wh2hj9P)GU
+%^P"Q=CAs$(4<*KLcc"fBU:Cf(H7Q"0aTP$1':s/cr?dKBHmX4I2M>BSI<t89Eap7
+':'H&Ld$Jqq6)R9Eb:[gp5MT1cl2%?Z@.o35f*_H+D5LBNl\Ap,?dP;'5>@=%cWm2
+fnPLN=A\\^$L5l]77`_l=01S>?+$(r?"IPMpTi(=G8f!ujo't#oPkYjbTg&&6:I@8
+7W-C0_"D=kopp)tf?cPH;e`?5Re*+tdST[1B$D!U1hMKdRkmS[:"P$i[[:7qK2-/E
+=dF6f&)S4n;eH.O8Mol2brWQ5787@#14H[bcUd^LieqbVNgI](,m1"L7.4Efp5VRT
+)=%+8>Gb13+E<0<\i:,a?BYM"`X.;Ye'pY3WI&D.CJgVIBSk*(Te27hO$<mGI`[FB
+kT')qTC"_c+)<ju.nH\LocLTt+qH,97IOj:f?r8A=(,[DTq/&%E;Ag[l;/?'QW-c)
+O@NtQDIk0goU(kJdP0ei;)Ho7jP[&+M=/U7ZJl2`/DcF06,!.?bC9YX#\(\L/0c!V
+(fTG8[uKi0QC)p!g=%>iGp#\KnG+^pj.D*t8E<Ffq+:3MPVPVk=oU!$-e_)9g5[=:
+YLm/kn77MWkk<V(giu.\HM8&<opsjrCCa">$jXT9jd2WaZ6eCTa,`[G8*P6g^\)sr
+Vt5C:`;4BipO7UYr#SZ(+)d<OIcmI(&s(K;%oJpH>)MVE]AAY,J*b@Vp\$f4/1`;h
+4h-Qe1NkoZ#8C,=4QH/D3@,)1MR9=f]<N<40Z9kDP+MO>+>G!t_G?4[&$,$43-b=d
+<"LW@s-#Gd_'*iY.3OI-os$S,]jqn=$U[#>r'?hhOf:(2_#k@Efa'TY(rMuUKHLO?
++[*tDTa8=u$E#7-9#:[-VpRq"E:cI!_S+.u_Pm5FOG8_4/<"Y^-:BL#C'?r.PJE[L
+$k+f)M$Cjc$E*2G5f7!Ffb$'B&&DBN66m:0e"T/#'X#@c_8AW*bQEq^&4+MZ3[@)/
+X=1pG'>aJ768GGN6qE?tQk8LE60(YT49n5!-pcW;_Yc2'W6`Es/X&j\`9\kj4>B9$
+oL!.F^tF8Kd&b$9;8[KZ*dK3NJ^Qo\qS;\9_'oIQ1gn5=U(Ob'6j+8:C`LA=)+J-T
+_RlO3KMRIV7kfT16<m)Br*i(L9=k=#`mdXAr*$tcogZ:a7k?>`P[)13^;WXF`:R(X
+#k^\e=="qi!)ar[X>3;Y>Y!i_`T.I;CgW&&AO[XOa?3st'L0SKogYYR^*EJFKLCjM
+MF;7V7RRs-A8X[QN^:2#_Gh`")$<B.C;Q3ua-;J%jEE^;GY'`;]p*k4]R7M/5R:nM
+5hl^4)BD?]5E0Fi'F]UbE5<B-4hM?PLf#s!Cci,&dC^0L^R35;Ht^*1ccW&I`,Ngj
+>]E0mU5U@YNM)2$6uNq7S&5Af%FHh!>cS8>D+eD=/M+6I**16FS<SDLbI!^'UpgW:
+T$!"aNbl,@]Bp)q_FRM=b#C^M38dEIW5L6b$C%J\>#c3*7R[=$9N7"kfZXePOhs5c
+.s+KVpr,mRXMULV76+:@/@EG99?WRL_[Liae5O7Q=b3:72S;he.RBY)LeZ:d14Y6)
+7,0dNY-1g],?ZH:=QH&7D4V'h)EHWieE!11O\V%lTX0WLOjfrG$Vf;A:/pYP8_(@B
+LX(ICLrAbEqjAQ@nP;e>`Sji17,/mFprJEiP2VjmdKYam@aC`#c,1@-khr@m!)MDO
+N&++_d9t<0r\/a(#uq(bPm=ZUmMNb[PmEV4R26MVg_@QqTBe`LLn`8kRE`O$+$rB.
+%1`_$qQPhX2O+ZBPo$M>n$qWg#u]R+XS^?ipDppA:Km6`boTass#hg[ckQJ`/L4/8
+"Mo3_:XoeMI2pUF.8j.O$#Kj;N?llO2@AOa:t$gOAJ,8;(CFQP;%kh9/JClb'Sp.[
+;!enCFS*p3),gPUe#aJ5AM$d/mN9Z96-uEn%7!6B/^!$G#rH`mjNA7Rgl'VM<,E;A
+KS`Z<_&%ak<'3Ls`6#f?BpB-$XW3QJoh(8fW6,iF3d"@qD+W5VZ5!gJ&t-A2KM'K(
+1Y&#&(i:;C/Qsf-6'R(.6T%7ESQA508CY<<\Xd644]4n:Lt$9:9!)OP"]!Uq;o?RX
+eK%7_F]^)Gkdd7%[4+XI/1&h0DcPjP,;^HAPsEmi;\DrW7s.U&Zjt8j@BT]C<\bTC
+\LuBcIF_m>7a4R<bbDqM@8u'7`'nt!4bUYRF]!:3`.`/rb`>g_ECsJT_?Gi4S<[3)
+N`VK]+q8e;20m[tHIt5$fYr6ioZ:2XTikqu'&jHl9n/B%[_tLU=@J_'\BbfLS]MmV
+'E+??h2RsgEn+SN%t'L>?!*8cG?FO#e]j];JGr[T?\obf=j<24/WA8/9:k6rPHgq9
+'sCQ[7G1*j><P7fR>+g$CtDstfTi2c"f=caKYgF1g+B>F25ja8W>.:Q>P(_F]tm[u
+XkUg^>5UNa?*Qci`7m*b<g?D6D1u#tgfmcU>D:+"eCN#qUX_dHg?"UTj]L:ibgCR^
+=Bt8$jHWk!jiN,.>b$o-eWu@@j]m5=8CcKi`/7aK3_6s-1qgua"]:H4L0X[q?+nZj
+Z0,C5\qnkk?%o4_AZK&:?/DE@(hr);L#61Dg"kKG>:nXe4g<c(iS6<Jh`Z0f'T-4f
+h-OCN?O_k>4m(I(M;F5Pb8n)uL"/G&*Lmfn\=4]O:&hCQ5R=Ag+"@CNJW'jJb.`T7
+$cBlpK*e0)#/##m51@IsZO8nemlZU?'8?b,+aK,4&O&SdN(srBo?k?[%H02U5Es5-
+Lk.AbgR@@#eO"[m]/1^_7D*V-4n-L"Z+n!nB4<,#iG6akc3W?L=?NuA@VuT<bO=GV
+$/j0e@9`(\7M'!\k7F)]iHVJ54s`ka'&t#K5ASST((Q6T)*MRM+Ue8T^n0N0>%.m;
+<t]ohXS-.q+dJoK]hMDa5eUYY"q*hJbM1@4,_4)A3Z<r=7P)E4'SOI;VhqO]830gV
+FD!6A[n0bRAGifkA[5#W8kSGgMhU>*2?$:cUIf:1ja;,@EmgF(=<5eradh)*b^JT[
+=6*B`$I2,VbeW=>?qat'jK)htV>'+A9u^udjRo$SN_nN57HGhP9]>m17<)m=qe"Dd
+<R,CC%+c$0E_TM4k<.F/c:$dI8"FuWOh<I4E:C9n\OG@F@rXPA4G1=B8P2;PR5AHo
+'Ia^V60=(_`NEpo+p@+/bLBi]LaHrf$f4N/*g<I>kb.BWPgd'!N_NOqkh]IZj"]d4
+\3gp9B9^$G:6al>H4fa!kI`fDmX78-U"75@bXRDqPt5R49P?869O=?W]W11-K'F\C
+l/%9H2N#Zb"R*eObiY5S'XDA3Om4j*98(p\p8dFIXQa!ER]qN$2?>e:l%nXJ;afS?
+4[5@`>O*jk&tZRA"VOg$i4JS\RUK)95-o%?c>1h&&`,NCK@,mOm2p]ICbhS,r]2)/
+;qo%"\>C[d[`E7p)PBBMY3*g`)<#DYiZ<L1SrqYZ/X5/fK$3<(Opi&YiS'jui/#5O
+O!)]*C%3EUPS3PNm@%&#)D0Q!gk[T:D;l^Un@`TN:niEkT)Rb(EZ?lCp$IjF1e-N#
+B'1]Lj_gCH+]]`$36,o>l^[jlT"4GA35TS8;4bCkX)^M5Nq3Yk!?V[,Lr5Vf+Ole"
+i2"rhmX^LbMUS:0fG#t:D@.!C\NoQXOe?mV'COjsf*#l%"`;9=m_U\sq?:cHL$h.e
+YX[pa549[jr:$r`DU/&(>>+JK#m``gmh,V`cP-^mo8/.*modtVG4u8.7QD7^Dk@[1
+!Xf=ss6b1$n)!r\R3=?Hgg-m$A[G!K4[tSGcG@S^<(A<N!0YpB.I'1%?dQK,<n5Gf
+71'L"&eYaZ>G^<+cfk2Pg'Jp8fZ-#>T(?9X#i*[Fh_E($-;'%Ho=k3_#9nuZXE%!<
+nm'4GLF@59'QSOfF)b-!^F0E720.XYEq^eQ2YM3q8Bl'4F%8_n-SrWk75IG/o5@!;
+'Jo?i61Qk67@55"Td>6jJq8.k,L?u'TJHRJ&fpcqM'9r?7a.,1i.@VXJNtC[81F^<
+"T`<*'F\8uBo/d\=b@h#!C.h%-Y!Kh'`ePM7(1m&Ve?)r.<_F#+$=ik3dl1$BS):a
+G"@4@f4Hs]KQcO"pAcE1B-%=GcP!Nd:jB('+G=pRmh3.1"->:Yd(jd2>;]Wp!<Pf5
+(q\O`?hP"=p+KqL8LpA3G+)k=pGZf1#AYcDCs]tMGDC*]kA^e-EX:9ZG=RL6<tb;?
+B)'uCFuO]&OYIZAiHN6m-;T&jERf6YJ-kCiGTc?qB3Y.%O5]T2)#&dkIpdG\M"WcD
+p/d/qDiFK.C&"$TpLN1Ther/fXEc4Zq*16j9X4D-M>;XcpQno&BXET;0_`na*(PJR
+nJuo\JYE[-H7rNeptm65V=gI:G6b)AYAANYeU"]f#u?V.hiR^'Ou0pn[(gYY:R1f1
+G'c;,r25s0?6H:hSWaZlH]NW$msk55&:+l"H7+Amf^_^;I[`=iPinoqfG"CC(]d/C
+T3m$e(YXG$gjRY4M*K^FQf"Vo.>_usJX@.'kUHX8@uCH&$GYAn37S=rOTLUgJtI>d
+&dP$^M`E4[M<C!&-mo'%+Tc$qq]QTa^_X:FiqUkDJm]sX(a]&U"Tjb^J5A5uC(Q9t
+K)r3,$q<PaB\[Y23>k+OE<3Q`0G"i46P0?p5nkV6`!2n8^g&l2*THSjBRmNsL`$4[
+f^R7&+G1)V_h"K75])dF7fqps_@JGka:4<CCqaCERg:ASalL*R0oo$X1bl?C>m;-2
+kk-C7.]Y>+5j@q[#_K$VYg91Hb#N\!*jjMb[X/#:ZNQ<u7K[)4Zu'`^h4Sl5eagsk
+Zs^'=ln.pN?bkL:Z`Ia+qa75VE1(KZAm^amj)Fh\?Ab)6c!GIU170Ja$@mX~>
+endstream +endobj +87 0 obj 27715 +endobj +88 0 obj<</Contents 94 0 R/Type/Page/Parent 5 0 R/Resources<</Font<</F2 9 0 R/F4 7 0 R/F8 15 0 R/F10 89 0 R/T9 90 0 R>>/ProcSet 2 0 R>>>> +endobj +89 0 obj<</Type/Font/Name/F10/Encoding 6 0 R/BaseFont/Helvetica-Bold/FirstChar 0/LastChar 255/Subtype/Type1>> +endobj +90 0 obj<</Type/Font/Name/T9/Encoding 91 0 R/FirstChar 1/LastChar 1/CharProcs 92 0 R/Subtype/Type3/FontBBox[111 406 392 686]/FontMatrix[0.001 0 0 0.001 0 0]/Widths[516]>> +endobj +91 0 obj<</Type/Encoding/Differences[1/C0095]>> +endobj +92 0 obj<</C0095 93 0 R>> +endobj +93 0 obj<</Length 367/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.4sm@0").0n]f:K*WUDE\\18LCcfq`"XsF_4b@IE5F^l&0!o&0p(0q3L!&ZES1&<
+*&3Z"+p1B#Y[B;S%V??0G^sNc)MefB3Rl&p2Alq#d*[s;N&c^4k/2`Q@Ws6#7&,n'
+Ki3X[)iX"2R[%om#T-F7'S3(6K4qYgL6?<56G>1]cQtr*9l_CbX3)S^ag?XS)T#Q$
+'KePh[k0K>N<#Z3cGst:8#d1QXI=E;(g*i#6&=[X4<)4.PjDCN"d^0Cn?aV]_`]E"
+CitogSGnL6)[n/sl#uoK6(cM;HegfYJi"HboJ5bYnn'`+8#hs(VdcR2db(IM3*1FN
+#Kpc=6_!Fh;k;+Xo-4XO;q"jm9r]'E0Id,~>
+
+endstream +endobj +94 0 obj<</Length 95 0 R/Filter[/ASCII85Decode/LZWDecode]>>stream
+J/gjB!<Cnq1)CA>,@SZDCb^SO`e+;JJ6N52%0iR^Y^keG"Vnr[i)C$i(`*U8YipaD
+0clEIUkBqf$p[cP9oS#(Go13;MNnUcW,*(Q%2oXEio.\oCcDtoL!`2bhJR2"'b#5K
+\1"d6-BlT(RT(P/:FQt!KFn4p_G_!Z$06+u$p[3'MFN5\E84<#)i[;(@7B7g<$_U"
+Yb?$S@Q97]$ALfGJ;,e<A&pt<DI,.T(_DBI6WD]A0uh)h\NHu>Bqs+=B!=T].Oo/*
+#RO_!<<-;r)iV]?H3=eJ+>&pfR6dtH+Vbn)0;F*2rie7!63]e*i.IfRlA,n"U6mEE
+[\F*NK,>l4D2fEn,J?sG2lT"k<\*8%WDJs-M8CZ=pTTRcOsZ!ZE2Fn;n5*$#Yq;+C
+(Em^TL(FA\C7*$aYDW/q#-P<gLSZ/EAr=)A`'4gG;&`?Y7.BPB)oN'[`p?.a1+M]F
+JXBg^.M9:`%S)=KIis;0S'7>"Y>@K=L-`mgP_R#cXGoYGn7n6'.e$7_"X.]Z^B=V*
+WZqed8?iE)$/ga[2_#ITqM&FJ\;N3FMjg<EMYNjPMIN=G!t#&3^`0mZ.#'%(,!6#7
+!D(BTL:$;`p7&@=5_^D=@O`?9#6NnTp'2%ZD+b*^XXcO=8qU4[#pPna:C:)Y,n2m&
+oOo%&!J3Au`0#\G?.Z%@`q%8cct8QQNO-?Q+b9f$.G)iXYrt-F4!A;C(8,L&=S?e1
+p'++eVQ&>/"g5PDTnU[->Ls%t$3mnTU`79Dh!X^=(<]^&>o/\Y^'?TsTiSQ,g8sh'
+_,]Z=>h8<FF^B;Elks.FjR%M$p\iEQ`OHrQMm=2N(F6H<ZN_6NMRG`kg>S5l)dPIP
+jRT#P=E#7Qp]a$Ok?6m)Rq+!j."fQc/esK06+0p_@T`m1UM*N]1OWS3CMf"ZRML==
+CN"[&DIF][:)N6,I_UGKRRQ[mj)Jn#1$m8s'frQmEuq9e#tSg.ig[h)Ei!iaV`Q@J
+(=3mA]J:*>LE'$Spi2ebP(kI/h\@5Q\WWiRUU."s)lZbhmBX>RMPWH?$F`dHU.P3i
+o#KNK0?5AD!jUIQ+eWYDn_?I++8<FW+3=5)5CpQC_9XpLpkY72e7G3FP.m]>%mB9h
+;=dZ&,/&E>lZR6;.]?L_Jl>Jq#b56b.LO$/&tmP@.$X]CCWlO\+0XK!)uC>!NjZlZ
+PNm<$g\O6P.:sQRUgTI'Ke]Gf*LlP=7Z*-<1']3=)+Og!)G0URKN6j=3'^G/Ta1ke
+!Fm0@bdZIqaFf4Dp)PM)$t(Uk4"8!]ZGMu>+=\iG"A+fYK76;JBNng-;?IKiR#[Jp
+I:btTpT;q@%+L1t0Q8:o6E"#*&rD!kAOS`nP+*%lH58Jq,itVRD%I&4lA08aMB9X#
+^tfE>Lla&r`.TcVNo@a,A2M+j3%ktEZ-`[e'SQW[YanXZ$ZR<)_)p[2i'F(0@g?F[
+&JOUT&>V"@nR=Qsde=el'RPV?hG_1%hZ-^dI9CRh7@Js7U*=Rj>qP/2T)!I:jWeK"
+NZb=A"g9VJEk?&5dTFX/eI83hV2l8#!'_.D\C7EJIdG3Z6Kr%oAZ>/KdeSt`Q/#0u
+,2\WDF_I[^Q?>f!Fe+@UAN$NVq;iUD:9PY0^\PDtRma\@$,V0VQ,>j]r<&LPr]6d"
+'+/6.WL8jZ!t^ZJl'RY,?I-^W*J>tk;OUH+kdCl"a[J`,8IH`?NImENPkS@<&;@L!
+QFU&??P;(lUllHB]&F.1;VaE$MWM/h358)sH]3Rl'u'iS<`(>?(N??V$8=M4<,,]<
+>NtFH3<V=pUUjJL['H8L@\U$b)Yg71e]+Z#h+Z$)'K@tA6Co)u7qju70Pn-V;T.fg
+l_2'M"KmC(j':iDe9#:QNSc^"',h.1N'n@JVFm_pA?9l6JM\@+:n$Q5?jc5'mf%pe
+BO#.$*;u@Fk0[%A84'8?OHVT5i)og9Sl,Zn[aoKS*D7h$b-L?B[d)+=gJ1aCq&H&n
+Y0`YK[c>HbV44RGkE)a>BIF&7@'=b0giEXAY2upKUi!rC97J#H4lg62U<;,hSHtV$
+H+:(,(nq)/SR2g@JIq>*?XuihD2%A_(]+&9Hej*B>IAH0FdsaWN0#_N_8!K+,MaW-
+K5d\!]+NPI&s.')nCliL="<=Sq5oJ5*W`b^.hkFqD%BO4fk6[A:dE%ePYkBrSgq,3
+5\&mm+'(F6e<VUiBT51kC$`hoLDjY.[uAC.o9m,AB"Q$JPQAce4t?Np4(P%I&N3+<
+0ZIn(@MOTlX,P9M#6A=:rK;%b+X(XWA<O"gSr-ip,H4)I+r/o^1-ug@M"MEnbZ;-q
+EkJH?Wq9$LO"B<rMcuO'-QU6+O'1>)\PiYLh\T9-87L.]3d1*Eh*FTp]V:C+P=3pd
+*I+qY$.3t^1!k,-:%8D2TFg,H*%XIPZDN5c=%/'\<U4ntrS(LT[m+IMVk?bm]Y#,W
+6mLNQUF;X%fJgKM/lg-eW(\I>d8Ys8]tdN\IRhpl$YaI*?aO=WT%ajODmsNI@(.j`
+h%u+lZV8-JOQNO1qnhp\bn%WD>]Inj"#oElL1'NMbMX=qmHjd,P^&dMh/."^b1no!
+Gj]Y0GL>g#hF>^bW\df0djae8D7C2TohO$_UrQXgSX6fAF8MjimqDmH\2BQr*2TQ?
+.SXOMArtA=[#S#Yb1!.If?6#\`q9+m`jct$JEAlcl`(oTgYX7;]dVW88hTj/JsI^`
+?.'HG]SX]rH6p3313K]6fQV[U0NF$4k2+,\DsmCZS]7R?G5it'De\WD3bNY=9L6;Z
+#Ob+UaDe;Cj#5V;JGX]0p8m]NYA9j%?5K\e<a&j8KseX1Y'9`6=_[gp#0T"aB4o_B
+DQaeFp<L/$)38s+qY,Krh3keCNPcc`CQ)o@)h%HTm@8Fq?<[@rO^QA'Sp<8?<trF$
+mB0aW\1B%df`13n$d>p8YnO3b4(p";LKsX<cMdKYL&LG\BFl=*Fi]][SfX[mL3@Pi
+plk0:aY):ZMFP`A0)5]`ArH6S/s>]7gd?#<Kd-AOn#$(nU-p2mrD-&\E#Sg1o#%M9
+[]gnRcN*tPp+!6s^M)mr:*=Qg>1Tn0j(mr6cY!/1DP)m7pd`c9jQntRdU96/.$/ta
+#4e%`$K9,1ZgX^VUA0ot@b:*GhTd04l%YnVRZ%<j+RdVa6725`g8FG93Y7l3:nkb.
+`<%`pUT`&N64jK^mcnJI[]kq?E0gn>P/%RuWf?HMcMZ)-Jh#!EF_*ga@g5hD!e0QV
+E@3jlm5#7sP`Fg>pTXT/YS@>a%h=]X,DHhpm\LB2=VEK&B+[-<D.nJJjTt?fkm-qt
+O\$9aN2"[O'?,4sMCB;P#62SX'^(#`A8JX9LrMq'7#"l59U*Z^)ES0$Lhl5lCm\@8
+hKLP>`MZEJOf66PZGeQ&Dt0kIBXk^-W0[i$We(ps7ee/WErh=M@'S-'1"N#]I"q0K
+QI0r3W.'L52]?\K^5M>od:ta_i&RjX08NZQmVs@fen5TWNY/**X[JUQ9cL@-Z]+Hs
+LKu#kQQV@3I:pGB;<&Kb=QE@/+t$QYdRZR,`lpe(\8gCN@N(X%p@>L&-4ujqB1!Y,
+XNp1^lVWup;Kh,SHE\#t*H"]WBlPQ,#b^Qgd;b-ensXO'9"oo">cMWd&ieSlB#g'A
+,URL\1%uk#da4-h.WOQ$Od@/PS;4Dt"*/r4MbYh+',JuUNj@a&;U$gGir&AEg9#]Q
+0s`<gXL^//)`%?FAX>">=P^:i-V8:<$8!:I&h/uqf$6W11DGkP9-f\MB'qW[Os`&l
+2!Bs$0X:K*dn(oC74@SS.PdV5-?)R+9X8^'*qNnu'59*U@^?^K+/t9n8g-%>.^\LM
+Ti6Xh1Q+4K*@6o5)Y5_OjQQ9c-REQlnae%al5M'k,r\:l4&Vn4Al@t#'0D6@WQrC7
+Zbl/%a"o5j?)rB3Z&gCjgi_)f5"/%,PJFR6BfEAQB+&<fb?mCGofrb53G[kDjCplc
+T(]3IHaF4U7Psk'V^NkBp[e2:c[A,9nLRI<oal1.Y?OBco(Fl93t'Ko99h*X.5C.Y
+feXR1MnLe9-Ui^]7FW>79@HA[0"c,I2,_B+1j_`54"bVK\F;@>&dnc*Db'GZ8Q:B>
+o0G0sR(A?`8lH0k%/!%fW1`J_^_<qUoX]E+a\4O__$hDJFE"VR*5PUt9l)=LE`l,\
++\iG*08LiG;_#0D%ft-b*mp*GE"b@!!DHG`"I#ZUE,e.N$W/bN/eLeaZlMGOd1:?<
+7L!i@OOZVAfaTJ5:fTMPPW8$7.26n.<-8pT0d\W[0hA5:)JBFQW<>U[#3Jl+U6T"b
+PSS[9b'=]c#K/;XAFap((ig45Ak[OuQ%p.Xb?2\3=U#0H"X5`;RkdgUcg`8kVgdd(
+:>ZPal:=<pLrikX%hj*">BRAcDPJ#Q7!W:<4!V?NFk1Jrg=">S5-V86eZ1!XY&-i%
+1^sA49_up[]3cs$?_frQAEosI;KlYG!qHmm_G`lL_FMmLd&0lP7oNiJ&?3^H+XOm.
+BO"'Y2Ji\b+Vm70<[hJ&Wm_?QH58"S'r5jXRpa>87.sa"lC]:KVd)+,<`T9c2L+L#
+?mq=im1mT@6_qGqg0CSc?0WkQ/cB!VR`g=*?7?P&BgE;Bm)m`^G8#AIZ/EgchH72n
+H85c%8ke>UYf?kp3";3jDMj!GfZ7+ND(N58G2.)SRb6`>D[GHB9^Kh/F)NEg<@uFR
+7t,eO&Bcon(h3VdW<-XmJoaG<1(k1>.0b+\$P;GYR'qNlcJ3P$3_0D=":*+l#8mP$
++s?GcDXe/Jea7L@57jSd7Z#l/%4o8IlOG,>EY_?2[L-S8$8=3lAEO#ff55)6LLm@I
+&;2`dB23f^R9e%IH5:]"NWW>5FDVL5pug^,7Tu"BYigelHnFr:_MNXB!q]7omV42!
+8N?,K4O#FCaq^^$0d@N:lZlS%Fg7,IQDJnjW@Mq/H?JH&.(9F?mh&HcJ;8],D)3c.
+2"Rme)<u27paGd%,U75QI!@5pGW_74pOglS_))gPXnRKJ$%k1m+dbs2mmdYYfRaC>
+JeAh^(he$DCs=q\J2QRpk0!FY58Uh]\<%Jo[^=.*!dF4!JA\uIpmHn)V15X=5.I>G
+R&:Np+\OcUK!R%$2q`Y)[["?n[.?5(peog%"uo`./,7_M"?A1'YD+hLNVL,<:'iE%
+q14_$I;3VSD%J.@onV+h2fWMQfUZc@AKVhcTf;S)fbo\c*IlGChH9#'VA#-Eg<TLD
+e?.&D-?56Zd>g$24"ZMQ\P$m$6^96aNqchDR!"U6ZQ5qOLMI8Zfd2N=AX8_iKsU_%
+pA^7(jd69YQHs!,R<+9c(cW#QQ;f#qQrrtE.f5W26TLj*F7^p6fotiLRjMp?M<'jh
+e!8?`[X#9L.rRUsPEFst-.ZprH.+tQHG5<Y>d?S#Gb3ZXm@AK>r#,7"q/o-5AWl\,
+TQt)EFEO%SLRW0:qK/d&H+Nj@+M<"BSJ4kY):8OE<M,]D+P&-;)3k8D%Wf2NQd3ct
+Z>#\$fqf?.R+3jdR;7^?,/:(q+kd5s>&,3_a\Ju^+'GV]U7\@:_+Y:.e(T;M\NQXf
+-JP`MVX-%:R)=N_^q9/oV9]7*qDkR%Z"j%;'4ti;3U^_nV5s$"R^KE%(uX1L-:B@3
+R]:k>JleE[hQaXD:J,W0RWe(W&oH>gSX!+nkJNAr6uhbEX-eAGN?X_/C5g%MOlA>S
+DVit6hKO&%=3%G.%A)BhfRp'iZF:LL2iad=V62DdC9p%ZXWlXhS7(e6#9+\j8L]"u
+9mHBO_rh\:7t1]0OD_1$NMf1=f/[taUNl&bEL@D^4,:<.IsP,]p.&)(A#alUlm#sX
+F%Au)2G,E^$*icdJ>5qT#=H+]:jBjG06^-$41Im<5"^"mG?`Ln<mb`L-b\SaIWiec
+VXj&=lb6TN^F&]h2WMOX-L<)V]shV\QmYXta2'W8JSn_)8oZ'bQ;9BSD0BCZ]@;I.
+H!,on*S`F9N[_jC4e**0o\uoim]BbTrEEN*BR<U%l/#'JVFk;uIU$?\-Hn=Z`_#BI
+rWNjHkV3r!<35TKWa!b3P.%:DMo[4"0;G8AHuuI/aiV]3`gi+3UT1;03p:(3aYR0j
+7"2'sKQ*ZW.VU:W@^_:miQSsO-#LJ<r5`,Rn'1c@XSf/I]/&\.Xd6DVSh"kq0!?<u
+HRW%p)@W;i)>Z^(8'i5U+8W%aZ-0!b),L,'Ye4/RNi$Y%J'a9aXHGdg;O;+j<G?bO
+J55f+2?r3LXaa35dWg!_3,?qTj+6#lO?!1']k')]XKS10ZMM&YlpO#2UFWXUUo^=9
+4[Fi#?P[o2.3tcFb9muN1e!t*Jnl^O>ej\LY!&>X`jaAGIC0>dT&/a'a#he"`)LsY
+L9K=9g:a/`S\K<"T[>a%@>5bM7p<CXh;"@26ClCGIF<g4i9'>+hgM]b4oaB0GW]N%
+;IZ*7ILY&g*6FcrA0s+MX?kfCiG-''T=qekr[c)C/)Ud/h-^q4?74_R5MqLEjAF^g
+&s0W[3=`aAgV-$YD0+W!9M&JL-CHO(eW3n)<6SZqV5UCU$mk,JCZsiZ7AaX4A]Tge
+hK>ijl!!A0AU2N!V#ogN7AdKX`)#WhP.n%4cf@meI_%Xj_5@49#/7M3rj\s,H,Nc,
+gl("T#)pNMe8685`r]5=G(K+2JoJ.)ms^tshZ!0pZ=2V[mbYs6rnm6("mOn-F^Bjo
+T+@%d"n>(D>!E8!*eEJmlWJ]fA6s-F4tq5!j4p79m&*S"U)$os"nYp?mCqKO(8KaD
+4nN)Uj;]cC5?..`fBV7/n"/@U+*%!D;="okao9?Pmqt)Qp%"^uq%h!'?YB$mGP.u,
+m)=?RT<[JW)>(\5qKsmkV[NC^R^t_ikLlD05Cc8]YPj2Q!b3ATUSLDBOj'aW]Z4Ib
+_>l>/N^eU&?mqlZ(la9%iMah.3"QM<OOt6Y5])3B+jgR[;Cr!&_;Sm$E6N2U)+;Js
++`Q4E3#b/W6W(q7E&!U#,Vb,ug.`u\9-hDpN)F>$'h7/dpl+]J(P9Z&Z?]-H.5$u]
+VLobnicHuT<3*A5[14WSUWC8A3N1/,0c:G_EXIb_1CB#lmgs_7`+V+H95>,D]OIjk
+_8J!jld4K/7N9`$p:BJ=iGuM>D3t`^f-MuM9P/6i<U0gAc<bSF):h]F8<RR;2`n/\
+aWqd;oJN%cP%eg/i.h,;"@iSK)ND%IRCLmc3O*T.gob29r\V-.L1;8aj-.[KhRd8]
+msi7,h*m)$0s>tA%NJa>UHU%EWRf2fl9=*O,+Gn>KD#I*liYE%^Fp7&gcs,;jSC-_
+Z<mGk%]gHF+tn#P!/>G3JqYL:E,6@MDaZ5DWe$7A&VeT$/H%X9;WaJS+j*ji75:8S
+*(J>o@15VDN-t(Z#]r32.-YhF'1XfKAKf(a.V/lNO>LYm`pl0$'hU2c3?uH2Pa<#g
+EcSc?"k"Y;)SU/8K[:mYTQ6I'E`com-#03C2((.0M\48A>5XAV_2rCMch"g?ek[cT
+&OfMQ@XcP3:\p$[d`f<f3R4u7>tLf5XUsNIk\+EBL(kU7V4hug+]?^/eO<0]Mk!pL
+e;^"Z3`\)&<e]%F]h_VXF+Su`ZPE.!=g/0JkkeM)'P+BO&KH+R:=]5D)VW$8Z"[/g
+!cI_,$_<,S1A4/%D-;b_k+"(>]k[;KeSVp6LGmCABt;iTbu65Q/_$!;/tMfX?5G(!
+H.P!Tg''jpZeQP4m!rL`ii(><1.e1Z09!nInk9lDPHI+7j>bnYlK$U+;AirB5"@IY
+ffDeG"u5CWM'V>o?]8SWk#`Vcd6!ZXW@D4gP(oAg6(qk(2N!4#q8RQF@NgIRT;"B$
+Z^PWs3sDEq.s>C<+H:i`Qt&BZ,5A`0c@M)(R>O@$D41sj]<;%V;8&ipMW"A+\iZUe
+m1W<1[I>-<hWZ<E`sddhq;(GZD\;u_]^U<8.19t)(%oQ9]]'IJE44(?&aL#/A&tK=
+IQ4jb2K*&c,'quJY<\$GES8-D(hh8RScV.8,/,Nt*6!KH"6;Wp[?]lnS^1uQ/kYC7
+Qd21[*J8&s=-)/m*`L,3H/==!l$P[p:[>/hYI3L9Tte;7Hlf..fQuAA?:8U;WP1=h
+8(1'V43A07^B\?ZR$h9*ckM>Pi_K\!X5."L9jAA6`;AAQ++OWYa$,Z*qT2\UIqT_j
+&uZjub+ma@n7E?#(c_6IOkjX]$15I%_$6U.q^oh_bSA.UTM.]bG_T1n2T+[:R1[%l
+V1fSF#VsEZJ1ujN;CW8*An%Gp06H_,QUE`,ge7!)1(6b)PB:\Sgqa\6nRW(sZLUEm
+'OPa;$80=Sm29@fClSXhXi@`tEJQ_C4/o0C+Rj@\R,!No,oHrf@QoR.lWm,@-,r5,
+LsqmI;+AQ!0sMF+cA3Dm-ih&f&u&(?auW`QVnQ1U3F`cR\0.#H,kD]eqLd+85EY06
+QGJrGMi;bhP/t0:ac[e$O##QSa\<r&ep/R1g<"$p%@NgI:G60.^MF=tetiSP6^,Zn
+2"NjqbdjV#=H(g@#Q<#oWS]?Q,#k'@no6IRaQ7%hN0*QQWImXfgB"i6/5]OEO<d%V
+M6R5G.H($@1R:ZB'(.f=-<3]pOW,I\?mlBSpFU!7])g(g:F(?VSQ7ql.6IWGZK)/l
++K,?mGX`lIGU`o*'XPn`0E`*j]"&Fr9&*l,:CBQ?&YMr6Jp:6#ThHI.OJj(J;V!0(
+#SsIs+;Fu$$4C77(kRoU%RE?4"X(2A9$gBH!_?#kTf=KSOId,;859H`V%ol#:^@+.
+:'cB#.KYc,%7*6T$%Wd>=7CuN_DiYF(+R(#+Hd'ukYqjV.*Aoc[_RrP?3*<a/=6JY
+'1$"KFpH="<DXEC=gJjLWhRhiqSEZA-%)g0WR_0%:_;rk<!lYK-<T1l>H<IBY+Xti
+=)`m,.n,f22$2F\gLpopS[Y]Ok-^D1gKX!'F0;0d-<MBg>V4l0"9B"BeGuBN!dI2I
+5nkGp5c+eg\4Eb\>0L-M?3i-=1,!g&Y_6DU'WZq=$5O2h!t\9?CfjB9+Yr6<]3I\i
+Kj;'/J.r)YZ!$BegUELfn(0gp#Qba[$2$[t<8a`r_JhjKJQ*fr:d>\17=b`\0Hc'2
+SUR`$rkfKYl@W>'G-0CF\04ng"BttHJria4=4AUO!3(eV%MHgt-mI,C9XWuGnp;k4
+!(trT<\jid7T>Kd&KpKI-[O?SXj!%H#6ND3`)nXf$+@,d=X.+O1HC\#8*9uIGI.?/
+U8ej!BY&d$"'nt^AmkAqdnj:\m0"]Y`6F[>(T#892/9#S:6ij:>T4;h-K`6ul<QYh
+;4aaBg1!lJj]SET))KiIBUS,0/ZCT+VpnoE>\j%l8LG:R"<+USCA='ofk.f`'[j%6
+!7+Ak0a4ISn;1i$F!=Osg=\$AQ^ShZBL:]T"sF4mZ^RjnUUgp=Wh*PN!)O69D65m6
+['=N_Wa7WW7c*T)o32C"?sSLRZlos,K&#RXEWIgM(h=<a4r1.q)nFj[d)KuhOhJoc
+)WC7dVf7/`?>X+F5\G<WdR7,<\"H.GqKs3\gJPmG7jJCFgnsWHj.ZjOoEh&P&\Qrn
+Hu5"0hLRV9kh:`*,])UW.7!'f!`upJ&Mp^5#1c^q;ediu4K%!h&1:?s[HQ<c3@@=`
+&ZW\^muStqef-*jN3gDCElgK*h,G&Z&Qifh>>HRa_ZPk'6M%b1,&>.eDa8B_=M4se
+]?l9#I(%ecfq=f;%(I:`(e10=f(0NqSF/A@N4etKo-db`UT[JW8=unQ0#P@OU[3#(
+/04<<Jc!V<,NfeH%OK.E%Js))mGA_^pO9ckHFM7\Q`&"$W4B`iJ!9#ms1_Q)?f@aj
+NBhq_R:dgrQFYnPk#;OpGM_N49-^)sSUohus0:g;s/5@.OV:NDUXH`7bPN?"^_R%8
+(j#U"8=1Mm>/-!n5FJ7\,PsYDr4k,Q^!lI8qsg7ffp*^C5V)f#K4udHCc_=p2VU]e
+b.WX/k,#?l]!*Ki]<3UcCoQ\d]+_I_>"5>mm$iX"WaI50djR>QR^?Qo1j]36$ecn(
+n2s(a(P-J>an['!qj\?H]qd"e)8r=AR(GI16@mWQ]Ghm?c)E^YNBABjF<a-U,b'01
+6>8eRX=1q:22[>N_Vl7s_H"J&.mp*c&G.cGGdfSoTJik^](2E.'<r=oo*cRn)Itb;
+ZZUhT.R\A#RaZkK.Yn?IQ]WLuR#1VG1VPgg9Go?E#r%o:KMRN%:p[N,(p$Y(ae=cP
+<??CAOIBdN!Srai!(E)N`G(aL'Ncc7`XBD@UNr.o<*[BF9b?quLl=t8'NuCp8k$[!
+71<Kl<*4sM('kU_(kD2`C:2&<;oV(Y,Q)K!fRu&*\A#%;`r\;tYamo#F[mtrT7dnJ
+]O8-hD@+/$a!>Aq+Ig2/6UdE1R`]`mCimYG<(H;#Znu/[b^5/AI&3'P8*"qcr)lL*
+JIqoMOl9Q*30"Ydik4caOm,e8kbbB(Nfda.PsgXhETa%]F:XV$P(KbJ6B4WjPnGN(
+TEtB.3H?4PL(7=U3Ul'mL`;P"U(<*AW2`^Z3Lh9=TZU3=2)49SS=L6;SdhBA2[#P*
+I%&2gXNI?)$,JN`0glef3lpj5QHZ)G3@G5N[7Ra"P16rOOie>q57ti@bI!8A7(Pqc
+;+EGR.E"Na";s%+Z3i.b8g)WtPH-`BefKp@[c$2?8=#IXU)u*3//"f]$qVY<8</pt
+bH(CDM)cO!O%DBe$B0oVKU/68eOFY`#tYZM@S9FSWteJf9dkdqR7#+jU!3<!+GAWE
+'W%:G!%-qWb(S\C&nOYWMp9?'c>%%6m$^YEj-."VP]X<-d"]R!1J?41O,W$.r:%h5
+1l/)tbnQ5b'1gGS\5!=!%\14+!/.eEYfo5o+1.K$4N9Hdd*-g:9T2>"F/(omN=6fO
+3jEH73"Q/L'Jk;>K&@?]OIZ_0nr1\]%e-JH35LJ/][4j9$.J"%q'*QZih"[4M8^+Q
+WfBqQR60L/MN";Zbmo`dm7nen3'@X/KVV,]K;BEU#]*U9>bm4uMM]_B\31];RNBmK
+5gidJ;/q%_M&&rRQ-p6/N^SoT#k(XNS!&IXW8PFT_@[=RYE?+Zd,S)_]V6WYks%l`
+%Z4?2TasT2%N30Y8gL;K9@FIb*hFXO$\4U?;pSD;JkmrfOpJh);%f885n3cZLfHpC
++c;G:71W@=0EL>BI7R<[M*b3;9?g./M!3)cp;lW!*9`ChPgIpl8CYkp<G_K];:JTU
+[8c]_M^Y'NoW$C]>pp(p:`RT5&Y)7jbYUk_3jQT(A'1,%Z4`C)($&(;+cDV9o2_7s
+<dcQ!kk>ZsJedL/$#GilqH57QE&DTfeu9&+kdqmP#$2Dq'XL.=+Z2&]D$c%hN%+Wa
+V0LS!G)S.S($S%cfUENK],,FG==n3M__i3d6<@H<^Vtt.!!QJ1K@d)9,33fH)KSF!
+L=`\Df+PcW?&sq!G?BC_-S]0?[=MATPn%)c=$)jQKiSmIXB<_of+jcUm=<ldNY8'g
+MT)"8$D,r\Ru2od&X:*mlkiO97^a8l4Xd\N,+Uf)m^c;uW'*Ft5UNPC]iS;S>3I)\
+`NV>+)-ZF2JS>jj'&E\,Z90P%$jBDG`1ab5,d;mh04Tkk?l"]P,n-682koFf`P*h.
+b1M\hg%D)p9m2@Z3ER;^=-[RVH^WZ#akUlmg&6%u`.2+CbLcVY1XU3o8tOi'$&m,X
+h)3Q8RK-DT)-grE?$4\'M;9HEaP>n.4$].gV:1Os@2s^Nf4./l`<<)]g7.>oUXdIl
+A`T7Ze_V3,Ra'enOhG(Lj<(oNhHfC]J@V!mleOREh@8[TWDDCTk)1rShVIa/mI]:!
+kgF&4Lo\doXd7e>QsZu<gtJ@W`Kjl]`aA"2Up,_^`Vs5@s'5Mhi&Xlo*W=ldQ/H6'
+i!'A@C4Y:q#MG%t@($5HL"fnq$fD<NT&o&QFpoOrlX*s3(Lb?j4qQTDm9Z@d@."hn
+mM=`WnR50/?T&j3SbHR<)r^K'iH1W!-.lA^IGk'=@QeF1L!lE3DV@Nq@VEF6Gar6'
+!T8,IVcEk.<[_#:#2m3I@g4RF[;Ofl0]M[[@,<ABeU6(NRc@-R>#h-RNSiSN(uhLi
+f'VJS<YFCtk@%+Mi>q7ErYB"`6Cd1!@jrC(c5Pb-38p`$A;2,cIRTQ/8S#(S#rY!,
+2Fq9e2IqOd?^7D>m=&;P;@:DCic\:1A]n,O<asnjAVMaI4RqEk1#7RdA]8Y#L,7pt
+>@TQKjlTqX`]%Ip@UTh+?G9HK7Qb9p6Xlp)A8Y9,7S)B"BbF`e$scWe`Y.EG:Y:D?
+jPFJ1Y#/P3Mo]"TfM.9*c%AOjCtL(XfO`*`d7.5=H!!76>qU4fPm/&mG#j<Lji2Q/
+%FH[VjQF7/i2O]R/q+t]EMga/T*9l02MUD6iYs4tBEj=M-/`E"Mk/:lB\%WC"rQSJ
+mRM:6B\mr>Q$d7C,+:-?l!7ub[ZbD0(T9NcBdQGdG)d=/f4^J9AC`j,m\("BP\J^<
+k;GG*-$"ltFkH)EaGtLIk,-f1H>!5Ul?6:f^8jebIqQ'YlLiX7NX'>;fbpr\C=SC,
+p"4%@!,9`DCKakSXs\!KG3IMfkmjFiL:c[c[;-hHlZI5<dD"j?.VoT.C[T%eOWj&9
+^uh4&m"I?6#0(2fa_\5!C'LqZc>[O$cAE+Pm*;Hm/pZAM.UDarD(^BIQ"jUuJ]B[(
+CMeQ-NecG>Jnao6j.5mFDS#4ANp7tF=I)$Zk1j\e6/FcomRE[[IV<U6md+!,l+Y6t
+/b&2*hsA)BhJSp&2O\1UkL8jmmOma<IaW-;kG8@Tcb./!K4LU:A=h0>BZni8[*H8<
+_81Z($39hU''cL6Jh'E`$_Wj5K@4]FkM)0)5$/Y@566>HYn.9e/q[qCC_5?+9GJbs
+\uMsCX;:9C&F\"EDsIj/@;bRJq!`\9$%fhr(ncFFplBR%&Jk\p:C/]0(JH%(nHemY
+dul[kql.mQE5ql=mfM79'C[/\:q%2U8<^3_U%+5H0\PEjcQ#6+$]Cnk`l!s"LELT_
+*P@F4,)[WpfoPYn!gQ^!Lqa`CS&X2bm;eE;0#%_`[gNWb-unR&nFn'D-Td^!&ZZ:!
+E!J>"'&G+Y#$Y2\`bMbVf-p,7.fmC7Ji=%T-OZ_cddtcp3ARWa^HO++o1es5nKCT+
+!$ME5Kf=irN#36R(kVE:Kla.`_1)hl)<SJ/Ca%8fF5Iu1XHiD_1`#BjFZQn"@2F&l
+](QqBEPGXrbD$G)'"EE#XUCZipAC5d_"AL/^+7'A0*cP`YB"86$BI&cLErCV8T^\u
+ElS(OMipA=C@Vr0\K>2L:_`C>Yn^%:SpqsrpMf\FQLmNEEM"WQmo]<[*B+hWoZGOl
+f1p;b5)oIgGG7oT-NS9KM2kYe!LOQ0s+'hs#E444G=Pg.XHnYY>De?%:^_&\oGF6@
+TD+ui!<TqDM%Qd$TR!#]->t8Wa-nj[)gT2dGopX`4f!=,M=obA'f?3jR8n?!Mg%$K
+Gh3"]:IfAO3\):5!i7/.$k]K>M&,BPDXr@9"O4D1XfEJVMUVWK&/53/ZoD27au-uF
+-b#hj\<*FdnK55eLASdi6?E#ne?YF)SNt-[EOrIGJs\$>0I$WnZL>IXFeJOh!n`@8
+SM$r8/7#F\)WH?>-nL"\%"bee#U+e%+G)QsZH4Da-\W;UbOP0EZ(X:2KL^7/eeQ&c
+M4_ruIDLN-`Nc'dH;"n(H`"2Z(Ee7l>Eq+XZPG$JWNBf#Wm`)p'!X2B&$e8//jd03
+V7"nN^8q+GX;\sW3lJ+((Tnt'Js4'QgC(+SOt6C>JHF5VC==b#I0jtPs(dClQQiQ9
+)$g5PE[V_27AGFLe6FsI&BX"mTh(bK-5&ngE<-W69d5dYA=.W*5o(W,+JmM[-kn?H
+$Uu?!Lr=$N.N&7UYs?N214__6d"kXV2&qZJ$,QaScr)ZRM@&8D*-A,J.0p7@C-`Pc
+6kC*T&^a:H<A,;M7`1X1]OEW7%479Q_&/bAN`QPhOf78I-m4b10g[<E:FQH?L"9Hk
+VI;6hc,BcVh"D*\K[XUSf_dit==0+u,@Q,4C+(Wh$.mgl?Bd#\$\hX>#)$kP&/PKg
+&V/)5>SPh0Q:j*1%5F9q5sgJ%:l@06en\_%Pu+C&jj\4edRajF<&I;<>YJtlKMNd-
+75GOK\8=F7!f3[<:rI'$)[o4PJZ.Fm1B%OgYD_Q950q.5JHj=hfEDUr>RVL*!<DO!
+4s>`&KnbCK5T<#6&7udaDtDs+1a/6$*/6/k2B'K;r"?EUE@alp02Y\2&4Ni:"<7V3
+]MQ9nOMl%'L7t8\g-\0;()hp)ZpL+7+eWY>aPh)M*/=oDDOs(Db0^YUW'kbT/SX-T
+)?t0Y]GF8iKZ*j^P;LW([B7Mg#KnoNcP.Ng]S@7j1=0Sb:K!in(f&Lo"XluA.h3PR
+$(QUp8<PhJ1WPWi6RtZH6CB3U&m[4A7MOn4)MZbS-OS#c`&+>`2*@91Zlu5ERDLV:
+*;'LD0L7!6M_k50`)3#s-.g7hD#V7)>UY:b9.bK$=V_HdB*K-*O'kp%_ciI(QAas[
+>B$?(crZOXPB"[CKCYGP:JAH=N58Mp6<b4j[1GZjmFuSC<trVYgs)\CAQtL4^N[@i
+Q*r]hOt7UZ6;(RF[_FN?</&Du49(14<MXnAZqUX:)reC40\4aiL.`)k+hH=8A6E5B
+[H74E0dHu>]$WU:16-C/kEBY+T?:9ZmeYKfMXpp)15_Kqj-jHM,3ebY8!ZhPDQPPW
+)5P4IkZ-bXP&)RrGHsFo&9"/S+g]W1##K]BSS3"\iDFK<::$D=oHas\C`C<Sh/GE0
+25OGoNcreS2#]5.j*0)n)Y*B)bH44GY:m_.d:dGD<6t"hRe/T^8[[`.CrJRAe_FZb
+DXWWlfQ5j"Bqi%]QG:c?.>N,gnM*6DqcV!8l(i?ElRN2n4hb^oq&Y4-KJh-mO-Oq8
+[!h:S4^Qrb+a]a,fl`EoEubK-0=BS%MJ#;dHCm^di:._OQMEF)Z4l2H%!3CP\,,>f
+'EKoVna*a7`!k>JhLLEj#!OmcpYD2k7#&4X^/jUrc\rYE:hBI=dWh5/1VJ4XFYtLJ
+9&uL?$>G9k(a<V9$Q>EgL(MK=_e3<d+F?d68\uIX@UTfeX)*/3>gWY8AF*^Z7n.JI
+fY5pOXUI7EGqhnmVmri.S=@Jiaf$(&W4:9ClsBsZL!2kqCDim8+[e`40VrI<Y0Cu5
+Gqh0'+ss$X@&+d'6nUYje3n(Nj'IWL-:+#@9,QM2/r=G<(^!5ontR<7OmNKI7cIo)
+,b0XQa2mp63<^f=4%b=4JinZ"OL<bpI;R@a<Os$r%3N_,6HZPhW?h&TA[8@SL_ZJS
+fkROK]Y?*u"XU5qE1E(0)41WiD4n61Lsh2:RI^bs9hCfPip;\nF&ka`WI$@4$cSWN
+Z:[JecJ9((pO=UXJHK$jI:bUg?W4`[cQp))M1a)JW?Q`93V`iNl8KkaWR`.k]0E5M
+^nE$qf?"a;R*7YnEtgo,Tlu8]>_M`_;[MHV'Qss(%+gmq!]VQ291%ho-oKMSB2Z\l
+#><KX>4fg`db4tl(4=CN<+_!'FInV/ob!rq5_W/oNBl]<*@Zj\Z;eth/o$)5T!X(c
++!XsE95MnRoU`027WCbobqlFYEbeT%$AD@1Co7s[ZQr.M>E>mNU.oJJ,[#V&W]WJ%
+0ClU%fQ<5'-%Vsc%7sZ*4Ye,&Ik9a-Y>P/4@tDmdXHgW+Ul-<mlVi%>l;#5tB(?Du
+"a-cn9k:(k&Q*9F@8)uibLe(5(a,BSYio+DgKI;M=b3;L[RS7kgNn<\'t13q%c?&S
+>!eBO(:6"Od6t@h7Ou*DB2#&K>2--4R(^X`B#kt-bFa".D;qgAg#AE!lDF#4fPuc8
+*E'Jkol#QNW`>JQ+0'7'S7-`Y<0k6q1e_B)[B-s>i3a49IqMd"0TObG#.j^SHY/5&
+>4mcR=X67gS1Gc!(ip*oq')(E%/[ksM7DPM%:<Uj!_BZd!6:JjQPt;H?mo'4@(YRt
+0uW.iN@n<SU=tQCg;9+X#l3Jf&!1"M8\6r'-.%!3FYRG=5#i6p7't$F1<F<(R<%,n
+[:ZOCPa7,'%dBDpfnYk,9i/1YB4e*fb@:j)c07g?RdB2YF*'-Be)^TbI)LY6HFJ`E
+c-%YN:Fd?Rdi_2`?Kejc,BS(e7]5BNXU,Q!1pS2kV$/J(3S(BU!V_FBMc&_o?_l.b
+9NgSO<G9GECr*Zm57X6))b)nOQ:(W$>32m5HWRE#F#DR'RpQ8T[XFrg@7Z:'?L4c-
+%Q8&u9h@Kl3c`l%T?3@j/al\VZp+(28kMD2k@O$Rkra.odKY%QJ?K5C\bC::I2g>E
+Ce*<3cd^4LL*&rMK#icVE^ND'aZR,@/&=(7P)+K3`c/<^Ue5-l>^Lg=BbZ]>SuH7Y
+Hg-it`oc-e5*B(XFtfeglbQBGW*F_H-m(&jbEHWIjuaH8E.n-molA[8*9J@gIX8F]
+Y3JLKf8T-WVmCXfEoafEB%96>VmXO`IjbMICOS2f[i,6(]0C-)]sruD[p\6!l`m)d
+<93fR(9MKa?M"^M9Tmo2mQ;Sa[*ItfGP];AHQQ\h=)bJfj;:U]JUMcF5N2Gkc1+NE
+Jp>kTKi'B7l!(ot1s[SF]+8T<BPH)D:>39`%8ZV%bKock!e*:"@J*5#^@2opO1^6\
+fFEM2mlo(<4i=Jt?=/%=c91$6#FX8-=5nHP9g)C(1[iVuk&ZRQgs)?sI=:".o=q=D
+rkG49d];0lS[I&kar=*TS*Y3mp%acc<.5n2Sc4,p^_*b\5)9a(F`6VsVg$,F.\9^[
+,2FpOU*\+_DUO-^^7NZ`>\)ni:_r`"&n/hbGQlCcV1_e/)J`(Vq^c8*L>)fL,/V\j
+lHgBfjJ`*_%d.B5"U"8b8J"_@,"#)"!,Q2k``VMd%f]3RT]6UZcXd/oNepCP",&9p
+N&M#1G5tC(Ppue@:h^5m&Bi/]i36OOictlkcH31:U&tt],LSbl4UOUN/B-E'd#=i6
+*6`A^66N]>$/fD"p*k]/qX?[DTKs'*V@0,#-HT4F8J[?*O>/8>&**/5$S#4iQOV50
+\:g1-U<5uXG^X,U&a<:+?pP="Ej1X1VPQI.aN?=o2IFI+9nsMsC]&u#.hX$AKi%9J
+d4GlaBQQZa?,s$*9&-pRAtDGc>bt1q";VAb/geL2-0ZU_n2N=:GZ[<u1ehf`&X*'r
+!<C%2>)4aK7L28V]#Y1uk2go*9!fpVKLI.t)p!JA#8Y_/,c$DDL'>6-EL6s8S3Ja^
+cq1n0Wq?%(aB1h34:T1*LPl2Qk)N(?JFTZ_,OX@O2Fg0ra9AA4Mo=*3!uXZ^*YIJ[
+$L8MnBOakp/[>_b"?&I5M'5HBBk9(?Kl5SgYhCG`lGru)n+oZ;W<[.6"sjW]EW"RM
+N<AVN@]N%L,b@.pIWXZ3CIlV,E)Q$jr)nqio!)q9&&;OJ!80-!m3S.]V*<cl@T;k]
+p2:B1-/g5pdbLtZ.ZV+8m:uEZ[42Hq..CLnV=c5?P:JEFSB6RS!qR)1E0AI*dLu%G
+MVTnaDVg#oRW624/r%pi@kb2\9h`YT%7Z/MY(eCE0#m+aW++Hmd$s:.D.NDnCc=.^
+AMWgV1JoF7C!sn0W^eK?2%qhglN!^!>1',IEm+nL,gMOKAC-:X/T-\%LTZ5@3i\8D
+-$+U6Br*JB0.&/K.u])dEkX6m84s70$=p7GZGAQ,CBkN2.ruP.OP"#`+P*k;Ou#@m
+;aeiNb'9Z51eoAso@#4ED*>)M4nHcV@b0\`,%N>6ZDZbPZc,*<CB<ZT<90Q^";5$Q
+>s;fH4Cr4hY#.D?#sX2t5P$?l1`IJlmcG2U6M(\eYU#Fl'M9e85-u=jWZacO/O2"c
+4XP@JZjIpT%ki"M6M+<BoNO*S1I?0\!E9]S,tgXj0gYGLBN/:hZsuJqB!k4>85lCB
+FE'bAG<0[ic`H(HB3u\'gBR;P,4XJ0'WTn<r45Q\9FW4?9:V+WR%hhL6D]i;m.j:n
+^Io1(N$_N^Ph@HAha%G0cDi*]`9K&K`m(\99k3chVWUP#b=^l?:56MYoaO\RVTdQL
+e:fZ!['`]Rs&-l\9f24o`H"i>j\7T]+u1juPmDC@.`,1S8$r(h7<1f:+O.;Vi3bhd
+og_q48OQOjbgfNleSS<@*2*t6(M$KV;lqY^D!oi4M)=k*,]kobq,rfbH%`S/:`Tok
+2Q?+F=/[``e*_>Jj&i^o=V\;dosdFalt-p/5pPc#c!akAhKbBpk!a#3'P1Bh`*LpR
+53LO&p$+nUY:oqk=AH+#"q%F@GZKNW?Oo]'.^it*&78/5XTbG#p)H=-2VmKMM.QZ[
+0D=]i/6ZW)iP[i5L(mr>R9d6M@Q#/D[S(+Ar-t"rV:J"C:<@!H:Hb"B6kK9Y;%6Y#
+jCsU,f@BZ$UuomdVca3b5jTd&p6Ae-b(sY\>qK,cG'oCZ]4a"g8iESSC(Ed6gM*K+
+C%dO#N2:9T"'oPD&@SuL[^g5j^L$Pr=B36SQ:,(<R'Z(7B'Q\2Xj:S$_/K&;@gQ++
+b<]\D(j3*+A!SbEoT#nOA7-,FGP;,Xf*--eq.Fmc]63dcQQL8q$"LDU@Al4EZ3;Bs
+a@tU?jT9^,2c?Q,Wr/ZGrM=h``6WU*Km&O(d5PN^,BVi[A9,\aK!Gn0GAhV;(,f6W
+El15KQRII;G15'*G:5OuGD(RhN.H1K+W#!<=(Hn!Y!A>D]bUmQcjOqs/t>LnI$[%6
+Z[+LSfl/D.8(ZjN7SI=^O)nlqJT7lAao?i9Ge(7F?:F+-"TiC=,io5+Imr=;Qd2V?
+s*k5)J6,6]GK`FmB,m0Q9.;G4Ag14%brGJ]K31Aim(ZS'87Zs=iFb36#U22Zh]'H)
+<g?g?3*,+FkZ%]:2[C8UmgFlH%nG8:L\P)-,Wq?5EJANRL=h>'Pimg8$r31>L6Z\0
+'boWSTi2Bg>G;jh"V-u'Z!NW`N)fmT2/)D8hU7dq8J.Xj21:HAU5tWi:Umo1\BR^7
+cq&E3:).gf"_!DP,ulA>N_(/kGb$2l]8#EAKF19gZ.C!6&DE,r61MpIXlr@%16EEM
+LWuSN`<Ctk0-;gqM$ICE6M$E'h2$>E00(e+EVG6mn!+$>PSdD_Nh5j`o7e,Y=ooA'
+\IPL;_PEq!2H*PA/'TrN*(+8:]Z$[?m?O'eAXTZ*6-SRN8<g0OP!(JgPW>S-Af$2(
+?8\NPZD99>RCQ>-<LJS/RG"Vu,V,>gAXr#@S%7+U3K'Co"@AO0RsF7N)4-^Y19O?&
+P1dOA6n7p*4e-flTLrsL/Ld>1OHu8@SdNJo"NqB:l(TLlTQ481=nS;^iM"s]SQZ)a
+Lg!1"/"8RQU#_SLd+h:\*t&Mj$aB3uib\2j505#>-mj[5j>ofP`(4Xr5Htn*#s`)p
+.S:hpj)HaR>(DX0N35SNZ5S1Eo@l(^L7%=_W5^<8@V61dEMf`cQ!0\FVGtqqj/[![
+VrS1:\p$sR%htsJVAX&5qIV=*`t!be(ik?pGQ]e$;&O"8RI9+6M]iegNsl.IWBb6u
+K3bIt5HpM@Wd9R@C=s?5ZpN!#Yr]Q(qSTCM8Z]1PK]G8bk`AF5fTOteXJ>BSO)#HW
+KsbNmH?sj0#gU>1!(t;(ZU=&CRot84Ogi:,7qW45mA$SXrO<f/HV"etGB(0N8J3e5
+:ck%9k(1%B`<F3B/At9lHWJ%r[NT6j7/O9!%6]iu4uS9fO9LW+c"aO'^V,W+)#5.N
+q&kj@)LmDMg+,"W#napHPmM+fk!ar?W)EGoQ,&WT^uWbV/Z$9so>'R!eF&Q@nTV]a
+WP-7DDQr"p!YMI\RRG&-^0En?>F<^JbI:#P0fHjtS(M0i>,]B+]C"LQ-"47$GIJLF
+`qob6j5aElD4aY)T]E-canSHu)7IJ,-@CNh0-]Q-n,s_HaTTl2"WCD]KIjDOg.i2;
+S:j:k@DWI*b'KYOLfG5":KrJc@qF=)*$NRSc,[Gaa%B.K65.BYKe7\sL75Z^]_A<b
+ho85bc'mJ7gB)PH!_HY#\kqq!`D#-GP#5L*MR'S#L6]oP.c,in%Qte_X?8-`7%Y`M
+ai!cTf\0Ni+3L"kf!?%)g[WO_A^10\,;Dqb4L5dm<^,i?'jG7_KID[kSHJ2s^r#cs
+',#%88[0^caM^lDH/-reg+=>:fir"ClSV$mKY4T<g>tsiUfB+3_lfPY\R^JR`aLRU
+Z:ql67gIWUk81$C@0hW,g54X`pOKQKKjMcBP;1Io>AHBV=M-1D-lqnfLgYlJd9jc9
+\],BB=V]n/ET,af^E_/tIG"u7o=1@k\"3]]Pn6i!fgJk@:S&fi^-1CcKdJu:K"a!/
+>U?hM45h4c^`G);jH\eJ6/>jcjV\d)%?Y.lB.7%c-^I]jIT,Hb(Or$;j'p-g*cnss
+hqalX_Hren^0FI`I(-hLkIYg#f)b.XGNs=sk*oH<jeM,[?++9b[tpub^!l#.!I<?[
+h@,E2j)\G*2#eKJVsQk?0DKD>gVSZ'Ji6!CVr1+K$h0t7/IgQiIBW,&<^Z93(pV\-
+Zg]OdC;T,rW)H\H*59@&%FbXm3o<49>aXq*ISYRO]Asdu_[a&5cg\[Cbg>^O6ri\Y
+rUQ28nP!nY?N]`E8bX;,8Y:3u2V^Jh$Z_kGF?a^;II58.4nkn!]"JKPhXUAj%Ji;7
+q&Q=!8o:(5i'qP9WTeG4L']_2dJ1K$o`S6rPIJej(eQC1rR-;C"OCNg6:LDaJgDE^
+J79W&iK2u02@p_A6SY7P>W!H/7fi^ict4mK5iC"_TXl7"K1*`++ir/R+H8pHK345^
+E<7)=V,2c6,\Aoo%>PRiW6B97)iR85@r0S15b,cjPNi8ffeef-`hRiJZt_@n9a1[X
+Yfp]6WP`Jf$>jg"2Alq"E6)/:Bjq5`KiCXW*d9c>cpSR/jZI$MYLRC\b0=h9J$@Sf
+[AuHf/2=S;NaSQ2K-uoq)Y-5Rc#+_L&41<?C#udu/K'M%QJ*;gZVf2iLAGaU[[X@Q
+NV3-FG+V]NgM<o(8I]R^DQ_6YK:O?,[0<p9DAj!SO(#?NlGjh!`s6+dg$cO7IF!+_
+ZitCFE@tl;T@2,-]j*aE6dO`L7&MoF<3#VbjKsuhD#LKXS']rG$0Z2d#&DE;s1]+=
+(BQBA8nnnn^eeJXV6E9mM$>,eG-3*j)Z#p-Tn%*]#-e;!SjI7\cO?P*csX`0OUAW8
+`3H*Q)o])18u@=p8h?O26&Mu7[IP:q(IP/!JJ#$4+u]kN#ck6Ma@gj>+sO;_]c9Jg
+,\JVunGJOj4g<Eq*5g5FK.9Et]K[s%'&2UiTn0480fK_k;Q3'XP-PoK#qK:HYKCTl
+b;.;Z*0u@13[16,C9/@G1K:;<)[>Q4X;o'>)nS]bFS.nM5ZK'c"X;EA%8YJ2A>rXb
+Q&Ro!X&R9903$Hg04$4B/V-l%F^7Ke=Oa`Y;,sUtZWolK7A!df<R$2a4fjHm.Pa9m
+A/C'FC:l#)^euB"+t<^^Mpj-_>)ufQU4s?iMQgP4h["I).LeX>Mf7#0UFu/7L_+<Q
+;o+ugf[+k(=rCaF@^_lSTou5*i>A.&M]o+'2"QGnl3P8epr5_.jJq4PXl7Z*guu-_
+Q77Q#(kuaXj2t+phd`(_;389?,bLC]R(e=/kd`TWL<94;l#0f=Q.:J\+d0F/7`d-h
+*3,rsl31MgaG#'I2td9'>Snb2(e![GJs[d@]f!9m]8L'S[P1+K]:mGS'u!>';E,Q5
+F9`#ZE3Rhn\Zs9]AM8!!arI/DYqIQAnKGpL+nJIkpWi8Z^CA,'>kQRonYhcr\uE.+
+#B8KY.jg(g#\kM;=*RV9Z##5@WO(tF4#JI@WN^9EMM!7q,C#%$'U;IXn3Q2Q@P=Aj
+:uT:((86P5($g.=5`anb#]c`#LAQ9sl\,CaM7pf"D%)!3T6Q^^Hg%bfY._7^<1eD&
+G`.P,Jd'B0#hkMdWd#'WJt>AdEB\`MR%]5<:_^bp5m8R%L4XrS&jg[%$_^BC/c]'U
+9\LG5D2]kG^k*5kb5VK8NH2^Dcp<Vq"t0tH8fQ8VLD3,,?Hu"V]LK!iTL0&6`b^IL
+'V>rmpdB@dXOJJZp6^D_+Y':M#/tU6$k]`WMe.Ek7K@*1%,>BOKn_EP1f52_0aK[T
+jG-4GbQnYD+U1Cr"sS_bC(Op&+AqnF.tUsqOS!W!On(jiKB.o"dR?Teh-<4R86;R5
+I?Nl84cjgs<_YT4PH%MV[?=]rRs]uSCc/:>ku:9N5sAd5bk'!]$;R?1;'dtm;$-kQ
+*YDg%P&XkH`MhN-M3&'ZCQ3L)J/'CRChJ_QppLbP+H_5u@:$cEiY!*r]&V78D=_XG
+*.p0RRiEE&O]l8.Z:7@E/6trSoSSb5;)"/,B1RkATZ*^kOU5!8,B,o'b/k;KAH`4/
+e/iG3p99:.]Y0Q8Aj&o[4:U1Fb*0ej3[0bE:ZZ,SPj..;TZS?,UX^\pd`t9SAI@[&
+["(a=$C.SO73#g]I3Fhd(!eYQ*@SlFQr1GR5m[Ke-fmL_2&9a'U1Vp;PWP^PoR`_b
+=B!<egh^CWDmtN@],tQ\HqNC?:j7@h=I:3=J>#=UOLPX,Wo%*eOG6GQ\u(A?ZpYY]
+N]X0Nj6QiW0%'<u'EX2#k:m7I(&kkjQ87W>$[],-N@2Ef93l)oSH^@*`[^j12CR[W
+ZS=5`<K^WuMs;:g'I$@W].[f.AVI=g7b#BL%qCLiF[[&%^eD'1kuqo)LVW%PU/pCd
+9\C^qAnp?=V&HCj@XFG4Kp"^EO`\e5X@sD<kf;:I%1IQmHj\rbR,TZ,d6_IgW(`s9
+\Jm%P.NZ,/8/knTerd.Qh^ZX'mG:5'I2Nnu3:W1*'lmoCOtje?([.PHEdDJ:Q2*bC
+>h!0p=`,oT5Jn70!$EOLOONV*^/tN=]+>]:+k'MR8eg*URQ"C4<$6^lOp"Jf<b0:p
+G<7EFWg_?_rZWcqM"&h<_"dPkc/(`1=LgVX8;Pp8<HB</&VQkP8ki/l%7=[Z_o2H"
+QAY5PF`"fH)A:;$F!2OIak2?j%+^S^g+4D-*40;+G&1Y4#rNun%?XiFMDO8%c4>#W
+3#L.GZfrf0B'eV-RGXRBAQI4S\<rAK)JJboAKZ8Z6QuVbQrEFEcj:pJl8_.0<rC7_
+l^hdhaehY:2F3E#7J:4O]aZ\r@F9d@NFV%5(eWX^"T\u\'2fZj=B[8g-d97JaJ2Tj
+@A5`n,+@&AVF<DGcle)[CnEHo9h;:ZA=6qBB7*0Ln%k]GP(,&'h:>"s<6*9'UkL*-
+e5#TQ4*]MH5taO#[h#)1GuE:K(LhYBX=5#q#hqLT9D+\IDI:i==#b1`+.=f_G?5ON
+;\<RK^ii=!f"3cubdsXP.\S^M-tnI2r9LKY-!o2'JoMOTp^T'4_q8)uZ.>XL>AJI;
+Xud[[WWYL[TS7YE=>o\Nfdf:n<]h`ISLYBOn'rr2A*FqfX_)m*5feimlMX(<Q+LSE
+;%H4TrM%ULRr]A7T4][MQKt'qA]-Zo=Lh_t89V["h>;47m(I&9iA3jLo,gIo*@n/T
+PKu/7Y/!Ffk_8-84AUfbUd`""Y?`4!<er+F0<1eEU(VF!U4FSNW(`Yb-/TRf!]\Ac
+1+T/XXCj\=+BBhQbj%'BgaU5:6iQ3`H3HJt]osSBV<d4-+,iU*q91D\XVQ=)\T+Do
+\G2rih%i5_GVu\Wr"Z5!,*-AD9s<'55;1qP-,6VY\IX%/CJ_,Y,k&UI22:t>,J+jX
+MU>6+pk9.*-6;uP(]Y>-W/h9G%Ll!N+!;mcTo>]:c'7ffXGNI4)"/aG"UXN)&=A$^
+6[$8`&/pAk5pA0P1=V^j.gi6b5f2J,!L5([bs8oP_.`<sP'[o7@#i>'(%D(9;6I^Y
+'G%8d6&>b2RdgjZ)[tJf_9<IMX;A_:LQb[[J5F=El-bF@WBugoQtkl]BXYeZR(WUI
+YUhRIJ?HPd2*s,UN<8@SZn%;c2%MMr#\h2mA1>EXbsS4h%a69:'K2C8mDE-\-[KX=
+UcQ?q4>0)U6fFu%*(<6u-5dB9Mu_*@i;=l8$]5gG\H;Jl<)5N#ketiN&R(2$H^D\O
+Un$^)M';Q-]'.*=Mo?RNP2"R,!K"c-=V7rT#oO&fd"`cQKgP-%VMnj#\<!./b7?:p
+`7!ZXHt0E(TuN<l&bKJ6JuD.8j;Q6LS(TBShuuTd(WOm_7MK%FGpU8EECLXD)(]sN
+W0E?VRA=T^P+6:,Gm;=*j$ohE`M@C.@XH#JF@R="ZE_tNgjqqQ#*$Q$7@[E!/;M-u
+L.*q:VJ%1s3Wuj:"tH:(X^f#6k_=r:XrtM(!_TX;qMcHH'EW"]!D!uc6B_GGQ\#Jo
+8W_F[#T63]R)taAXq[AIaqCC.(8qk`L_->RI$atC-:q'c![oKTbQT"hdu'7/T6_(N
+(aK/6WYc%\`O'Rp`+2E/YslT/`e88!oM3-mZUS3)PZ#F7CjX?Y;3V3oa6^DDqW*Kd
+\k?:?*GCp/JHeR(DoEVA7:`f!3029WAB\Kh'BFnl"LtmnIS;T,#agU-/<!6'_he+4
+bi%#FUf!XARu,f)b_.WD4Mo>cO.%W:9h`7+BV*J-bY/;B]3NJ&:p[ga\'4`FS&EUs
+FPtBUiZ`tU)&1Cjb)f@l]hSXcZXc&9]D<6^C.<<ccE)F)%+.dCm7t=$a6`8Z9Y=$j
+mmkT::Ft!a"S'\M)pLcScY:QuI+H@1lP*%5:)s.$eB:V2oFt!Gc.r+h1q_.Fs37A9
+:HX,k9\<,u"&N2Kc.)\fOO290rPkYqZ%W?W\hX^P%8_H_:5L7ARV9cAMb_3s;)&g2
+jPA3_[a+59;09?E1g8:kohV\-9C2FE*?<9D#>m%(O^.h.>o?N[K[L:Mc4qO$6W)93
+,FpNRbhX&_AH:+P-;Z!,;<9=!>p%-6-jm'0d`d'cPm5Q?+B&-obZ**@,md9d01]@U
+d[`&?N@Rp*%+-@[aL+*sKfl@2]?o&+aK63#/CCZFLf&QAe27oc$u=?)]hN$Ge9)YX
+2+8L-+&UgK+'a_$eCN-L#p`55e<KsRSPMr/[nB_!d`"gXPqpP];UoIceU9@*ND1!j
+3`I\&;r(U`ofZ.AR+,tVX7[(M<-#2/Bp;3+a/rIp1epIc;oThi:B?-_%!,2gHd`^=
+M%*tEH+2A$BTu4d<eYBkBt9)FDc[on;D_>'rD/_"A_0?J9U+MeXX)IsCY*,r:@32U
+KdbNCGJr9O<E3+%`7%cSJ(EF0:ecAj"U5@=OjrcG;b][4MCr"ZK@XmDf+j$8$\[/d
+ISN<s7dYLGK$MlBHnETObtN:LNF\9tGc\TE:CMBdQ'g1rQc4P@dCkfJV4>>4QR7]W
+U]#/bSX<RoV-3TSg+@Ks<MEX8G*^p4g'o=Jjeg(fBNMU7=lk+ae:H>=;])"^g.eJ>
+>eJdl=P,4$>4l!%1-_3YER1bp<LpQpLkaQiS&_(YgRG.omASahOAj-%.0YmhKtgbZ
+ON*9-=k)3LNLa0WKNAW%`>tZ*'mrn:aNSKt=.RLcPrDF.-JG<==T'`)m-%^qNEAW#
+:41:A9ug:O=BrNB9o[`DV27qEbh]C#=2g-SK;dT0`)utD?0,?tR7,gf?d:gp<[3jM
+q1=DVM?mUj,Psh`l/*;_Fr1<^8F6]i<32[+$oRPh8W\`7Gb6L,$3@:!3R[3o6I)1Y
+oH*fC#m_L-AD2U%'ZqmDaOnVUm$Z,fPonqk++%K@V<k(5m?f?ghY;XH:%[<hq5[>S
+ajYp&fG"Vu,g"Dj4'31M#TVa5'48tD-ADH<AcLV=(4edR?m$[@HWN.fOc)ZrJ5Qdp
+4rP6^oX+Sg'IXeid8.2BhuSiVQgC,rTT.(WRh8C++Z]^4h@X199]-*gU8AZ6@<>m@
+(uS7YhgP%PQ1H3V*QalZJXuB=jpV\^nr7N-ho6tMBlmc&f]%JVTq1OY?8`'_3suNK
+ioq-X!$ME4!WctgX5'1NJ>m&D!b57/A#ojHd"p_5nfE6/j/]SO^lma"6PJklio*62
+L'\/-$4BlfU_XC]"nZ=p&@HZ[NlaY>#"KUMo43f?P0!l9Jem9A,`J<^8X;VtXICEl
+[cPe5@V/RPabbg3<e3L]0s2uI/eVP\mpb]1?\Sepke?-D04Du0@NI=5Ghmqj,iJr9
+@r;D23W3ND"(1b7@?pEr"ta2B1Rk7<is6>H^2IW7%8>H^Ae%7?R69Uo$0O2^jCWMl
+;242P5@r37A`aG\<^(1\I:(qaL`j':49XQeA`>1[kSgo2!"_`KT9BHP$!*)%=d@p<
+als\%W/qs4%ZY0#2;d>OOs,P;"?YR&puho3k=/)cfg=cFGGYRhjRt;;DJ\DLnu;&)
+i:n+?U<KKes.hW2_7F)"J;_*TZ!j(UC+BHpQnE-tSIBXX(V[(F!tjh\Y@r5q.\5^p
+6*-[5G-AM2'V]^m^n>$H<Y5TWJOU.,_R0]!@gLdC2BE"YAapg=(<O"'?bs.%L]qU&
+30sbR1:W,'S6Z-q3<LZ5!k8dDEGtt>%"SC8Z+))7\2=\fbn.Gh%%&Am!%ifdae!5]
+Ot[G`Mk)?5U#1UXD5'L_k1HNuh/0A"D<R6+kp:3![qqK[U>FRfTg8#Mj:^>2DC4M/
+k3&m$Zu,UoR==5b^?0:8l4IptBV%$pq$-9<nE"9PR25)U<nP/QLi6UVLk(5YaL?%&
+oP^>lD7O@h.&q3YVXLten#"k.P$[Vfnh,sB#RC~>
+endstream +endobj +95 0 obj 26506 +endobj +96 0 obj<</Contents 115 0 R/Type/Page/Parent 97 0 R/Resources<</Font 117 0 R/ProcSet 2 0 R>>>> +endobj +97 0 obj<</Count 1/Kids[96 0 R]/Type/Pages/Parent 118 0 R>> +endobj +98 0 obj<</Type/Font/Name/T11/Encoding 112 0 R/FirstChar 1/LastChar 1/CharProcs 113 0 R/Subtype/Type3/FontBBox[111 406 392 686]/FontMatrix[0.001 0 0 0.001 0 0]/Widths[516]>> +endobj +99 0 obj<</Type/Font/Name/T10/Encoding 100 0 R/FirstChar 1/LastChar 10/CharProcs 101 0 R/Subtype/Type3/FontBBox[0 -237 725 763]/FontMatrix[0.001 0 0 0.001 0 0]/Widths[725 725 725 725 725 725 725 725 725 725]>> +endobj +100 0 obj<</Type/Encoding/Differences[1/C0042/C0047/C0049/C0052/C0053/C0056/C0066/C0067/C0068/C0077]>> +endobj +101 0 obj<</C0077 103 0 R/C0068 111 0 R/C0067 104 0 R/C0049 105 0 R/C0052 106 0 R/C0047 110 0 R/C0066 109 0 R/C0056 108 0 R/C0053 107 0 R/C0042 102 0 R>> +endobj +102 0 obj<</Length 234/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.9Lc;#nH?+;Toj@rVVY#WE\2`!/M`.L\6Q%7S/?j@J#@&.PCS_2*Wo$6$aV;8IpO
+:FV%<A7Gn0ShDjb9gM7!:rI8_S4>sZq=G;$,a/:a:cSs0>tUt`,?(%*(1U::8`t^T
+rAIe)O,YBLl9q5_2lo_&29H*"F_n?VBf!T57Y>H:h.Y='8D:[G\Ol8@fpq@#=2Nb/
+6V3"6_'m(U-2#uX-I"6eeM?]sO=8<[J:I~>
+
+endstream +endobj +103 0 obj<</Length 231/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.9Lc;#nH?+;Toj@rVVY#WE\2`!/M`-t5,e%>D\*i5@lt"UsFC#h3g%*]?Q"@r[%M
+2]RZH@ds20]O<OQ7O4135UatdK1TRXpp:NT-D$00d`HU"E<`:7WUtKVVLC??e0_Qf
+-";Kh&5$^qqF-&P@trRs(2EN>Rqo&qCGtIC&8-'X8aV[&bk,U"[8$#>HI]b6E>qgF
+0e!;R1LQH,VcVV28nj$MA$2*=8XL4n~>
+
+endstream +endobj +104 0 obj<</Length 234/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.9Lc;#nH?+;Toj@rVVY#WE\2`!/M`-tY>h%E8KIE5FaN2T;Em!OR#40b>9)6V-j4
+9JD]'V3./#^*P7ebp/A0K\R8T"[Srja[Cel".)k2+K@OfCHS4aVUW0k^10C)%H*I2
+3.aIQQIdGt]*1g#9,Q6R[.sToeRGT+#.039mb8nqf':biXhONZ^=076gZ?l:KU#@<
+fPDOX'oTb'V*f%l9-7o[eFIk.cm[*FJ:I~>
+
+endstream +endobj +105 0 obj<</Length 234/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.9Lc;#nH?+;Toj@rVVY#WE\2`!/M`.L\3O$mS+O!ONOqJVYN_TnIC<+-;K%"'Ec^
+,q"=;V34Dt>"($+La;,5:s<]0Q-LRNl1A;%-3Xi';gBZ5PsCb\Vc2:H2M3iccNYV=
+I9r`kXhc9&\sUW-A":[-e_5hrCLO8JB!]=M<b4UXdV?4J7/i0?WSaj;M*9F`KEY-U
+\%4``D-Wr@,l%7K,8Z-:8b2Zr81;[hJ:I~>
+
+endstream +endobj +106 0 obj<</Length 229/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.9Lc;#nH?+;Toj@rVVY#WE\2`!/M`-tkJj%E8KIE5FaN2T;Em!OR#40b>9);2@&p
+4><!lV3'?bQsgVm7H61,I,G]P"Up.T8T^Ig+W<kHPA,tZPo>ZYAMb;Fd\@n`d&<2O
+SH=":S'f&Mg>pDu0;chU'5@,gfj+aiC%KKcL?3'C8qo)^/Ae<3[oBP43s>D1283-;
+,AO@SRuE-Y/2JeW8puN.?_p5"<!3~>
+
+endstream +endobj +107 0 obj<</Length 231/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.9Lc;#nH?+;Toj@rVVY#WE\2`!/M`-t5,jN!?$8KQ\VXMadgOB]O8E+>s:U:cTM[
+@4.;^j"\(-_BgXhbiR;m;4nX.P"fKX!K==:-BprqK6Yo6P6RmY,LlO+$BmXkNG&si
+(as)BUW_mZq:*u@=f>88e=/m-OXZn3Bm-MHK&m->bQ1(8"`ffSZIItpG\tlG<s9&9
+FY#Y-'mRJc7b?A&8juUTA?gEA;4&(!~>
+
+endstream +endobj +108 0 obj<</Length 234/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.9Lc;#nH?+;Toj@rVVY#WE\2`!/M`.L\3O$mS+O!ONOqJVYN_TnIC<+-;K%"'Ec^
+,q"=;V34Dt>"($+La;,=ptd)CS4'-i)>)cW-3XgR1-"(SP:</!.F^rec<X2:%0j(_
+`,[stU=1JFHNdH&:9@3)20h?^ND5sqL3:"CXC4H+>qAs+Uh\ds"^c+HCV;dlK<s?&
+eI3ba(BhG#L=R:28rGICK!G&TD)f`HJ:I~>
+
+endstream +endobj +109 0 obj<</Length 234/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.9Lc;#nH?+;Toj@rVVY#WE\2`!/M`-u(Vl%>D\*i5@lt"V$4U8CVTe*]?Q"E7'3e
+2]RZH@dmg=[U(YT`M3J@/9F0,1]iDq\ZEA:&s,rM1O2Al3BX07l-i53*i2Jp;5P'X
+%8sSnO+O?OC2E<b-`Krm[CK"XD`OJLV0#piL?0\Zb!p>2Kp&9ZLYD)-S%WG"5QqR1
+p3?4[AUMKsZ1o78k7qm88oj[ZoVB\<J:I~>
+
+endstream +endobj +110 0 obj<</Length 231/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.9Lc;#nH?+;Toj@rVVY#WE\2`!/M`.L\6Q%7S/?j@J#@&.PCS_2*Wo$6$aV;8IpO
+:FV%<A7Gn0ShDjb9gM7!:rI8_S4>sZq=G;$,a/:a:cSs0>tUt`,?(%*(1U::8`t^t
+Kh>u!"]m!Ll:e(q/>q1$p%hC?f2SjRL3;2YdYDk1;<>7=jYkM6S(94?H_(GpE>qkp
+[L>kKaX8$'n'm;N9"f0I@r:n#;4&(!~>
+
+endstream +endobj +111 0 obj<</Length 230/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.9Lc;#nH?+;Toj@rVVY#WE\2`!/M`-tG#a%>E2\JAa]i"Us<u#h3lWCll`XirQ6!
+0bT^>i6o/PEa]`B8L;d3"JF*K)@^;!akTKS6&a+Mi2RM=9g,@KAs?JQ+r`q><%%;u
+XM-k*Va`+W.FgUZA?"-k(!<?I'JZRf/(+fZL3Y0afd+!UL$%''\(kbo$,$1OHDO]_
+_g!KqmL$qNmT<)9*rfQQi[hm?0Id,~>
+
+endstream +endobj +112 0 obj<</Type/Encoding/Differences[1/C0095]>> +endobj +113 0 obj<</C0095 114 0 R>> +endobj +114 0 obj<</Length 367/Filter[/ASCII85Decode/LZWDecode]>>stream
+J.4sm@0").0n]f:K*WUDE\\18LCcfq`"XsF_4b@IE5F^l&0!o&0p(0q3L!&ZES1&<
+*&3Z"+p1B#Y[B;S%V??0G^sNc)MefB3Rl&p2Alq#d*[s;N&c^4k/2`Q@Ws6#7&,n'
+Ki3X[)iX"2R[%om#T-F7'S3(6K4qYgL6?<56G>1]cQtr*9l_CbX3)S^ag?XS)T#Q$
+'KePh[k0K>N<#Z3cGst:8#d1QXI=E;(g*i#6&=[X4<)4.PjDCN"d^0Cn?aV]_`]E"
+CitogSGnL6)[n/sl#uoK6(cM;HegfYJi"HboJ5bYnn'`+8#hs(VdcR2db(IM3*1FN
+#Kpc=6_!Fh;k;+Xo-4XO;q"jm9r]'E0Id,~>
+
+endstream +endobj +115 0 obj<</Length 116 0 R/Filter[/ASCII85Decode/LZWDecode]>>stream
+J/gjB!<Cnq1)CA>,@SZDCb^SO`e+;JJ6N52%0iR^Y^keG"Vnr[i)C$i(`*U8YipaD
+0clEIUkBqf$p[cP9oS#(Go13;MNnUcW,*(Q%3#bQ,C02X>W3R[L@]J&fVi;\*Pk1L
+5r>04'T>NNO[2+*:F6WA,124b:`pq5MIHWq4H;uVL^9<?Yelt[YZ(eD@7@-+<$_UG
+2#:V>/27qL7jA<(:ritX%0e%S8PmnD(60j(&]@`oP0-Mip!O\s25DB$$+ed9aC%?[
+kK'u3+WM431sc@.Xq@[a0$OjF@KX:F#YbjGbHO[Me8d1i`C>JPGiG)5Wf9KpJWS#6
++RSoMk.jhf'f=gqKFgG.&lhO@N5lOa@*^%c-fUl#XpO*dW$VfpE/G@/9Hs*SM4uDg
+.>]6r-5<]N96Pl?aBS<!":S53m%CQ1Sf7m5qne,b+b40^\P3WR'IW?Z`5jjaHqP>H
+JHTg*7kW/'^H0HkI1\OKCXF;ZdOUXW%W?Z.U:t%;)Arb\Wh(*@a=>-EWXPs5'F9<%
+f)GqiGbusH_D%-(6OZ;+,6gmUK[;s"P=UG1N/Od1ZKgA@[#/=en.5q9I1@YkNk4!g
+LgjJ<,Je??'TC@SI/Fu2%)@T?MIJ%B)MTFq\/?IKJ7RHEnn^l]ZZ<r_bR#J`f24+n
+n.cD9c;LP%\*O_SK-A(*&;Soa"+D4S_6gOXf^3eGp-$S4Y8"qk.[1nW!R+POg>Sm6
+)aqd-b9P`C.j>k)<\1V3:KCCb^I80lVAgaR)ok"rCl0?mh\+JLbpWiSRYT1u$a:IU
+MSd<Z#;3F?L#A>E&r'k>-,kJ;Em:517H'sZXBd5>DB#k4`M8#7XX6b;,Ip\b(tm%3
+EKaXb7>r$,Li-J6i[J1&a9LUd%M3(%]9!rm(+jk'\SW[MO^TY:Ytccml7nuIfar,C
+A<mRfHY/Rr#AILASh;"nH'?4,XBQ^9K]dJ%=1I8c^<LXgfQPc)Dd"3,*/>F*:6aS&
+:9C_M(b8"QUI]R>)6,_bg>AV;:C;k%DSd-,Xf+T[c)E>XMXB4>a$i\oWd&+)A[^od
+Z#-tj?.<&=Mlu.7]f0<FG$X8js&kZ^;RX12hhTO&fkVkLh#2.e)Y3ktTnN-rS`KBT
+QKNVLqNe=p(jj>JZetXupW44sIP8Rqh2+lkcMc@]j"+kN5B5ufq#C!M)DTlE%&O!:
+GQQ.CX3uD)[KF<(g?7<Q'4u(fqEY<i"He',GL,Yk_1OZAT\H+DL\Mgp82U)aN$O)'
+JeULq<4Lke`cibI&h6?a$s`t+.Km0`6,S0^TsQ@t9XQ3(ArR@o6o0Xp*2Gi%LgQl2
+8;@]rgDNK6"5[b,MPMuq]r5QZik.Er"nf4+#R_I#U.UA;ataP%!>OL[2_W3sf>WM2
+*0.q7M%KHe7l^/[fkF,/AH"I,'=_#;,YhGs*:L(4R/>U$4Cms;i^%.AA-%@IO)dO/
+8X>8]f8qsRKP_FG#\PQKCQsr8L/?#Q<?7Ym?Y>3*65Iu^N6YY4?1P]g96J>@9CWp@
+Lk,9D\P"SW[(hqq-=01IWXL42KSjTS=\T)</1!<NRaXl$`KNkOV4fFq!7AZK2fc*'
+[)>/)N@lJfp.A92;g't$Pq\EEiY#5V+Z%W':Np,[B@Q=?a,lRjkqbNYWT-'j_,WF<
+aA]pK:nO_$@no@@I8Xnq3=`a,3hfMO=qN6ZFBGuQdi1Mb>n*P#RYsr3<9:)/@&9aQ
+j9(hrk\0oJ+m30*\Ph.D$"Z4K$.a_R-CE"`I6Cr%*/QjNq_1Pq5G0:$[a43tjd/Z.
+P=6cA1h%sm-$71dKgea!Gjue"9jOj+#"DXXRoc>[BoLTBYJmLX(EYMVGk!C2e]QcQ
+iVYQgQ&`@A3'@1Ue1NRnNl"h!B*2O9NNT2@4MU1S%,Q?RYLSfX^,O5Iln$J,DUQ2L
+q^1H2*)3a,?=:oD5Sh0:;C*SSR'<r>ack1j[_TiGJcdX?kM!4@KoN)DfGJ-3ij*)l
+5k>T>F)3Fi2(C/R%`5hsIRnV372GUSU@hdt_$.`RYoT.di+ja$>i\:g0U:Gj\8TjH
+_(j24>F=S_BTF%o^5LXa=bI`.0AB3HfDO_OJe*9-3GhD[c&=D*LuhED^puDM"5h<8
+B$idO12(eH&C]8LJQ%rOQ_t2K-S^4q8I`MV@gHELOEkf=&S\aF$t.:ZL<Q+R8e8_Y
+'bk;3Z'G#An;NUTqu_FUiCZ5RlQa/\Pe.FV--6DQZ+`ebEq&3Pa-FC]jP1rmT'fZs
+R'C@UX?c\=IS@m[gFD(($t$9b*m8g'NofH_Rr]>Ubc+#$aN6VQ;C**ILr^IUOrZn&
+D&/Z+D-s"Nl]QhB8"JkVd]Xm#@.K!L+tZCHd=t'M:Dlc=KMtN;'thnQ+d'bW`c`Gl
+C08f`F`o&\9ZL$QX;+\&[Bg<M)GOC'M.X9K9.sYs`cstN1Y"S2cX9<2@dl7NIri4b
+j-`IbXgXh3?<^W;lLQ7/Tq'JtP9*q%R<![uNj_UX;JaN:Y;.EBU"Hs^A$j?eFm65i
+5K:6M`:K*Ef-^B5O@9AWL1?SV1.Hln'oerGnTiQ0eQbc5L<t*#7sJATAgq/h\Jl!q
+3&uFf9/1^32bV!<g_k\rLnq6[j1bn)Ys6D?UiQG>@@g2<i$LsFfVWS_>aGLr3\=]6
+VrDsVW^A=PE7/c)rQ;]Oe`jB0Z):Kp#qLb:+ZDrHolj\OVL)h=Q\Fia>6'(LdGeEr
+OJNM8S[,i/iLp-*+W<_X^)I#ll".=L/s\S?D[SBhXu9kbY-$WoG1EsE(T@(&\(I(7
+NUN<Ye[`-Tr/?r-Gq>Vfq/in(CjYI:*dH,gCZ($,GGOjN8bGKsp!gUR9HnNWa`TPB
+m?r0hmX@nrk6g28HgQCRG@T0LAn\AF-cN18NeSD>JLF5QP9[h,G0Rc'QG!7;Po\oJ
+@?7bcdVmD,raY>D'3"Irq:rENO72u'#?cODeT7N.id8D.b@;dNqOXt.`.+$/cXo1U
+i``8V-#`e(DOuLM#/1U94R\kmO&0Glp0+Ln;_T86%lQMq?Lc:Wm3e/!j6H/R"T-M;
+Qj/l.N?"6UerB$\2U5c7@mpQ1*&'gK4D0\l@r.kf=CNIX.]/jqAQ8tKJqe)"0;cmS
+`ZeG[Hptmbr(rKdD=0cgRbe@8;XMDk%S7"f,$M+e?&=S(6]e#ocKu(\OG;7X#71Ur
+kTZ(bm&mWljM#k6]^3Kc#`,-V&2s9:/pi=k!RL--,>_uh.S+'PBWa&sbE+_ZXEIGL
+JC#52C2>_DJ:Wh(]Hu'9%c7>L1@qapC[$S!d5M][`mQE]$]1V_CjM=6lHjC^KX"@c
+nOdj46stO]KX"q7Xc?d$CqSkm`e`bUL>%[qIa#%<$dd-50ma[*Y.G9\he53klp@W?
+Eu"4j'lfIWZ'cG'@_jb0Q]ZJ,9J74PZPgs?!CWY=Nb8f`W>l5D*AENnnWIPP5%m<J
+?d[#cnQQf,OVih<*cP^Ed=t3YcQ*+M*DpSoBgO$r:Bkg[_(\iP1%c=K,9O3-(:!r[
+Cj%_UkZl/p#qUcT9eck!Zun,h>`qKc6;n:]PpEXp?N[HRljCT]+u1Z*S:V@sCult+
+7/h.u4bIPo#&%KVnL!BQ)A'"qE_e"P<+W@IAr!-._A+K)O!H/&6aD%GdX]:_MDS5*
+c:n#\&kl^e"FQ7d$$).Z9kaa9HrX'Y-r1CqEn;l,`0\an1.<1h;Vo\mcR2W;Ha:gF
+'&"cInjr?I/oAhK17Kp,gFa)^6]R%+![Ln9P42)c)UfmFjk0&S7#8WD,#.eU'/V]R
+:-!AX,pEigk/KDN7KHF[QP32&bmYdg(*cWa_ZoH^dpua$85tW;WQ)h70@r.8#9?.3
+2_r8>.>!oLF#_T-<0NL#o8Jl3S7dG;1kX4\O"Crt\0@Xm91RYHPD5euYre^)W,C[?
+A\C0ZnoBgL49^]-'?FmB,<Y.$Dl56NO/@.JN<S;e>32:Ta(-uD^cfbt6_q6qF#I_'
+MJ$Hs2=i;?1\tM@T0*ejY-]B8<$n:#m6Un3+Y#''6rIPaPTi]=B[8`fl_IXI84fO!
+2Q9.ho5R-nMXW&a4@5r.Ap-Bp^I87K.AlARNt2+XBfa4nU*>%cKD`CHY;c(k13A[I
+PSPDS80YCU5>0<iK=GrRV%56J22m?ge+2a5[Ni+O3j5'Il?Xat8q^uq87P&$`bS'R
+p*hfgEU0Ga8(9A[lTio[aGLi![&R&^3^(r592s4*FLsm2rq5nAG:&91o:"+sN=b__
+,#>e7A%'Z_#g<s^mSI@W;%H(4Yi+%o?"<U_OZQO,h,M\W<([)TU[occl;I-r,))3N
+k%IogI1eDDn0]:-`/`3=&Cbg$%F2apNiH<jO''qEE?gSCF`SP1SOiE_FnK?=/TrF]
++YAt8]Hg0ae.jj+\;jRH58(A$eS8q&2big6-$@[;lf(j-78_0'Cm=X1KY%K+(eL`'
+<H[g>AM05N;CkfbKD"k^/tgq8qH0"&BXRY"A;92t+!l(M.5,cf,K.#K*+]ll@O?>?
+K9dudUbYm>1(&1Piijn-Aju?jd0b1lkli;*DFR*Q1!(!eV!;a4QVJn]<)mc"_OP0@
+P6]#"$<A<`0u7,s,(,G5BblJ)QBsbCSBS"GBl6HdCm<oo:s-2rC3<@CG-iK)o!Qo*
+5ckE/7nk"hBl"Qf,Dn\GQ$7#/DemmID3+mLp;o%sKjU$fCX\/^,A^J62f1:5:l5`4
+<\n])]4pX>lD2=%f*KU/cIG^gD[D.]QM4Um'kgYoU%<nR_GtI^beuFY.<cGDe\q_?
+)f/,2EqRCRFieY?(N[&cEji;r<Nsl-M*SKK1c-9ZbRR<(@6l1)5bkGO@[(D#C:5Z'
+KQ(bpK9/`X4(T]t`J$l?,>]k5WbRVbm3ZKj\$dN'WDZ2'H?OX]U,?][aDA>9c4iIk
+e!5=Th%4egguaR@$5i:&AnJO?.H@O(nI'_GR&d^s]Co*&Nh/IRFE_4e-$T2]<]YIS
+q1#C]fG!$rGKiC.$:ClA5(g;?p5%:P2h>i2ff1jB:$k%I(uEn3B:)0]j2R<]8AOtH
+8Hi?j=+Nt3LBM9]+d]R[C)H.OCi,0uB[]/&o7W;X_0Ud]Wg%1_l_SleYVk(*CDK6@
+dShqY5U'0GI.X7#mfQ/VEG>eXPdIHt1^M!2:Jg&BE0+FRA9@)_R,jR5M3/RD"c5LG
+QTtX@4(m5mJhq@'9,==_Gf7-lU)*2VN*d,!G#hb(\C+HURd)(+L0.V'Qr?@LT!aYU
+>=:e-7Ypg(*cR07A59SC:!7]<)e<]#N%3\-"YX<'3L.*jEX/RUj2RN*>i.=D(=;<.
+',d#E^O0ZfKWUFkH"8[0:IurNQ7hV0flkA\A!AY*P^.nJc[O=):LK>A@DXC$#;Vf'
+I@JZ(n2<aDR7rUdVcG+s#?a_LRD=QP;e7]KB\*m7!Yf@WDEfJkH30aaeo",6LtuTN
+Wu7d.$=68@6"5EWMV/pF&lk34X-Sq$+r/"[fk4d]<+tiNRi/6O'g\1p9PCd6TmAdh
+j??+HM2W4nR5ucF'02S.WF`Y,<;J\PH4s^e8YkJZV'7<\A@ffk,jcg'-"]SV``Xd:
+i6Jg3BQ?Ylj#(sus!;uarFSGKB]TuZ*NH]H:Eq<;g:9F/]m_7"MtKkUa!bCpIB598
+aTV6/7D4UWfr[%%`$Ft:R\QrP>7.sb5haPeDTAl*nMiS-Xa8oYGo@kg"#7CTG'@"j
+R]3N8<m1lD(-<J=0$00a\[":;%D+J&>7<m2&F>Qe=&@k]:tk4F_69`hXQT_8&d>Gl
+fXc:%#>ffc)WLg%?aSQ@3'/:cHHco29,t4^@O.GAZfr(-RAcNq<01T%:iEn/?$\C;
+2uASZqkf$l2jmUC@rLD+H]P_B(icilTm-M7P1=Z$Xh%W,]22kHK.4FZ8G.>G],QsH
+S#s?Mdf)=d]oXn]]90&P#%3OL^X/?+d&Xr$`N4+GM[?)lHNC6Qf=Wp@;%0@'[8k()
+lb\#9LO/\'Hl]lrdBS'6_QRB&%'.9-'uEZ>H/u;Xk?A1RXA;5S:@/P<08%92XKHSB
+Kok95]O6\R?JaDf.tgG^"0QW$>K,B7`\</YCQN&H3QX<LCqQ1W.%o63WQ<013m!ee
+gjd@`KI*pO^,2p&4MAj)O2\b^?k(&SR,?'ah"qlX4M7F]iqbkJ4#!2d`pFGAbu-bs
+eCqh*b>S)\UAN5u5KX$@b$=Mlm'Xl=?d7AGc^_Pjh"8cecEf/a'$&KdE=SUGOR&a1
+H_Q\PUU[2S%cSL'e1E?(:9E$DajfZjrCp?0L<h2#0ME/7em1PXrG8u@0)]gL/\P)o
+*EgsA?.^g#qeJaBO[IebJ(C`%fN(`!P8YVW/)"9(]VE#g]pmLLBR6^jQi4JE4j*Nt
+IGA9SEUFJS7aJgiZtGFih/;-+[N>M*S_$aEh(RaDa1'mU+kV5(I!t>9?1-a:jkii%
+g%-,Q%2r.;p1]aTQ9lI`jjZ07K"UF>?+(YbS><gce![#9Nc]+NhF<:>:an^?!^sA[
+jhKni4H@-E<+q?T;1[5UPXX3?(:HGH<f9/\:b6M;8F;]cfVj=;'@_s0+bDaT"g;OC
+/AE1#Cd)Fl]pn+I@OWa=^Lg:sS9+"d*r4[-NH/+e8EBhX^:?-g70]qgAsd))\U.Z<
+4ANJ,l_J#+;shP$:^7JQnBt;W^7mg4b+k6dkA2qBNUAU$@U?2,3+)30<L6O0]^r+3
+C5su\b>I.J17p7;7@\du.[rl=!7C'eH@ok@IH3S!QI[K$n9*lrYC$WG`g!IamfD\g
+8(XY4>H0dZ84u9`:n3H[pI3/-Yq2"(I'tp+0=oKZYNVXfHfB2Fq?bVYk'3(Rm`N)6
+;;Sf3Si2[70jd\U,G.]6"1RZl`o5h#<Ru$Mbp2Q3#4k%Qh:PUZ<4D*\3:\EGTpM&L
+63&n`MhV<7Yi%c()i`d.+c+c9@g*R_6Qr\d>W3Q0"u)Fk\7dUT#S"%9W8\(:*0"IG
+0lZ2]1)YlWOYBVK?8`\<%cRbmhH^ML6:V,LHn&8F),MP&H5rN95SssmPPK1W/I89_
+L3!WResBI>d3um5W5*+IY`"8=JXj#A/fKaX<iTQi2DV""L'*7Fg0?YL%VUJ<E7A>W
+W`UM8qlHB.1`P1ee7"Ta+UWe?L,caB(hPS(Au-_C7Pd:id7:#FBO4aN;i\_i'*5ai
+;2:]CL@KhbDfMBc%>InsnCH8Kgl8"OW^UuUb2H/IZ0F4s=0NXq]%f@6VfUUFGA[(;
+KYsht^s%+(^:;)09V>(lj)6$?FdK^\,ErLL5gqEGA,+?HDo0)@5A25ts/BGE4JfRh
+Lh<X&YLEam6?'!pLPE!GD[A_q9K3tYcr;F-^[!ZJ$m[!kS>J_o;^@VQbVKA?`JOJS
+&-e4MD]>Nme0;=]N>e0$YH%MDQ\PU"B-^&AZ7qOJMh7>>aDL-Gik'/F-O<@YY\;7[
+N<j:g-ggLPs1o0PQAd$HN(0[)JZP1t.BPE*q8;F5g_e3!]WElrTqH)9+\OBh0VO:P
+*q#gibd<*ro"-IicNmc2gW8Y86BSO/?t:6TmdfkZ+cZ@[m]XI6hbD8;6]QarE"[VS
+:A$2Pd3hpd16ooNV!gdLlg0Xj9#7&TPU^Wu4PI5:Z;AKU-rj7D=c26r(a5&a?YQ;J
+"Nlr5@?h@BL=@GMjK_hqS:r3/*D!8:270%$Ub`>^Pu;?@E5]]=A`f+2+i85A17/ui
+Oegrn$$G38XE(F7aN[&DTP2#F_PJm1(Ec\Ek[dsNa;XQZA$mfi[:&5nI(7'Ko@oU'
+lr*P=/8GGpR0IMsgu60"`a%E>\\hDQA^[f(MR(NF>+@`NEf/[>\_;"^1b0d'6d>D7
+I$gjg_C[e0\9qXplq%95+l^\7<g1t13a&$4nLDn[<Cu&&].EIl*n]0CW\\@,/f_^6
+E/hU'Y$jl(/\CK8@d+9jqsNs;g6X^3Zf(=.gMpKr9pWil(Jn\SEmj#2\9&;bc,$Y5
+3f'"RbuYOlXo5&aV=t?9:OXpbno,ScHi<)lFYtKX="'HdIB0l,Dh+_@>)/ogqMT6Z
+l_+7"@$KI']h7E156HD;H9Nj/o4gHJY/Mji",Y_#IELO<4);#)dSW1W"EVj6diSh=
+_qd\)E+Z'@^[dn;=kSNWBJ@!5!fG5215@,.RL>L[L1-*O2/VVte%#08;kNS4,AXjq
+Z#b6eMiep2C66=Y#[7R:3fo&7d*.i4!:l#`)(;CD*])_a$t8sq>Qr?H(H)F'+p:Jm
+L8d!bfOkb&0utNRiEO2H\HiLELG!Fg_\?4cEZtoUN+?f*&Vu>5@E_b)CF(u08=pHL
+_&?l>^*jq!HCA=&YDNH;'#%IK`6e\L>Kl@[(3EGZgmNGJO@9bg`%mK[BnedsR+@[\
+&p-aqPYU<,`1c3],n`"N@I8Xi&qd/!fX(=99lV:>3FZ8))ppAL(qHig$ME*:ZS4p]
+$8dob6!8lWLo<%i)0nEYg?U(2%ghh=1>a8-=_Mpk9lVCV)!t3(P9=Q$(<tG:kbZsf
+:()ad+%aaW'VT>51MV+anpk)FPj).:l!;SVBbo6W':8n4I]N-C.;0?8S`Y&q:39>A
+;VHYN":Yeg;hlJBd8Q+JD+#O-C4%E#@pMq!<YG_&R#7C4Q%k$SX&Q2PANC/idfFKr
+MI;Y0M4mTknMDA&.8CFP4f=%C!24uJ%:l0!D)Dq99+r=1N^ZC4;H9sN8C]7a1V0TK
+H-)CF*E27)N[=6^$l'+o[u5AT3>I]F'[h_o@5VhuBRJl;3l#F$&hTdlXQ$SI:-iFg
+G>S]]&A]RSL.]EF6#o[@.U'DL-1";UO_F@6kKJ(lI2OH_^(@q\8n]/qP=q2%gsjs`
+E6OJK.*4WV`Y\^W$t35=n$PnlEi`Icr*"ERA>$[2W/lr^J7pU$l4TsSCX*m2G0#'A
+1H0JBQglpWL.0Yp!d[:+&mT[\dFt)\W)Be1,]'J1_\."?GOEV9Z'Ud#U@h4mD^EaU
+b;MABW$%VS+\F$@')Adg%X0RW(1(hm)\J=+68%s49S=bl(HHA-SO(>tM-W*V&sR*n
+i>bP$:=in>nj/Z''3r$]OqC[7L/uS,`%_t+O[i5@Q<Ess0bXX%CgDnf!F3Q3JK1&&
+/V8r;l,QlK&*"XM8W5B[[;"FWVS['cJQ=U3Gf(6U2c5_-lP%>5^A-TeLQot_437^h
+,o5j7!e[&p??`"\j"*[!(jrR4Go%54EsIRW`[WE?d)Y3@<,P;ZZXRYHd6ektG]VsV
+.,"VTAXGuOXf6ouH$_[;RnnXC(1k8t@mahorM=PQ5g*<&#EtSL?-bDD27R&oP-o4d
+'LDdTL=,6N9IiAf1DO59cN!2&&$/t3/'YZs>Eh]XYVFVFR>d,:UcjF5;V;;mCRrSb
+%@(l&DGOO6gL"c&:._l]+sc_hAX9HeD_TT+1.8llDA9Xkaf_An]!$#=SR>Kb<FJ`A
+Y7b]Sm6mu:_;BnmlanQT\kH"K=%.*a8+#;b2.g4Mqq6#ZZE'b0VS1lcB7JlGVnr^(
+$@9[DL?`H\=il-7i@Pd$mg]El#dYMc#(i5TjLMFMZWK)/<@>dGMI@6IWB*#"SX.QI
+#S42&I=(:RV!B>Sk)C?+W@!7im[ZhmOVI(KJmS+VPLN0*>3^r,kWJu`c&N\<kP^@-
+ob/"lbL^!oQc$-]cAY&8Iqo'QLqZ+qiRRhI1:<q(^@X&Y?XP6q=2"D9P3#5-4@_^&
+-A='&^B`Q,Q]:FH,H,hW#$)b:Q0bT8gNiece\!9#/:KghFb2Q44Ek9)4U]iImiCY=
+:NH/D#L)plAT$3\T_4oRgA.o@SGj<op)OCK+lY7d4+G@Rh+-TO!_)PU2p3U646q%G
+o?!CF,l<#1ZMioYi;Siuqu$?TGcgC"S\M3"^U/Q:05^Kqa7B3/fD)S-D=BX.q[OSE
+^XJlA"/!:pTKQMlMK$!NquaQ0Tg2`cSJ2#3kaXo"[(eF$)KZBQ)n?7N9Ye`p^t]/X
+Mn(-ZVn[kX5rr/aU_ULh!P4,f*FoXD,Gd\hbJ+GE_7D)39G940'FR0bY%/BD>T=9Y
+W30YA5dUa44<YWlW5/356><O9A,Zc#.Dd&(M_"V8X<\l\n\7H^_@.nT'C!6\/406b
+$,bI`lmFtG+#"qs_]0r8$e.<b00Uo0]VIR*9>%lP\jJjE]IU]`j2F(TI6XMi3Y7E7
+,GrC0I4gZ<$0Wsl!HY`fT/UNBT\>^$)eFWb(]aUl43J7m=KMmc_lPrQ,Io]['N>kM
+pc6-i7%@&l$pQc3aX,-m[d0d$.'plr&\>nM3akF40W)+EXMdAW`[k$!<(!a7AWpW-
+3gg'UHsJUCRu%42\^Y7&n?\o&?+XWO`[#Jn8;]g/5epd7N![%G!Jd/'FYt9[`M??D
+H&&UPft1s0V%^:-Z6G9qp^$rINXG!+bFF+`/]X?q]@m<Tak*`/KffcT7JioL*/6q9
+A&J*?7J((N</ciZMo8bX8CVCqF@\mF8I>"!aO$oXOJKsM_[nYj7q26`3\q=XFd:a+
+&J,LF`-FcSH3eMF2["MfgVP70PXkhCa;f"'"Be8XKY1O2MhI6K_kBHE\4HeG4CW`\
+"/rmHcUB[I]9KLir3!]md>HGR*J9j'30lSSZ5oHR8SkG"goO!jI7^M^alI]eCfF!=
+GfkT07<E8kUnYM\SItL*+[glQ1o@FOVoej6^-%.mX/NpdgSNE$].D-em"n9ob<oLi
+8DIf?`6cZFM9Q.S#Y_Wq]L^4fPeG;Q9:X1!S=(,IRR_1`7tV)jm!$Y-#g.]7XDrKD
+7)I"";2d2h:*cXZA6;ARVas4sPR*T^e5f:S1<uX\bk0=J*:1XTZP3f>2]U5O/$(r,
+n]q@0Xo-=7>_3_jf=pVA:L)XGFQnhXn&rB!7mroim,$(L^eU!0$$j$Q,ib*qLT-rQ
+bZ__UFN6h?ks&m6c!!3QX=YuCL<S-DP[+\l6iWU4S^-$]d./ka9_(Y8!#V7>cFi=9
+I)jVT'Zl<G\r@!B`;GJ!][-N48^tN#"UHBjJ5';/;*?"dSHVOn#"rM49S?Tc'%"Yb
+lb\1q7XVI&/.^1!cbNDZ%lG"]<!ABe@SlCu^1g!_>ddLFSPo,4c_LhEP]"rTrCtf!
+a(6:9ft#7V+>Mk]:b6,*_Hb7&"j1(Pb^AX&@B'`uB?t+DU+&m.74pk`7T;eF-$\Fo
+4H;_sL5n,D6&R\OV$Y/KP>aT.e=B:^>Tst!8C=ec:!C:Hm5e1.;TaS9LigKLh#gZ?
+N`%^19Pf>\,^KhPr/Pl@1Nc,U..YCqQa;mgS,h_7!?`F7'c(Mu<:NPC>HAhFZQ-qm
+&p6WD>\+nGA=b'@`0_)]f]*A!5Q^6#S(q2]q(;ql\.#sia`Vd(aW-tIjX_h/-T%KY
+acD7X@#Mkp:+M;NYQYT49G-XAOl2e$8I>cD$-Jc^$E\rDjb1g=f+Z,R&b-IS!J?=*
+YZJoI=Q-TBeVqoRAO#/r(25/L)0%?%SYB7,e+g@*ni@2ibXlB)*?@:FOqido"H5d'
+UN+>K=H/:Z[\cWlWn>7G9n!D2#V?&"bnYKUAPbkH-,gNkY5o6?.F/CKV$lqSN>UZ\
+>[Rm6LQ%\m'1*SVNO-"mX\KSu$<c@&R+[<&/e!j8Zn8Eoq"PKMjdO`-Mdl:d]sh3?
+\6EGm5Zki<[C`l4]e`:Mg?lX-!k=%[i?H[T[s`lrqZ.;Mh^P4]RIQ8Anfk3(*=/Lh
+NqK&7W2Yum&`$9S?"E$IP5&=Bd[1%%a`Z@l"FsS^^JknaX%U#mc"]9S?^&-bU;^uc
+[:n.4g5-ddhJj.YeYZ2TX+41p#dFI@&]<FLP)]R$N6UdS[;+RB;hu)1c:N#\(m)]#