NOTE "CREATOR" "FlashPro Version: 0.0"; NOTE "CAPTURE" "9.0.0.15"; NOTE "DEVICE" "A2F200M3F"; NOTE "PACKAGE" "A2F200M3F-fg484"; NOTE "DATE" "Thu 2010-02-18 15:31:20 India Standard Time"; NOTE "STAPL_VERSION" "JESD71"; NOTE "VENDOR" "Actel Corporation"; NOTE "IDCODE" "05A131CF"; NOTE "IDMASK" "0DFFFFFF"; NOTE "DESIGN" ""; NOTE "DESIGN_DIRECTORY" "C:\web_server\Eval_kit_demo_tobesent\HW\top_level\designer\impl1\mss_101_1_fp_1"; NOTE "CHECKSUM" "D533"; NOTE "SECURITY" "Disable"; NOTE "ALG_VERSION" "20"; NOTE "MAP_VERSION" "1"; NOTE "TOOL_VERSION" "1"; NOTE "MAX_FREQ" "10000000"; NOTE "SILSIG" "00000000"; NOTE "TRACKING_SAR" "76713"; NOTE "SPEED_GRAD" "-1"; NOTE "TEMP_GRAD" "COM"; NOTE "EXPRESS_CONFIGURATION" "1"; ACTION PROGRAM = VERIFY_IDCODE, SET_PRG_ARRAY, DO_INITIALIZE_ACCESS_NVM, W_INITIALIZE, DO_ERASE, DO_PROGRAM, DO_VERIFY_BOL, DO_PROGRAM_RLOCK, DO_VERIFY_PGM_RLOCK, DO_PROGRAM_NVM_0, DO_VERIFY_NVM_0 RECOMMENDED, DO_EXIT; ACTION PROGRAM_ARRAY = VERIFY_IDCODE, SET_PRG_ARRAY, NW_INITIALIZE_ACCESS_NVM, AW_INITIALIZE, DO_ERASE_ARRAY, DO_PROGRAM, DO_VERIFY_BOL, DO_PROGRAM_RLOCK, DO_VERIFY_PGM_RLOCK, DO_PROGRAM_NVM_PRIV, DO_VERIFY_NVM_PRIV, DO_EXIT; ACTION ERASE_ARRAY = VERIFY_IDCODE, AW_INITIALIZE, DO_ERASE_ARRAY_ONLY, DO_EXIT; ACTION ERASE = VERIFY_IDCODE, W_INITIALIZE, DO_ERASE_ONLY, DO_EXIT; ACTION ERASE_ALL = VERIFY_IDCODE, INITIALIZE, DO_ERASE_ALL, DO_EXIT; ACTION VERIFY = VERIFY_IDCODE, DO_INITIALIZE_ACCESS_NVM, R_INITIALIZE, DO_VERIFY_EOL, DO_VERIFY_RLOCK, DO_VERIFY_NVM_0, DO_EXIT; ACTION VERIFY_ARRAY = VERIFY_IDCODE, AR_INITIALIZE, DO_VERIFY_EOL, DO_VERIFY_RLOCK, DO_EXIT; ACTION READ_IDCODE = DO_READ_IDCODE; ACTION VERIFY_DEVICE_INFO = VERIFY_IDCODE, READ_INITIALIZE, READ_IDCODE_ONLY, DO_VERIFY_DEVICE_INFO, DO_EXIT; ACTION DEVICE_INFO = VERIFY_IDCODE, READ_INITIALIZE, READ_IDCODE_ONLY, DO_DEVICE_INFO, DO_QUERY_SECURITY, DO_EXIT; ACTION VERIFY_NVM = VERIFY_IDCODE, DO_INITIALIZE_ACCESS_NVM, NR_INITIALIZE, DO_VERIFY_NVM_0, DO_EXIT; ACTION VERIFY_NVM_ACTIVE_ARRAY = VERIFY_IDCODE, SET_NVM_ACTIVE_ARRAY, NR_INITIALIZE_ACCESS_NVM, DO_VERIFY_NVM_0, DO_EXIT_ACCESS_NVM; ACTION PROGRAM_NVM = VERIFY_IDCODE, DO_INITIALIZE_ACCESS_NVM, NW_INITIALIZE, DO_PROGRAM_NVM_0, DO_VERIFY_NVM_0 RECOMMENDED, DO_EXIT; ACTION PROGRAM_NVM_ACTIVE_ARRAY = VERIFY_IDCODE, SET_NVM_ACTIVE_ARRAY, NW_INITIALIZE_ACCESS_NVM, DO_PROGRAM_NVM_0, DO_VERIFY_NVM_0 RECOMMENDED, DO_EXIT_ACCESS_NVM; DATA CONSTBLOCK; INTEGER IEEE1532=0; INTEGER STAPL=1; INTEGER DIRECTC=2; INTEGER PDB=3; INTEGER SVF=4; INTEGER FP=0; INTEGER FPLITE=1; INTEGER FP3=2; INTEGER SCULPTW=3; INTEGER BPW=4; INTEGER DIRECTCP=5; INTEGER STP=6; INTEGER FP4=7; INTEGER FP33=0; INTEGER FP34=1; INTEGER FP40=2; INTEGER FP41=3; INTEGER FP42=4; INTEGER FP50=5; INTEGER FP51=6; INTEGER FP60=7; INTEGER FP61=8; INTEGER FP62=9; INTEGER FP84=11; INTEGER FP85=12; INTEGER FP86=13; INTEGER FP90=14; INTEGER UNKNOWN=127; INTEGER UNSPECIFIED=0; INTEGER QN132=1; INTEGER VQ100=2; INTEGER TQ144=3; INTEGER PQ208=4; INTEGER FG144=5; INTEGER FG256=6; INTEGER FG484=7; INTEGER FG676=8; INTEGER FG896=9; INTEGER QN108=10; INTEGER QN180=11; INTEGER TQ100=12; INTEGER CQ208=13; INTEGER FG1152=14; INTEGER BG456=15; INTEGER UNDEFINED=63; INTEGER GRADE_UNSPEC=0; INTEGER GRADE_1=1; INTEGER GRADE_2=2; INTEGER GRADE_3=3; INTEGER GRADE_F=4; INTEGER GRADE_STD=5; INTEGER GRADE_4=6; INTEGER GRADE_UNDEF=7; ENDDATA; DATA PARAMETERS; INTEGER FREQ =4; ENDDATA; DATA GV; INTEGER ULOPT1_BITLOCATION =23; INTEGER ULOPT0_BITLOCATION =22; INTEGER ULUWE_BITLOCATION =21; INTEGER ULARE_BITLOCATION =20; INTEGER ULUPC_BITLOCATION =19; INTEGER ULUFE_BITLOCATION =18; INTEGER ULUFP_BITLOCATION =17; INTEGER ULUFJ_BITLOCATION =16; INTEGER ULFLR_BITLOCATION =15; INTEGER ULULR_BITLOCATION =14; INTEGER ULAWE_BITLOCATION =13; INTEGER ULARD_BITLOCATION =12; INTEGER ULNR0_BITLOCATION =0; INTEGER ULNW0_BITLOCATION =1; INTEGER ULNC0_BITLOCATION =2; INTEGER ULNR1_BITLOCATION =3; INTEGER ULNW1_BITLOCATION =4; INTEGER ULNC1_BITLOCATION =5; INTEGER ULNC3_BITLOCATION =11; BOOLEAN BUFF128[128]; BOOLEAN BUFF32[32]; INTEGER I; INTEGER J; INTEGER TEMP; INTEGER SDNUMBER; INTEGER ROWNUMBER; INTEGER DATAINDEX =0; INTEGER FROMROWNUMBER =1; INTEGER AESBLOCK; BOOLEAN ID[32]; BOOLEAN PASS = 1; BOOLEAN FADDR[3]; INTEGER STATUS =0; BOOLEAN SILSIG[32] = $00000000; BOOLEAN ISC_CONFIG_RESULT[18]; BOOLEAN VERIFYEOL[2]; BOOLEAN COMBERASESELECT[23]; BOOLEAN SECKEY_OK = 1; BOOLEAN SECREG[56]; BOOLEAN ULUWE = 0; BOOLEAN ULARE = 0; BOOLEAN ULUPC = 0; BOOLEAN ULUFE = 0; BOOLEAN ULUFP = 0; BOOLEAN ULUFJ = 0; BOOLEAN ULFLR = 0; BOOLEAN ULULR = 0; BOOLEAN ULAWE = 0; BOOLEAN ULARD = 0; BOOLEAN ULOPT[2]; BOOLEAN ULNR0 = 0; BOOLEAN ULNW0 = 0; BOOLEAN ULNC0 = 0; BOOLEAN ULNR1 = 0; BOOLEAN ULNW1 = 0; BOOLEAN ULNC1 = 0; BOOLEAN ULNC3 = 0; BOOLEAN SUROWCHECKSUM[16]; INTEGER SUROWCYCLECOUNT =0; INTEGER ACT_UROW_CYCLE_COUNT =0; BOOLEAN ACT_UROW_DESIGN_NAME[70] = $010204081020408102; BOOLEAN SUROWDESIGNNAME[70]; BOOLEAN SUROWPROGMETHOD[3]; BOOLEAN ACT_UROW_ALGO_VERSION[7] = $14; BOOLEAN SUROWALGOVERSION[7]; BOOLEAN SUROW_PKG_TYPE[6]; BOOLEAN ACT_UROW_SW_VERSION[7]; BOOLEAN SUROW_SW_VERSION[7]; INTEGER PLAYERVERSIONVARIABLE =0; INTEGER SCULPTORMAJORBASE =4; INTEGER SCULPTORMINORBASE =50; INTEGER PLAYER_VERSION_VARIABLE =0; INTEGER SCULPTOR_MAJOR_BASE =4; INTEGER SCULPTOR_MINOR_BASE =50; BOOLEAN ACT_UROW_PROGRAM_SW[4] = $2; BOOLEAN SUROWPROGRAMSW[4]; BOOLEAN SUROW_SPEED_GRADE[3]; BOOLEAN SUROW_SRAM_DISTURB[1]; BOOLEAN ISERASEONLY = 0; BOOLEAN ISRESTOREDESIGN = 0; BOOLEAN FLAGDISPLAYCYC = 1; BOOLEAN ISPRGARRAY = 0; BOOLEAN BSRPATTERN[885] = $1249249249249249249249249249249249249249249249249 249249249249249249249249249249249249249249249249249249249249249249249249 24924924924924ffc9249249249249249249249249249249249249249249249249249249 24924924924924924924924924924; BOOLEAN SAMPLEMASK[885] = $0000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000; BOOLEAN BSR[885]; BOOLEAN SAMPLE_DEVICE[885]; INTEGER BSROINDEX =0; INTEGER OINDICES[50] = 561,558,555,552,549,546,489,486,483,480,471,468,459,456 ,453,450,735,732,729,726,717,714,705,702,693,690,681,678,669,666,657,654 ,645,642,633,630,621,618,615,612, 609,606,597,594,591,588,585,582,579,576; BOOLEAN RLOCK[832] = $7fffffcffffffbfffffeffffffbfffffefffffffffffffffffff3f ffffcffffff3fffffcffffff3fffffcffffff3fffffdffffff3fffffcffffff3fffffcff ffff3fffffcffffff3fffffdffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff; BOOLEAN ARRAYRONLY = 1; BOOLEAN CHKARRAY = 0; BOOLEAN FROMRONLY = 1; BOOLEAN CHKFROM = 0; BOOLEAN CHKNVM = 0; BOOLEAN CHKSEC = 1; BOOLEAN PERMLOCK = 0; BOOLEAN NVM0RONLY = 1; INTEGER HEX[16] = 70,69,68,67,66,65,57,56,55,54,53,52,51,50,49,48; INTEGER NVMPOLL =0; INTEGER NUMBEROFFROMROWS =8; BOOLEAN INITIALIZE_DATA[5] = $00; INTEGER SDTILE; INTEGER NUMBEROFSDTILES =4; INTEGER NUMBEROFMAPROWS =1772; INTEGER IDREV; INTEGER IDFAB; INTEGER BM7DEVICE =0; INTEGER BM1DEVICE =0; BOOLEAN M1BUFF[128] = $acdd6548ccb488863e291eb18fe95077; BOOLEAN M7BUFF[128] = $e137623a2eeee91126015f3f73664945; BOOLEAN IDCODEVALUE[32] = $05a131cf; BOOLEAN IDMASK[32] = $0dffffff; INTEGER SECKEYCHK =0; INTEGER DESIGNPKGTYPE =7; BOOLEAN ACT_UROW_PROG_METHOD[3] = $1; INTEGER LABEL_SEPARATOR =0; INTEGER ROWITERATION =100; INTEGER PAGEITERATION =100; INTEGER PERCENT_UPDATE; INTEGER DIFFERENCE; INTEGER UNIQUEEXITCODE =0; ENDDATA; DATA BITSTREAM; BOOLEAN UROW[128]; BOOLEAN UROW_MASK[128] = $fffffffffffffffffffffffffe01ffc0; BOOLEAN DATASTREAM[1474304] = @W@i00000110040W0W000020G000400108002200000Wwc qssso0000p@@lF999IjjjQp0000_@x@@IYaatcjj50000y_@@7HIIIORRRR36uXaa49jjTDq WD2000y@VV@99IIkjPRR2000ot@tkXaaaC0000Yaaa8caa8100O040aaa4WaaKEBe65G899f 67Waaa4aaaKD020Za491aa8900gX7GIIIA0000800m0G0aaaa9mWauWku00000IIIIg1Vqss sosssc3999A1000jjjQpjjPRMIYay0000tcjjbMjjj8III20000ORRR3RRRhWaaa3ZWQW3sO RRIsba897000mskJ8Wi999Io0000MIaaaBHIIEPRRxKIIIc9999caaamsssidaa8vaa49HIY a4RRssGIaa49HIIa899Xcjjj4999XQG7caafusssgZaa4PIIYaC994cjjQRB9HIQ0SoA8EH0 IIIYxa1r72IF6WaaaySHGDW50IIIq40000Wa8P90e6G0R00000GIaj00608a6EeaMGQWWY81 rW6QNJK3i8oIGD81IW00T24KRRRp9999FU0qssM1III42000800K38eLg0sssMHIIIXp3g1S 8Oca49100G21WQ010DIIaa00080qcjjXDRRxIaaaO_@@@PRRRBsssc99992@@V@ijjr02C99 9Hu@@tFsscjfjjx718_@@h1WukA9HIY@llzsMjjPjQhPJg18mlVeDRRhDRRRsijjzjjjjpss sMtsscNRRR6RRRsURRh18GqsscbssMjORRs6RRrsijL3GWDsssQWEuxssgjvscbiRhssCRs_ tlr04ebz00004mnY230FK3uK@Z130Br9SX000WQ0D2Defjmf1WCZJMB22jOho2q_FGp@1Q_F Gp@1Q_FGp@1Q_FG3l8999HIII2baa41999oIIIaeaa8989HIMIYa49f6G10999HGIIc1W089 992IIIaaaa81IIg6W7T2ce6W6H3UAGZ@3qu@0D_FG3NJ6q0GIIIa200YKW04000W899BpyWS 3LuQH3QFyWQ00fJ0AkIaWu1O02000800W10sfJ0AaaaaO0000GIIYS0000A99I20000ca89H 0e6W2400008999N12g1mWqEFe6WEw4OYI6Fmaaa45000WIIIz7GWIIII0000W899xHWaQ0ee JWB21m0Waaae000g2W020000IIIa100q7m1jIGGY09SOm1r0CId0K4NA1f1K0WIIoq080HII ID0Gq9G4r0CId0EC0m@LNbv00U5Yx11qONq0hbCWh1eTD480W10K8hb3YLAiARM8mf@34y@u H_DqW@3ev@kW_9ua@3gx3baaannTXIIIoUuke6WE2UKzWJ_Fua@3UywW6GBun@3Uy@W7@V0W @3ev@y5pDun@3w_@W7@Fua@3Du@0Q_Fun@3Uy@W7@Fua@3Uy@W7@Fe1SajjjP0000qsscj00 00GRRss0000ajPRx0e6040ijjP300e602k9a0jjjDr0CId0Am100eJ02ORRR3999HkjjDZaa 49qssi5IIaaQRpsE9HIIORD058sssk6058sssgHIIg6WJaORRN3m1T2GWjjjDdaaaWsssiJI IYKRRRTW3Ocaa8njjLRbaKD04OXaa49sssj0BK3G7E999XjjjPdaai6070000uaaa42000GI IIa2009HU0eaa49200@CUmvX70999fFI5g1GZE1Ie602oXWWE1AG2@@l@Xa499@@_@JIaa4@ x@@DHII2l@@@79999r0aW799fQ0809999u@@VFaaar0GId0DuZaaST02KRRR@uW1tFG0sssM 5000WQRRrA00K3W23FG0sssss28msssID0cq9G3r0Gm00@F0m@1Rz@00GcLx1p6m0G00Wuha Y010Gd0A4DW31F_VCcA6zfW1dyVOO@7Gp@30WoAw60G008H1mo5mWf1EO003IRXWW7@Fun49 8A9HI2IY4abKd040aWaCekqWbaa4yOPtGqHKKZUOmMH3SImZ@7yu@1F_VmZ@7yu@30yVmZ@7 yu@n_1PmZ@7yu@1dyV8Y@7Gp@zL8RmZ@7yOY1r1OCCv6r1q1RHUmZ@7yecT2SGmZKr9051FI Ld0G4yeNT2qGmZ@F0m@1ezVmZ@7yu@1F_V0Ql7So@X8_V0D@7dWhDc4LmZ@7yOgWa4b2USC0 2W0XW8yX154rnON9yHmZ@7y8XHTSHmZ@7yu@1F_@00@7yu@1RzVmZ@7yu@1F_Vm9@7Yu@1qy VmZr7S2q60002U4xWwU86cf3Ev@W7@FG3ng1mWW7Rc300GmZbHijjDun@3Uy@10_F0j@3Uy@ W7@Fun@3Uy@10m0200Gq0@5FYjHTWM0D@7yu@1duUmZ@73JZ1dyVmZ@7y8V1QqGmZ6t9m11F 6Md074yu@1F_@00@7Gp@1F_VmZ@7yu@1F_Vm9_7Qm@1qyVmZ@7yu@1F_Vm9@7yu@1F_VmZrm 1008uHaORRRt9m1bCE1nsssW7zf603aORRt9m21FI5ijjDxaaar0uGmZQL301vGGGmZ@F0mZ 040060u@0Q_Funj90004VLPC0002Uy@OCzCwJ13Ev@uvVF0j@3Q0twJGZ000GmZD77d61FE3 9A9fWwm8IID2UCt0dc6800Gm9@7yOff1OGmZ@7yO6T2eG9ZQ4yeETHIH9ZM4yeFTH2HmZGKo O31F6KNaD4yu@30yV0Q@7yu@300OWJGNoeW1t7LeRe5yu@Xm@UKXGtfc61DyVCCvK3GPnmiM mZb5le61FEJd0NKAd61FMDW00Wn0ke60EQCPqsVEAuHqbWaWqNX50919h10a0Dg1IIIImZvo 0008unbw4uWI6dWQRRRmZBr9m1bCQHmZULoO31F_VmZ@F0m@1F_VmZ@7yu@1ezVmZ@7FIvX6 yV0D@7So@1F_VmZy5So@1dyVmZY4RXI1QiMG3ePRRRp1000ejjji6FW200mBV74y8HS0002U KX67ff60GaORRN3m11FUWIIIIORRRM999HkjjPxaa49rsMmZ@0RRRpE99PD0EKoe1O0000JI IYS00eaH2q0000899Ho00GmZ_K301vGGGmZ9GIIIYz@@V9Z7Waaa4_@@lNIIIaz@@1FYrZ34 mjjjjOI22UytIj5S0W@3sw@W7@Fun@ZJ0s884Cua@3EvmUUWEeX@ZK1tW7@Fun@3Sw@Wj_Fu n@3Qef67rf6WBwYS2sORR1F_4baa4vsssCIIIaKRRN3m21F6LD06Obaa4fssMd074yu1A999 BPqWW7FG1000Waa492001FYJNaJ8f@@FhHAyIIIsu89r0GHNa9Gg@@t@ba49v@@Q080P00Gm ZL1qsscj00Gd0A4yuRTH_@00A22008eX@3Uise2HBeXjW0004y8mXk1T7k@7So@1DyVG327S o@1F_VmZD44qm30yVm9e6yer1DKMmZEPRRRBun9Odjj5yuJGIII2UqWQ0S8uHjw4GXW77sla a4f@@@W75hJ082Uy@0Q_FeX@3Uy@W60Cun@3Uy@WJ_Fua@3Qu@W7@Fun@3Uy@WJ_Fun@3UyV 880900000a05Kl11aW4400000GG2Y000GD09WW00e60D800Ia6m9aW400400HG22006009u1 1006004qW8002K3G2A800g1G340W4f1OI_a90QRRpM00Gna4m0000ajjDx00WABtfJW8AcS2 gjjjwaaa2h4fE1EmssscJIIIGRRRs999Hgjjz4m1XLkJd0J4Mv1E9993hq0a2005JIG9Z44M PFT2CX4_@@y9FmdaaK_a4maaa4y@@lVIIomAnfJW9yHII_H015Jcmz34WjjjL100GOb4r9G3 XLsx00@NWJeT2eHq0eD0WnW000AaoZGgEAQW32Q0jmAdEE1qYW0jWJ_FUaG3Du@0Q_Fua@3h yoH088iIyYJGi10WYW00m84G0a008gZeFDuWWJKEs2e0199r9W20H99HIGIY0iaCGZqgUaWW 6GBunjORRRp1008uHig1m09sssr0SGmZO1RRRpE99PD0E4yeMr0GGE444yu@30S2010W10_F 0j@3Uy@108gvt2YlQC6000HUzNmZs6R1Q544JyyV6yu@X6yV0DQtZmV1F_VmZ6IYIIAUnA2U y@eEgFOBoZj0j0DMBunXx4GXW7fgJ0A2UagE1W8uHlw4eXW7@V0W@3Gx@W7@V0003SQjW7@F 0j@3Ev@G4@FWc@ZJGsWJ_FuH3x4uYW7@FsQW2Ev@W7l7aaeKmZ@7yu@1F_VmZ@F0m@1qyVmZ @7yu@1F_VmZ@7Yu@X6yV0D@7So@1F_VmZc2800uwXBg1OceEOi5ZE2E1SC0001F_Y4a4a_Ai 0898PD0W4eHDGIII2Uy@W7@Fun@3Uy@10_FOh@3Uy@W7@F0j@3Uy@G4@FqW@3Uy@WJ_Fun@Z XPuWJ_FuaDZj0j0DMBun@3Uy@W7@V0W@3Gx@Wj_Fun@3Uy@W7@Fua@33x@0Q_Fun@3Uy@W7@ Fua@3Ev@W7@Fun@3Uy@W7@V0W@3Gx@Wj_Fun@3Uy@W7@Fua@3Uy@0Q_Fun@3Uy@W7@Fua@3E v@W7HCD032UKC20001F_VmZ@7yu@30yV0Q@7ir@1F_VmZ@7yu@1dyVmZ@7Gp@1F_VmZ@7yu@ 1dyVm9@7yeXH3S1aaaaW7Tg75Q2Uy@W7@Fun@70u@0q_Fun@3Uy@W7@Fun@3Uy@G3_FWc@3U y@W7@Fun@3Ev@W7@FuHs2qWeW6GBun@3Uy@W7@V0W@3ev@W7@Fun@3Uy@W7@FCi@3Du@0Q_F un@3Uy@W7@Fua@3Uy@W7@Fun@3Uy@W7@V0W@3ev@W7@Fun@3Uy@W7@FCi@3Du@0Q_Fun@3Uy @W7@Fua@3Uy@W7@Fun@3Uy@W7@V0W@3ev@W7@Fun@3Uy@W7@FCi@3Du@0Q_Fun@3Uy@W7@Fu a@3Uy@W7@Fun@3Uy@W7@V0W@3ev@W7@Fun@3Uy@W7@FCi@3Du@0Q_Fua@3Uy@W7ZcW000000 00200ZGe0G20WWJ_Funv1199HIKIY44aKd0404ba491992mIoW7@Fun@3Uy@W7@V0W@3ev@W 7@Fun@3Uy@W7@F4n@3Du@0Q_Fua@3Uy@W7Zksn32Ev@W7@N2aa4989f0D0Cun@3Uy@W7@V0W @3Gx@Wj_Fun@3Uy@W7@Fua@33x@0Q_Fun@3Uy@W7@F4aqNcqZWJ_lJ0580004yOMT2m089Hf 0DSW4eaKq0M8890fJWBg1GZW7f1202GD0n4yu@1F_VmZ@F0m@1ezVmZ@7yu@1F_VmZ@7Yu@X 6yV0D@7yu@1F_VmZ@7So@1duSi5e5Dm9GIII2q8eu48f7bE2Uy@W7@Fun@70u@0q_Fun@3Uy @W7@Fun@3Uy@G3_FWc@3Uy@W7@Fun@3Ev@W7@FuHs2qWeW6GBun@3Uy@W7@V0W@3ev@W7@Fu n@3Uy@W7@FCi@3Du@0Q_Fun@3Uy@W7@Fua@3Uy@W7@Fun@3Uy@W7@V0W@3ev@W7@Fun@3Uy@ W7@FCi@3Du@0Q_Fun@3Uy@W7@Fua@3Uy@0D09D032UKC20001F_VmZ@7yu@30yV0Q@7ir@1F _VmZ@7yu@9szOL8E5DGB1ezV0D@7yu@1dGd200WW7BJ899PmZ@7yu@1dyVmZR6enM1DWMmZ@ 7yu@1F_@00@7Gp@1F_VmZ@7yu@1F_VOO@7Qm@1qyVmZ@7SYS1FsHZZT4yu@1dyVm9@7yu@1F _VmZ@7yu@30yV0Q@7yu@1F_VmZ@7yu@1dyVe1@7Gp@1F_VmZ@7yu@1dyVmZ@7yu@1F_VmZ@7 yu@30yV0Q@7yu@1F_VmZ@7yu@1dyVe1@7Gp@1F_Vm9U28008un@3Uy@WJ_Fun@h1W0IGII1F _VmZ@7yu@30y@00@7ir@1F_VmZ@7Ws@1dyVOO@7QWcZRqH0D@7SIeT2C3G20WWJafDdO2Uy@ W7@@T3l2Uy@W7v21A9PW6P5dGP2000O000W1000a000W20WD0806000u000030030K31000E 000m000060008100090m6050IIII0000G9992000RDGmiA489990000099991000Waaag1e5 9700r0e0900WQ08uV02Y6uXQ080099P3044DWJn9Wc00007000H3SHaAqO0008eXB00004qm 5nAOGD0JyK11n9SHD0C4dm230a0010W60801000K0004000P7lGG0AaQY9B3Gm0090100000 0Ge14eijjLZaa41ssMjGIIa0RRrs09HIWjLRRA9IIgDRRRa899Xg181ZWaa8sssiXaaK3G3a 4RRrs89L3m2waaa8rssc6m129991ijjP110eS02G1000C000m000030WD388kZT8000W0000 800Gd07m0000100084000q00LDG0u10Wx78G100060000100HGWZ0000A000W1000E004D01 U000G0000E00eJWII20YWw_V00zoleXP2QefWWYJuaa0Q8un@h1eYIIC80DnY6GX0D_V00sU inWWKR4800G44NjT061Q0Lq0c5GZnVKgplSYD0GFG8000010y2r1HULG2M44CiPnGuJmm@7G JjLy1HIV64xN4GIII24ife2b2GIII0do5uqQvmGHW6@7e1R4C000010imm1l2OmGk44mPKWW aa89A9H22IgJ020YIIYaWa41O9PQ07GGKIYa4a490Bfe180009Pq040HIIYaaW41199IIG0a 0aa89980G00AB02G22aK3W7j5KW0aaC9999K0G2QBW02II2n9uX0W000000G2G200000898P 0120101K3m7T2K0a00WQ0AOff2o2W00220080Wo1W080W00080040G0044ewY2g1W9; INTEGER CHECKSUM =54579; ENDDATA; DATA NVM_V; BOOLEAN NVMADDRESS[35]; BOOLEAN PROTECTION[5]; BOOLEAN AESINIT[128]; BOOLEAN NVMCAPTURE[35]; BOOLEAN NVMACCESS[5]; BOOLEAN NVMBUSY[5]; BOOLEAN NVMMASK[5]; INTEGER NVMACTIVEARRAY =0; INTEGER PARSIZE =0; INTEGER PAR =0; INTEGER PARWORDCOUNT =0; INTEGER PAGEADDRESS =0; INTEGER OFFSET =0; INTEGER NVMDATAINDEX =0; INTEGER NVMPROTINDEX =0; INTEGER NVMWORDS =0; INTEGER NVMPAGES =0; INTEGER NVMWORDCOUNT =0; INTEGER MAXATTEMPTNVMACCESS =100; INTEGER NUMOFPARTPRIV_0 =4; BOOLEAN NVMPARSIZEPRIV_0[128] = $000000400000004000000080000005a0; INTEGER NVMDATASTREAMSIZEPRIV_0 =54272; BOOLEAN NVMADDRPRIV_0[88] = $20f8007fa001ff00081100; BOOLEAN NVMDATAPRIV_0[54272] = @0g1000020081R140x5NW0OYb240sDN01msn580cVk01W 5qGeY9fS12W1G4G0O3Y040R8NW0OEw240600000Mo580cdk01Wf604OA0LB0mBA@@6_iJW0G B8mJG020iWZe013stmdR2yD_SZY4mJo640qOwN11V0284u5G010i0wjD2W6_V3VW9GWe54u5 8012M0GB8up11_6VOhK1Hn0mJxtmdK2yD_aYYln7fa81yM6F30FW6GZX8GT0G41kptuJ9Qum 8DWNncFe2Gmw5fWAn79WP0ug4Vb0L1Yh1yKyy1f22Ml54W5mCWSLYlMWg0pvCUgxWZyB0d8W I2m90K2REm8@6W9A2U1K00cGuvx233iE6PW1hVq1iF3BXFXWn0wAWTHWl0s2Gu32K08UGKG4 uBWrSHSHWl0Mp5o51_2ODNCdKS00vX10GG33KXNJ3FlWxelXF2K81qIIQFHFz5AMxBVy2Oz0 9Gq00HXeWqVZFw7P2eD4y0Qg90stuZzHGW6G16001IW508W0C8W6m3W@g108G06e03IW1tH0 00uKBbmY0Z_6_8F10GbD9p6m0I400lGz30G80yFC0YdF0I450yw32u2E@A9E0WhTs53QXDO@ DwA0U2aX9smeeG30VZFy6H2u7284U_W8mtuZkP6mw15X0MNG14WyWC00aYMG3C3Ool8X84Gi AWFjIHX38nqBr4K0e1ikpVM9Clq0MFm1i5URxWZ_b0h7i02GUm6X0MFm04Wy0AYjFtnAHSGe 0RYts1X4GR4244A0cHiip98LHX@8WetbCmw2G21Ml5G0mZ0OdVxI6Oz05mouP0u9m09Zd0W7 11CGi2Oa04R0XOscAeAKWX5GWkG1WAYKT_i810470uXP0a_z9q30Ge0MuqRBf3_dM4i7O404 10ZqSw4OacbE1ZevqDm8DdE4610f00yC9m049E8Ae2CGr00l@0uVtlr@8m80KI6W38v@NC80 ade70nXeGuzNFbKKu34WatsFHFWY3H2vxls492W60bmWj10y3001ID0h3C0WET0KK0W0WGq5 U00lzw78U4My08020K301N43I17KTkm0jyl1Cw9u102QqBUWX955y11CnlzJzY3C8I60jdW7 08OGmm1eT9_C0s0020XGBZ00y9rVom03Pa10Q0r502u3FCYb0eC2e9OQW1ECCA8ZajHW1yBn d0WEjYGGwG01KTz5800mpb_DWH8Qa50NR5bWq0neKOqghJ1100yZqF2Cg16bjH00yeP4ePee rHG021ESnR1h3G2Q4V00Bi6n0Z4bHmvX029G05WwK8WOeF0qx0e308042PC20mNG@0o30ek2 A0BZ0g8u084GCq7WwB2CegW0qpFGy00rX021n8eC20m@b_hKT4yW4Wc0ZqWH10402Hdu30Ga C300Vuu78F2D8080b2W60SF1F0I00G4WH_BFdAY8IB0H4O4Hu2A_b0H4YBeuN9vGkn7X7GvN 4CIkYFa7WolRYZKNd14CEDa6300F0L65aJWWRv7eKX4K0ung8U_bfhd0100UholEGKo28P31 OaP1oMUy4w1WEYAK2ak4cG5_Y08IKt03WXX4991Xl8082mz4z0XEH5Y1I@1ba0DQE446gZaW 0O60S1Wt028WL7OT2BWmI7W0WmD10JWyG0G_7wtsLB0RlG7_7r0I00Den7g04a60O00i0GW7 OWihvGY21023080W6q380610G0WG0520824W0018FG0Cm0020320W0Oeu2403EWG0mX0S00E eg01mm2080C0mW0011A408@W40G3QynA00e1uE2CqsZbsX9aW6rmdLWm1G41UW92Lu33e8OT 030GGR5WC4y0Re50JADK0u7O0G0@00G0e90A50Q3a6MSWaXW0CmmBSE2hEa@vmWN0WNNxYZQ J1fO13GG3A0wJI22014u1k8LdE0200uH0_8e6oy0_H7ZUnfM5q08KI0W84y0Z85HWa04Gjm1 80w0W22GR0KO0qi0kKC24650iw5TO0KBWd1eWj0V3nAmAa0Q4Cz6W3WMs0qKXF2M02Wrc7qF wOqB0jO2ef2_4i0Xmd0Bqc7oFwOqB0jG1e11Q0Y0018Ce50OGWcsunzHBcU10y9ilOw55NW0 Ou@@700SrMAG08W_0Jh2uoQM8WV0xO2uIY7w7DuwDaEW280_4OdayG_H3dU50DIYWa0OWE4S iJ0@2M25m10vB002YWa000uD01L0Dp1Gz095y9uDY3WmY741OW_2GUL6IIUakeXhN00Vqq7k UZ6S0CuBWTc0me14w08W8uJGqG4c1V3i45020vD8Qu4TgFS1b4881XjxZ0DX40G308nKJk0j de70WX2m00UPdF0W@ey10yy9V0WNZv30uJDV6zaHGAO_a@O18jS8JGfb7o8Y9XWMeY7uWCaI HI86aM8eb0qo5C1ZNII8f082QI3F1Wt724XXo3C30UmmBFm40Qv2i0nJ2940u380v0MWGBVm 44Qv9iWrJEX5WzotC1jNk2Bu49ZIH0iWzJUd58@ozC0i8_E30urg_uOjMI22056qQH9H0426 2dny@zVW@@l7Jy@lx1tV@VVYy7Cq0y0DWQSM38q38OmPCWX606mWg10yG0V0D2Eh14w104uC 6GCw@x12@U09FII0Wv2mw5Tp740W@eT1GjR090Gp69b0q2TV040GI08r5CO991CK20Z00uz1 V0nn5II1q84y0HA50J59X4m0G4A2M04H1me0QINVZ0Ye0OK2C5160z6Ea08qE0070GG0umo3 403DVW0m0GG800d0X0m100vx@@@d10m0m0082vT5ObLFW0Oyu3403G2z00m1aeD6O2u10J3K jj4IA2DMy0O0EfU8CeYetWGf4j44Y9HhIi8q8OjlymJWzXWmmT40W@2xo@qHo80S7j004000 42001kZ0Hjane1cMI214X2BU04m@kFy@H6044281a8q0v2I04z29XYRT3m0uc6kQ5h_1Y_Pr tWrpYD65847F8AG6zLWzpO8H1oNm30ZC7820_MGuBr9Z04IZuMt05GYV1n8fOaT2Y_f900B0 0O000X0dU3G5vcDSgb2602qnI@0fdiwBew9EUWG0PoWsu1Y1MRQP1oNm30Ye780KY00NA4yb wpO0ZrGShB078vNmOKSCYiWqMGpd9e0W0GA00kUnWHnQVvZd0x7XYQX05fE4Agsz9Fz2OVAg 2Wo24rBe8rkly188WK0fE202Ez200WWMVWaGendaI0Q_i4D0Q9er3J618DCaGWHHq44O2W6Y a7egb40C1G3EBf1WM0Dumq80IZX21G0RMI3090OK6jXXcOpZW166O9acde78I5XGM0w0WM8q 3mW2ep91H0E84W1WWNuSaA898q0GA2KjWHBP7mVr09f4WMIe9uv7GO9OW4SG0e5sysGC106S 7H3a00QOa4XGJOpRWGaW09mmIeHivjmGB165GJ8q3e0K0C0W6mph0W0010m05G3CpNXGK0C4 W68q3G0G0OmTa5G20e5HI48jXOl@pH3WKYO2a6XdNG2f4OH08mGIf0m0ADa92isNUuXKOmv8 c011WZIer2yt3@xV0X7G0z70_zN0_@l_z@@15840SI011WtYqXF842B00fLy100mI4RIIlu3 0000USbVhm700C3I50j2a7g4qBy100Xd8Y42ZV10yR2V009701mGaMo2S0ZolLu300P08Ge9 YOIW2a8_0a4e0WXM9SAW6eC0mqqY01rB_T18mBvtAy100@V@xu7GZ0m9uAU0Um3G70L58LuO q@kVT_5Wc28pUnFA01s8@MXF00uFEEIHlFT9024MY8cBe0RXF0v2AGruZA02e1A20Cv2MG0v tQ5X34IY8s5e04XF15t8GW0yBCz0XmQ54OZ0@@@30GfPju170w8mN0x00y3O7IvH8WUn3SVq 3w0FY64wSWfXXMnYEEW02T0Awu0Yyb6CyEb38vNnYE2W0KqX044vtem71x04y9O7IV09_D6y 9mAW0V1M1H@k0y60EmT42qvWfh2G04q1ec06OvxbsK7GkpXXMJWq4IA0mC1IK8fdW70I1WHe m8CAq_ak3kG0_1Ohju08hSlf1O4rVECeD1aaGI10i5GY29zKKWD01O008zhYRC14BG0C0010 01CBW0OJ09AIIeh3W00DU10GhMF018Qy4G01YN02G0Q5DU18mJKFg0C0YJ0G0Yd008Wu5G0X 6V020WKKVq8094I20z6WH60C10Uef0Am_H3dZ0uN00GAg01maJ580C630G2f91000mJB009Y aCb80H_@dHH90grBY2FuaDGpWrLO148U5C08kmZVRRDbeF1e@WfvwQ4BUGEWl0rM8W2GpGS0 eWm71Bf0Oao3Y7Dyu5kZ0ml08420Fa11E0W08m008016014G02Em0500030CH000Gg920m00 C0m1mGhQY5Xb8b70IM2a0fo61y3OBi1qCmd2WGew0040KXyH38PXXt025m040Zqo22T4vN0e l0Y70G0tHIH8e3Yqn321Y48114q02IW44Gmv800mKPD5G4w9FH586w9dOKI714Y22L11YXaQ 8WOKGIYfYG40jebMQnKPD5gAgfd060fWa2HWOaWgY9KrIBQfbM004rg0aA0JWA42W6AuJm6G y8G9a_H3YU1ml00m003I8OWGqN0m3G8Wx8G8Jq11QWG2GH2ae12f02500uf0_0WY0W_Vthz@ 00a@T@Fy30uD1_00W1KI2e11Qa6V20EWp314XpH8qE00VWIU40D0d728_4u10WK06WXQ1r_1 CYCC226nGl289C0og_Q@pD1020W3C276z@zi@@zTEWrw@xnF8J1Wxe@Tl@@w@xxbl@VV402I 0O1d13W10@F0m@30y@00@F0m@30y@00@F0WCv9IGKH48WB4W5HL1Yf000WI5OGn6C100OOA0 004e8KgW1N_p4000ax0W0N6m400010H0dG0J0W800m00Cu10000N0m00Eu300O0WC8200u90 020G00008XG08G300Wbm170e8000WV2203OX3011SWY8GaW0c0Uu0GG0509040G100000n80 E0o080W00000048G0WY0W0KGW00o20000O42m10J21Y0e0OGX00Q000005a0m7X9GG208C00 L6m@9o5e09u@a280480G@m@n4G0O80WksV32W0HBGW@7G010J0f5Kms02100W00G0106022C 01W0a0C0G042012O088mG402GY00O4W0604O010W000C08G4601m00823e04G04X1KG80446 018Y080I6046W1m0082381W004X1K0480Ym0A840223W08H04094023m0W004X1Om06nP001 0040GXNKmaEA1u3ca024Wi7802W4002lU54000G2060m0Uen1E0W20041u00We403W20000C Gf2W6W1OW2G1m0AW200mWLmAi2MXLON08et9A0O0Y00W4Q3000wV81Gv@J1WA9L6_x2wLJs@ 3W1; BOOLEAN NVMPROTECTPRIV_0[12] = $000; INTEGER NUMOFPART_0 =1; BOOLEAN NVMPARSIZE_0[32] = $0000ff40; INTEGER NVMDATASTREAMSIZE_0 =2091008; BOOLEAN NVMADDR_0[22] = $000000; BOOLEAN NVMDATA_0[2091008] = @0q@00000208PA0008V2000sN000G@2000_d000W060WX8C m000W268Z1EO000G23000Mm000W66000ym000W8C000OY1000LC000u23000oO000m63000I ZV00WKP300KDR00WwP7008ax000dC000853000MP000GB3000Un000WO6000Cp000WQC000u c1000vC000Od8En0GGF3000_P000GG6000Cq000WY6000Sa10009D000Of1000DP000Gj400 0wo000mK6000Kr000Wh6000ab1000RD000eh1000VP000GO30006R000GP6000Ss000Wq600 0ic1000jD000uj1000nP000mS3000gR000mT6000at000Wz6000qd1000@D0008m10003Q00 0GX3000ES000GY6000iu000W67000ye1000HE000Oo1000LQ000mb3000oS000mc6000qv00 0WF70004g1000ZE000eq1000dQ000Gg3000MT000Gh6000yw000WO7000CRcHW1000tE0008 t1000xQ000Gl3000_T000Gm6000Cy000WY7000Si10009F000Ov1000DR000mp3000YU000m q6000Kz000Wh7000aj1000RF000ex1000VR000Gu30006V000Gv6000S_000Wq700043a100 9YC008Ka100v2P00Gq8300I7P00G0I600aHo00WOI600aaa100XbC008la100HAP00Gg9300 2EP00GsI6004Vo00W4K60042b100veC008Ab100fHP00GWA300oKP00GiK600aio00WmL600 aFb100HiC008bb1001PP00GMB3008390U4PG20KiGqa19oIIPAX8XC0QHA47_5AyHmE11V2s 1_H76a2B9Yf4YnW8u5IU9flKIa2XXV32V4iW_YkBayWy3m10EoJm300U2U04mtm7juv@v_N0 _l08300eGv3003040C2081e0iQT0905000008ih000100000H0401S008zWW008BK000Wes2 mq8uPcS9mIJ4B2G20W3ml2OaH074z66W0yiE00OmIWesD4h18nWa00u0yB3GQ0eDHiAOf14B c71YU189u0mh00X14a6K00h50l2azIO6X9F03O3ysci0iYGYk0mhl@U2_10mJmJW0A0ySylZ a72m0iy20W20FZ@x9u986u0Gy@Ha74OY1C0W@3KYm1U2_08W6mXFm1ALO11iI8Yk0u1j@FbA a0vz@8oJ3Cv16Gi@VAL81cx@Hf29mg@1AL8128W6WJAmJ5OW0h4YeB0Ucw@Jf290P@FYy41J UW1mv@dI5I0l_VKgG2OvVWI5Im02e1uG1yK16CmAW8w2W7V_@KgG2yq@Z8FKma7O07_@fKX4 8f@7HUmW96m02yFGf29001q0SF1F4001mtZ@U2UK000mR0yxbH0sBWD2GqE8i0ur1Oq_0o9v 1G4EBF02uMvR0CUIzf0n_8Q0u@W0F1l06O0wBmyqmedeEW3O1Y66_06Y3Yd17qhH0aNuS4m6 5r81dY68stmCX0AuZeVAk812v@HadEO2ACWi_@KSH2in@Z8FYm43O0Jz7e0X3IRCGDX34xTO c836w4Gm6_VK3I2Mq@dw4Im3_VK3I2_pVWw4IeFW0E4EG5GD08uP4W0PVm030oU6wBMG5HN0 u@j@q154U@7rEbWey7eiW3gAC0uW3KUm22ObA4T1mBq_VAF813t@Hv19O6@1AF8X6928Cu0b 7i01Mf2HN0y6i@do3IGfzVKUG2gmVWo3IeBY0a2EGv1BOWL02yS2e2Wdi_W5OO@7r781st@J L9IWUzV4vv4cO06Gz_1gLG2H88GUW3Kib6CHq05b8Xk34q8G1Nr@Ha7MOQ4OWZxlhyAFege1 AOn3MO6XxXKXPw@8oJCCH2Cmez@KmW4SI@7HUiX96W1kiVW24SG313O2u05AO11iY7X2Mm2z V4vP7cu06Ol_VAKG2_d@Z8F0053m0lrFGX2IeNY1I0040lgyx9uJ10@VFuylN61Ol0iM11B0 lw8vf8DG1W0_EW@Ho33W0E3G1k0@Z8FH0b1m0HW@HadDWo0OW5m@8oZ9GP0CG1uVKUW3y0y@ x@Wi7Y08Cv1000P@3YHOv1G0F1_04W1m74y7m8QBBGi7YPo8GGJ22Iqm03W6eQ07O3y0mAT3 T704ALWGM05AjG0J148s@mCb0CmUWj7qYP5O0zUGJcLy4qx1DOM10GB8mFIU434mX4Amj@3K hZ700000U5ttWW3KRZ600yOJVWi7Yp9Sh02W666v1u1p_2Oa5Cw8oJEGL2CWa@34x9SkW0A0 gz588G1m78W32K01@78spuS11K0GxBGGW201K074e0ozVIf3UmHopIEW3Gs@1rcO250lf_V0 ZQJm00WVDyJay024W9@3000uF1_0PVR2D81u7HUiWAOW1ev@Z8FQGb1m0kyFGiFYPAHeW3Y7 XkJ4abA1u1s00VFqCGy@Rcz0pUe1WLmFwGKC0sQH4i2yQ937qIq7HUAXA0o1y@8vXBK0d1e0 vxFGadrfY2O0DC2eC07OByw83G2s4FEo0aWjn30JUayG6AW9V0082ZKXHZOa7W7R_x2unMKm ax3KeW4Y3eGe07aXH05A8174F140W85maGmeZa7sH1Cv380YOqAC22ubB_78U26066L0u1VV 74F6EeNZ0Rl0gsMhtoj1WNV2U0Cmnmd8RY0GW3nV9s4az812X9F00O8v1G04BVC33W0yqP@W iF6W1G0UEv@06vOyPYDNZFciP4q7mSP0GmGmFg1E6@C06q501PO42Wtd_1ay8O0Xb7034KBW 4a0yDQV7WNAvF4vHVYuBC0cv4k3020x9uh9eWZn7Asu0uk6VeOn1n3X16Ly4CGI02e5LN3Ve in0n7GGW2SD_Gn4WatFZf9XKlxsB4e1uBb_1PVv03a0y13@1ConuJ5Rk6V4Pp0b1A0Hs44x1 PYE98OXel6_KP30Mv0HVD_8o4c8@lZ1OvRn0QAakp_Wo17qNG1FHll4x9uz@C90UlnFj02s0 j14V02q101Q0s1j1E066v0uhY@g1CKCu0s@xS0MUrCWc21ri@tzCxl3gt2tTGz0yiU3Ab01W FHz3ay1GGmJgFWHqKs48AG8r7m0RAhDbz9gFm8oKMWY2CY96PJogWHX0Gmk0UWu9O034l020 8vpaWGU07iDU2bCO1OABGH169P014m8X21SW50KN86ay8P4XBHG00TIfo17OWDGq40_4x@Vk 429GWdW703CHNW20o82t5e03fq1T1MeG22q0FWOl4pKgwWK07GBy0A5m1q2EWI1S0Dn3eK07 GJu0A5m1q6FWI1S0jX3eG188FWiFKm1Y38v35SGAW4eLS0r301u1azWP6XhSTGFW3I1a0jW3 ek18a281Q27GT3G85G2q6EW25WWy0o_G17aC8Xu144Au0n50y2v@3YAb0Ja00W8Y40040LBX m6MY0C0F8md1u1T@3mezdp_xjhvsVFOO43WdA@DWHxAmztZk9Y1ZYm800l3mV@zY1W0Ct@0C Q@ve@UxQFD5IwHVWuXuWa9C8J02CWHAmezZp46jB0tFFOOa2Wdo_J5m0x0sEGBWLu1qx0D1M 1BGl3q0O500zN0V@yeBYOme8CY2mx2@7meqN80LvF0ZOHfK08m3mR5z7m8QO4GfoS0D0xem0 M0c_FGO050dy5WH0PVhC6G3mif8W5qg@3K4G1E9V1O4GsZov4k8W222G1Xx@011KWBoN061a zWSEX32u1pw@011KW3oV06XWIb4OW6qVWI2Aef63IvWWy3C000e7Y000W44agDHO3LW0@VFU w@@xHa@@xU4wlY22iBOF1U06m_W1KVD7asZ100_a1uJm300_tzxyV68888vHH82BF0208oBa ObWG04WlQ_FWHs9iTa60huiktHQQABWi7p_1C0W19FK6HOo3m0uCndGF0WX0urc_3O4E5o4H @4y20010@uzN502s0H0iIIGZ0u1l4W52702QOqJW7W1W0yMYVWiF903IJf00s2uD3e0Wit00 G0yEL@1O4d29ae90yqoVn0C03e1gNWGS6@0rBG3j8KWm_1Svds2Cw9rDy0FHzX5m445ir7O0 Ff_W6G3Z0azmcTW1828xnwS2dkG1U2U10W0mZk_1AVW5e1q40_uwFW0HS2@05GG3sFj14V03 O@msNQ1i2Upc0mFh_Qvy34F97eNZWKl0MB0Ur1mJp_n2XWdeFC1z4y6GW20Fcv7UX1PtK00U 2U54m1WNA@RNWWC0C0J_@4u50WC0CWH_@KtK5a1010o@dgufWC08WE_@4uB0WC0C0D_@4uD0 WC0CWB_@4uF0WC0C0A_@4uL5600l0LiLGkG8O8v1m04Bl06GFeDC_G4a3g5AXaNC8w02i3O0 0U7mt06j7ms3Dlf_06OFmW7Q@x_l@Fg860mh359m1c6V41366b80284M1yw2mB3@V2y1CWzZ R1mJX@L0G00cyfg3AG01y4uRG0F1l26O1uzc@FL3m1n7GGD0CGC@FeQW30RjG2M0UbHo3X18 MU0CmU6x9u1m0xQCzMJHohlf8sUkDq40x@xjq@2HU04WpoJ014IU0CWpadW1inQ3XU06p4Zz 4uT00@V@lmN8v3202ZGF06RYnY3W20Er46x9u510@x_HnFE0A22W040@Qyd0uDY@F1Uy001m 77@90UVxF1WFK@Z13140@@y@8v1FK0J_0001m@MVU9W0udd@79F203uO0AmO@@KV54Oi407G s34e0MU30m@k@Vzj@Q3KA116R@rCsAohx3W7yy@Kh09WQ@FgZk3G0y4rAm210IG7T6W0unn@ F1V@U4WZyV2y80WdWNC1S0y8f@d0F20u0urN@F1lK000mxG_9aHGE06mY_V2y90W3WdzS0E0 0v@lxbrV@Vl6_79v18G0JUF0m@tJBz1o_2qO02H@lxHt@6iGm@tJAzH@yOwSWCH3K2UDGbe9 gBW4qe_FbMI12d@dAC81dvFGrVj07WVCzJWHQme34l0303ZEYyO4MTK8u1uvq_74VB04W0u7 c@jUUfTEqEW4L3O0Mv@fg1IWC_3KYOBm1uTfQW60JO0NDG2ER@3g6u0EwFHz5a0NqNks1Qm0 h8Js1Ru2zVgWW2i6@FLGG2YlVWQAR1E0Vxud0ZA8G1456m54a0Js@W22EGJ_VZp1o_olOW2H 3KAYDGWe@tzSZFIE7eIzQ05@2WH2Oa0p88E654mAKq2G1sMM1e_03a701_X_4g8f0@V@luVW p3R451XF8WvWuZQS1qM8i1ZGWS0xfyF8mSF1F06OVpf7QLALW2V2_A38m1nJHO090oQBCCW2 0ayGqSK1s7CD0__eP3qu0QxZcDGRZ2tAmGxF0Z0n8vXc6Cw1uLr_3m80M11HlFqs0DRXsE0p 1mjFQ38U26m_WjFqs0D0i2uYE8xLm0x0iTG3mo3G4054E02WiN8p6u0xXs_038xXwS2tlG1u m8yX60mxzz7WHWO4WaN1XTaz0H2W9V02u1uBW_3OaDb5Z01MmXm2WNn7Cv2sJv6GWws7DRqu E0R7q0mA30wTGZ_hG0ex0SxZsJWNV1eHXx3j1Y7A4WBqU2UW4m3WNHzDWH38_0608654x3D0 0BF02G3Z40y3Y@1C20hCGG54OWz0J2W@KM24eEzHBB15oNXW028077qRcC5GJOLmhuDczMRV Zj@Qc5Vc1J66LUZ7cWeTD6GsNT02s3iTjsc823Z60yexl1CQNWjxQs0HCOq0mdO419PPWz1R tK0Emr_F0Z60U@FmE2Rtri5YOme1Wdp_FGJ07OlmsD5W3Gi@3q4G1sDiTjss8M201sr@1Oq_ XPtrsYV30l7408opo0v3GWfmN4WeZOsTjjvtUYPtrsaVxAcTNR3A2mA60wd0lA3OVn40uF1F G6OVYjxQn1G0860WQ0AG83iZn40yQ08mEZjFq0OIxaM0cSlq8maxAj1cq_fHW9tHD5CvUKpW 9jhQ7OozL32JkZrIOIuX6G9EK0_a0Oo7W0s5j70l8vtu020wWUZhn0rQ8iHEO12WU7eDRz4z FI0zGWNv010GWHXFpW07mt7QpYFcX1ZO58GS2BF02OWs5M0mhFGx25O1Y6GyOCWjmR0m@m00 ObA0z_ev9w5bSQKO545O0CCIGs7c80MU04W_GB0uPu_3K@m2k0yz36eWY88mcogFq45VC3p_ b0KW0M9OP@4yjGWHPU44QW11SPGi5E83ZsFHW2yaw3P0DCIGoJVrR5O2Ys0Y8OKI26WR90Ew Y249_3Kam19SXGG2Umr@K0qf0UG2Am3mt7QFHFNbJZi3MGUn0Ss170Yz78xWIKnARdTm8Q9T uzqZmIXNnlwW5uXH057J3EI@ZbE01KyY3wHV0PKY6bkY3cHV1PqY6rs52f0OWKqd06rWHLVX GA06u3z5WHBOahJ701qSw90G01IiPfJmgQET3KKpf3XHWfJX3Gk40J_04W3mhk@7mesGKGle 3l71isG5eWEe10LA0Q09VicG7qefG40wA0t_e14vZLY65OGP11SZ27eDz78B4F8WUWLb03H9 GYPp@ue4YGgv3OK2Hupy5CAX8KP_44bG4MCV1YIO4S86mH9K0h_VWe4QH3ZeJK2Be1Hq8AX5 qOK07bm1oE@1YIebmhC0UW1KJ2903Z0YyA46aad8o0iyH5G01_VWe2E8_g4YAe3dDYEH5iWp 4HZe2MGjX1SK17emy78g0NGxXmcE02L1GWzxJ36jBQcWeDW70he1etNVQOazHR24j1UQO53w 0O1Aio053S0A0V@M0EG6ujVU098JX60qF1l06OFWH0usll1IdY0r5zvfpeG_o84UW20OWz88 Jo3rP0cy1CWz2R5WlNQs2DyXM66v@xTr@3O40MP3HlNQq4jTXc6WPlqq6QxY6j0BFA2azmO6 X9F03O6yZ8_Z2wdZWI0Cm8u71GU2_02803Wl7578U1CmU4Slqi1Qx9izI30h0TU174XW3n4H G2250G60N_82Kb07aH21T2GWzHSW6380WxZe5MvTPVGyncfGIA6K7G12a9vBCm0x2660VNqi 5QuLOG1Qw@1O40h0XetNY0PFCaHOo3W0a1@90pEWX1mtNY34l06OV1kBQs0jT1ske1WL6FdW 2262Xy2P8Y53iFQJ3VU19SE4i1QRHHD5Y2T3K80Bqn0166VW1I1Wd5W1T0OG45883qs7QJZF S1PVeDD_0664OK46H3ZS0yykV806qr231DeG75AK6h160wzWsOhW0eV9hb2Cc0QKHH24I_0o e910X@0LKaWT1RaE2I8Q02Cyw2GWzHpmupR805qH02qWezXsmut1W1u560iopS7tY4D9GGID EaKW6WR520D6WdK01WJ0DIAm01iFQz7010WFoW6Aeg042JYYs1S8a15CD_436CCoJmhW0S0U 4t@0PCLWz1RFeDD_G6YzXccoM4W1sKsXjk03q0012GWzWsmu3PGq3QxZ6XndOmSGyPBWXPnt 9mi7Os3j7jYHGt0018WxzQfa0mVFWs7yzWcahG9et3Qmk20W7Q0EFuf6K0Os0FbioOYUVqo0 WW828m6u5YLsAwG0Gm02iFq66V43o_vAKWHZVWG0A0oWiVH15q1C1s0FTiY6H72022GWzXs0 n3t1WWHPOa@lN5_hFQU2_7DWeup9Om7Q@VFvzV061mAu8wdAJe0z2__Gx9u9f0Z2Vd09G03W XH@xUVqd06jV7054v11Wye1IMO1a2E_Gx@xjr@x74015LKGA364I01jGGW11V@eBk9315mGq xdXG29DGWI2m1mBF@TLIW40V@Q0Ae504SE@3aOv161wz3Ye0xacc4g3efJQx75G1TLWGl06a f11j4mW4s6eM2ce4120h0Z2Vd0fw02mg@3qVm2A1yzRl0ZWCg8332ypzCqJY1nKSG5344Y15 PYX1bN10m7BWH0G08uU7e5yAC1wTWMmhO0kt1Q0i2EWkAXl3QAU5W0zEe1vLc3qE5kTGpPh0 0yO7mTWcphW0kt1QCl20WdN0AKus1Dej20mBX0t1QIl20WN41cJuH7GWW5GZOoIW3mZ9_7m8 WOKkGJ3Z00yah@1CgZ65mIux3j1YdW3W1ZU2Uk4W3W@Z_ZN01T4z_Gx9uLi0Q49m1Eo_X00m oB00S0ynnVd04u8x7I00Bl02G3610yqj@1O40h08uvFep2i7O18yZidR00Cv300vasJWl01u 0yl5WM1M0wZOFT04302CG070@Oy7301P3O0a5GZi1GWyR2Ns06O7_78R028@cnbD028i@1o6 e063uJP3KWb1@8s380f2W024m1md3@f2e0b5GZK1Imjm1Sg0582_78LW2SRS0dAm1qg@1I5e 0S2uJf2KWG1@8sN80f2mW7uVWUDA8L02mi0QaAG2S7EWJ5e0dl@0f2K0tZ3uK1E0CzF0Z0O5 o5zJb2K0y0@8sh80b2m0ptVWI1IWp2eHp29G100kKW2ux_3qiG1K80WB5u07q@0C2WLaKqFL AG1U2yZO@Z0KA03wT@1A581GBW6b2a0J00uI1AGbxFGf05ma00kKW3uD@3m80M18H@Kf05m4 mt7QF1Ff5GZU3IWVm1ST050lz7etW2uNS0N7m12c@12jx5E2B0U5VmmayysnJ1sNid0V03uG yhf4i2m4Cx1iyGJwfu4et3DflY1uEFq0GAF0wzGpvh83ev9SvXMyI10u58Wx1DwN10mp80p3 Djd2IW6cmhheWKKQ0exF0Z0O5r4z_f0KWZadtwDBe602Cv_x7Tn1EIUUBNi0E0@wqNVqy4yd R0Hn7JmWFqEIUZ47maFW0y@zdK3I3G8yzXsJmBT165_C1IS84m7_7WH0i2fY_9m3G0o5iyJJ e0jBmez0KWZa@vS1Am@tNGY0DmSmtlPZ6Wd_3mez4pUg1WL_0QufsHidk0Q3WWICC8bN20mA J8QzHBL44g0W0nFWeD5KW@lds02AW4H@K0158Nmt7QF1Fw5OqU2E8tG2Y7G1g2__n3KWT5RN gDGyQOWT96kg9VrU2yB807Wtqe1A0GmR8070Uun@kKRWunm0xIis0lXT383C31yTLp6uT8yZ 1cS08G03iBnk4Vn038MP7eZ0W0hi21Y_9u1o072@OWX7WV9yZ16biY6YUNrA3W0s0pkb1SG8 06u6OsjGW4O3CN2@R097P2m0yHI@1CAG02S9_o0c3Y7E14Wr7GWA18W0uZ2Uk4Vo0p0YFW1g 8WWC08m4hShil4@e0Kef02Y2WWiKHm0mx3_PIU833maF00C0ykslP260UPm@1n3Y1mWH30lH vVtI3EeP020mACabv1z4W00K1GH3az8TEXJcg0G8W6Wx9upGW0r0Z_PCS0cWvfWNM0E7qRKG LOJ4t3O09lMcGFeffGm0QWg0u03mzUG3WLm0q73SWatCJe7qqK8x0DGale9g0W000@Z0SNmJ 4Z0j8Xc0SVqQkaWi8808100ujW@I7OWiWlFq68UGD06Cw8vjMO0t6H1vVGWVpV061mAS0QW2 CeXu2Cma0_4u3G0w26b53KWPaGpY1UGvxFGn0B8Gmt7QJYFeWvbE1_GRWlFqc4VH138j_KGk 680sm0EbW28Z0E0_SpFuJ2g6m000lRsV0ZCGy@JczHZ64z4u1O02YFKWPVqAy01GD04CA3ZY 3m0Tc@_Gx9u5W032VQ1fi02Ka4QMMm2K8000FZxNM03G1yzJH81676m14K044m1mNJ_D1GWk ZU@42I0BxF0Z6D_8V88X05qyvFbNo2z6G014GtSfU8EE3IHc09y@UGRIyHBC1O51YE402CP@ 7a5t2H1GGzGAOWuvm0x1MY28O3y6exo24Nq0L2m20P00i2QHN2W2sIM0i2ORN4030Q00iIAG RFq6Gy48G304Kb02YH000l2yN201GHWzY1u1_llUbLaG506GGyfj2W3C1Su1j@lNb@t2mt3j Ub88R06Wm00O59WsUej1y68U1CmsaLFqC1Sx1jDmp4hiWi1o_C8G082e1u60SxXsJbOJGd05 mj@D0u0PVG0CqY02fNN0w15800FC_lNZITZWOM98392CXHx3GzHpkeD1mq7DxZua0yWuhY5X GDC0UXfFms5CBOqU4SNqe1Yx9jDHac2b2ftBjkq8W6ejBqs0nimCG3mVY_tBjI0CW64jdqq0 CxbccGSNqi1Y3NyL1qBj91u_e5402s7DD0ckebzl1vrOWf0VtW1I09HlNm0JuU_tBOW6eNQF L5H1j2WHoT405mthIW3g5WWA1GWqyldqq0jI08eI03g70Xg2CWkeDHg0544W1f2GGr08aAW1 vuvGSy40Vmq5Ox1c5CQVrb2uo7D5WMkeP1qs0UJ0d9mRVtfBQc0j14V038NqM0OwZM6068Vq M0OwXc9GS0n@@CsKsyWs20IVqci3W3aFQB2Gz@p_zf9X68w4C8WEXz2mp7DBY80MP0eJ3W00 iIpYEFqi0Y0aCc14Gdmy1uv6EG1s@EzI5eXw1QeKW4CW0w8C30lG038UqF1_04WEXjZqmme_ qD8aS5W3Ov0j8n78mOWLG8wSAO0130WLE1QxWc6K48xp_Y1CaTEGJ9qI1WX8C8W0mJezF0Sw WsKGB7qeWYOme8CY0mldzV2U6CWEGJGy12CFLgG1bpI0028lQ5E8xS5Y7aW82K0GH3K41B4Z 110O5Rg8O2OaTEGJ15J1WXO7CWEeD11t1DQX6Gr0iW98A7ej4OK0yTWcMe97qMWYJG4TGRgo 2BGEej01V2U1CWEH5aHqX80oQJCca2aNOw8idWN03ilxq3DJXukf5MW1WMNeziAu0QR0_Ef1 WLEeAb2e7QJL9H1s7iQ0_UfHFqc2OxacDbLFeDXWz0OGu04e2mV2yFFGL044x11qx@1O476L 101Yv@1O41gt7j1nhOWz1J2Wh7QcGH0iIvH78W2r0KWxU2_k1GW03iFms7jc7G8MP2IBm3kh IBW_8mBXaWq2WWHWldqm9DOUq0CIFqCXW0buP2H6GG01AK61440wzQ3e0F1lxj6aW7_VWM3E Wn_FGh1P8xeVgrWKIZ0X029msff9Pt3DRiumvFKGO3Ca4W2sIH0QFk01CmE0h3mBbX0W0Z0M 1XeJLX038mWm74GAdq0F0EGX6i0160Ws0Ie4Y2IfCXKkL0irQOU55O1ZstSF1V8H407q62Yx 1MfM4KMA1sO2zWcc2f2ep2uxWc1Yd22W3Q66jCO4EePuqsaiGO4DCwVtxI@o1jbe80h0ae1Y yRC1TGRA0Y3Q_@_G3Pi141_JWNW1W3Q0MkG1LCWWSGRHW1azmSEXx0W08g3QcImTI6u004F2 887q4GyIeWzthd32wEd0@VVdzCIGh15eOen1Q@Vlk_V061mAO8wd0F03qV120O0SWsG0cTb1 DZXGG064nW1Pxn0Ox5u04E8@J2oFW0uXsGGSNmaBQ0852Wcke9hwtyFL0zN0VFqQ9W0uXsmG B3ZW7Q3NVG2Yb@ygFe0c4zJeVpvwY01ay@0r7aWz1J9Wpayu66W9V00e1uta_F1F160l64UG UejO32BGFqcYWxXMu078jDbLUe5WuHW0uX60YNY2gGG16o@0CAWLyRqu1j@lds_FG3298Fq2 i1X3YdmW228e116W7Q3rW0128VmwemW64C0arE8O1uL4OKU0J7mQ2W04YF892KWn4SFeDEOs 1jn561nZ21o3QxWMz18W6_V2y0CWH0yfc080W74Ve440oU1C6_40azsKlQ1q7HDw1uWGBOm2 6j70t3D34@06G3yi7YRJs98AWU20wS2JU06Wsmj7q68U2CW6mRF4B5tWW0SWcmjNMC5G3y0g 4W3e5Sx1DDmh304e1S0L1m1s4FDOqU8c8W1qK8G8DGs73W1s2l14V03KAW2q2EWg18X858e3 04IDoWe0KeM05iDUQmezGCtS2efGqGRWiFS0423m1Q27Gr0aGF654GGGPwxGCA4O0Zo5Ox7O DI4ONqsLOxZOUl6Kh31sFCD0_kfP3yUYw3C2DbTNfDGyTYIW98QV2gVYsNn9Gq_16101qKe1 8z_96Ox1IRWu9m0xACTJp_ff9X0Vw80C04HlRZ07K7W6sFHCQvPXOhG8w14e7YF1U008LF2K w@3m8CCI0mVR4054X53PiI07Mwfe0AmJmJ11_@UF_@0CQ@0jVY0aMC1I43Z40ySw@1Cgsc2O @@pbR42rhQ0Ra00W0Oj92GW1CQVnrnIs4ldQFe0QiqsmR2YifiZAUA6mk1glysDn_28GGoZY H4MU0Cm0YNZ1eXHxBHCCI46z4uHG0@VVLf3K07IQV9gRYzdIGwl4aGW3qw@1OqEWbGW11@wG 214G990080MR1n4m00_tzs_Vp14ala1DVH0VcHuCYFW6mf1m1o_G0Cm6ub1Z2IUeFXmH5lGE 0AK012X0OG154K3G2MfxiJ5m1c0EGz0aG7zZKYN1c2EWo6O41iIqo68xnpC2dD01e7Gne1Wz 6Aq1HbI0y2R16jdW11WWDGSW6dF8403e1W0L102Gy8xz@GQI83oEJW58b60sOW3e1SWgHO1B OqJz5aWWNVW_2AW6614xXTkI1A0Hw2cSHR9_1mAO0QTX6b8cGW2PDG02zV06nfGa5QWAEe43 dzJLrKG71E87m1gZWLeFOvtHG148QzXckWH4mp7QBvd3MH1HhBQzVJWzHJJ_bBQMqFD9K0P7 401n4O2VpUtgZ8eln2a7OR5fJ1q5jfO7Gs3dP4E9W2aBQBOEWil303i5Uw2jfch304i9Uv2j 5dh304iDUw2jfd3GohWno5DB9ekGRA5bBQBM7L1q5j9ATg0vYsoix9u31W0JQtJWVW1aBQBm kdW703eBqciEF1F411GWw0o_a5OWqzF0Zq5DJ2uUKCNqiCWx9jDGCbC2iBQ38U14mUfDWu5O 0RWu40SNqozyXeOMeR16e2u0LVG2qmeWQnu0pWl40PV4DfGE8QWiFD3DC1u0rcH9QEx32fvX 82a0AW3K41M060MH3H3K31JGV479XWLySs7aF_2PfGG21641e2GO0zX86692Z_tzbnVC08G3 q0g6c4CXS0r2G4s2lfQ1O2RYtaj0CXjnRQoTGy1iWGa76O0ZstS0PV218ONm8bI0PVIH6G3m 0g204W6GsZpv4E5W2i@U3O5BYEW32C0yFOW1MHGmRB2r5jAi8GGm7B21o_U@G022e1uy@U9_ V0Wl@Sj@U2O5WWt712KA594b02X0O0jX3eQ0I00hGZe1o_ABG8A07orXWQ0G8N732m0Xe0S8 N72g10XSTCeD34Y2mXW68eW93AWe006azKR0Xx08Xa38m1hC0er5DJvN1M9YeRyWWm3DeA32 w0W0ujIGW@62pom0JPN0WF6UZ9n010FBf8S00WlH0kBQqqF0e25@s8A1oMM14@@pK8W108b0 0F64ANqMcV8iY5WMNeDbV4Ob10TkeP9@2mAO4DTHRQ_LmAe8wdAwe0BP7GrASWtW@lQ5A0t_ hZbqm8F1F56GGy52C10UbrjC02GmA90xSHpo_f1ZU2U3Cm0qNWvjjixr0M1WH0z0MUeP1ZqD lW2iiV3KPm1cskW8FzJalG1OSWuJSXWG0GWs4cRp388_@dn1h40v3UG18gKmV4u1iHhH900G _@000I0800mlW200CrL041G3cO9DOqJm7A9121600@Dz63X28G0D0d@thF@30yjbRZ4COo11 AFY7ic@10_ln5m6v5900aeT88c04i5Y34LG3q2GAjq6ufeLs0q19V906qH32X0W0D0Cea3Ge 6W7eDW10Uhs5XBjPUG4G41Nosuf1Y0o_MkGWc25WvFQGyjqcr2T0zMQRuD1HDtGGH06G30hp IRcd1W@dor8Gqojajp3W62Anc9EGD0DGp030yJihWadaYYAW68o4vfVc_Z9eW02OGqTP9DGK NBj14rK804z90F8vZC21UCW6GC8vJ3mWU08W2H7KE090a1q0YFjKB04m1e3AaWC40yOJt@lt ExF0ZqmeSZ8Wc2jHY2aqNm3qEm00FjwQcbsYU6i20W7M02pIsIl0YGe4Reu0r0u0130UFgRG D9WGF0FGJ1rmIRq74MPZQ1ImMAEG54EGmWalMW3iu0nNBG36C0u9ckAqIn1cek3iasAw9xjt SQAa7oc0BfXH6Ofjfu0nBX1saiJB8707O6PZ4004J810Wm_X300Zj4DCIiW0A023i9PdMm26 MW019VhKAaU315CiGE0BWZ1s87W6eX015tG2n0m0E489Bj1Yb0GGr274Sm3qMm00lwv6aG29 7y0D7yVtlh_PEGXjMSWe4SmW19VK27a_n3qWm00lpv28xXbSw2cTHJOo3m0s5CM0UkerQ218 1wGiasAANqM4YQA4FYs3BffYo5jbXec21Ze3ANB6WOkeP14raGD4T02CG34tDuj2Qie0m3sW q5D1KlZoHNmSmIvYcC5oPPhmIc4@G0p0mxd14mA95TF3408x1gIg42loXS6G0pG0GQMBK7a3 z1WGu06eW01gedISTs1Lc02QSWuBJe152vI55OGNa488uvHW19V337Kem3qam2ZPPXWPK0A2 e10@RfQ080K388y116yjasy38xR801uja6CwkbizVJpExMANA2I901JVdSMIJ@Y2G1kja6Cg jbivVJoEsMAA06CvTeP9jyBA05GsIQmenMoM@D5x4Rfe0OmKtvbbqmle0KWMBf1ZoQ9Ryt4i 3hbY2W1JS7LMI3ZCzV3q4J1c_kfz70hGZeVoIQOa9@RWK0AmatDf@0O5G4jIMI3ZCrV3a2G1 cwkfy70hmWeBoIQOa9_RWK0Am4t5abqKnE7KWFBf1ZwP9Rhua4SdbA7WWe6G8M3l4oIR0n90 40mViVV2U08WkXVz0917e4rOfLe2iHq0LMMBG3SRYhuWi1Wn1hKZet5jQP8eE0Ne9Uv6FM1i 8RWgAebYoCnVsNcNr5D0eY3YE8vp4vWqCUW6520uHztSfGGkeb1mU2U3CWkv9T0THRYcnAGk ejewU2U4CWkGRwww831ljqsKKNqC9WjPfDLiOC2wWmXinKe228QCZWiaC8y94eBQJqas2o5j bQIR1wYsaDfjWSHRvAKBe5j2iqs_9NqMcSDjaDzJNeDfSMQfjuNkeP9vIoIRu7THR2oz4y20 W@TV7whebc4_W0Z1W7U30rA0QUVhAv1Y2EGLAi0R48ek2EWcS14x@PcI5Ge203i1U0O50WNd 02K8098WLQeOY5gO02q1EGL1a01Mveg0QmD24Kr07OJk8mAv4TE0C0712A7W4IDY0PABGz0i WS48eU0IW2694r7O0RAhca58xhOHXA0E0Y09F56JJ2XplcmeD9Rke5Bd2s1SWppfWG2m00he IDVDa3W2j8GG@89K@P1jJ81DCQco5AmJgFX9sMMZ6V1zLK0D5wVshqhQP9DOqJm3Y144_X03 LMI36boIXjGWXWN03ijif0GWIMI36z4y4O01XFAmGabqWHF1F26GGud2C_O9DOqJmpW144_g 03EMIZwu9m02YlLW1ewMI0B2e10hOfQ080O388y11600V8w58xRjm0wYc6rjdGx36OXbcCAc 441qFrtr3jdR0@llVu30yqmNWpIe0Ekqaf6aGe14aVW3LJT041o_64GeCO3wjaWAgO8GC2oq Y02iY1YMlbwq11IiIAW68x3j2XSM8mSBDPE05OW10mAR0jtMI3_bBQMGFD94GmRK2PpIQvdS HRfE0A0d4YcbqqFvYsYT0KWA9iCBfjVo5jbx0e0EIOOD2SGLz400u@CpR2wEh0Q2OkGBWunm 0vsfz1y@U0qlLBHZ@0Ank424W072OKMIh@AiJ1QAKVYkfbevV0rNN2qK8w4DIBHx@0gkk4ef Ghbaw2nUOGW084xX1v1WGi764702nUGGDQ40WLuHqxYMt14OH@6sw2CWjbTVrfVVo5j5rtJg Rw1sci3lUA06ONqqKVxtd98QRocBQMikBb@5m0WL6WsxtdXZ7W_@9GVvYcbxx9gFv0b1m0jx R@o0EmorfBqcilI18WsocBqMklM08ew422WG118W6WBNqiWVwsjO1zGGW54Kty6E8QD30WyD em02LKuF2u1s8br400eyc000b0A00mfJ100wYA00mne200KFL00Wwc200OJs65qEE400UsHu Jmdj21bHIGz08081q0SF1Vv06a213e0QWA48XmC88W2221mW0AK8_H2u@zaw@Wil8F6q@zPw @64FW0AyFW9cGn202_x1OXBbb23s5GWoIf1V2EGPfy2D14eiKEHSW3KMABWee1ABbCOJq0bb oNq5jf8OkeP95r5QJA8S07ecKkYABDPJALefNVAup2iaTXKPp1_Ofjgjf0TiqcLtKWDMQxwR Aeu62u@zioVWilF248a0Qq7H11vGGRYSe@xVa@34Uu9Ee@xBa@0PV7b8KGR1ix@xPbk07WI1 gSf9hYeWy8CmIGdRBW5KB21AAQTZ5f001FX648xhe0XW78eCT2u@zS5KG2rLG086GxwAg8AM 2AkG3zV@Dy@9uZ3YWGz9023eBqcok8YKez524n022@GWH6YlMK170a10mAl0DqMQIuR2Cj1I WoMQIuV2C5GGGaI44yD2H2IGacAaHW1o0HjQ301ZefikQf9Z3u0RAxcaTur3qrWGNG8m06e1 qwM4I1f8G0AY6ekEEHpz@Zbc4VY0pJT3K0UMQIuF2Cz5QGI58ONqqich4o6i0J3azT0WGMC4 8NqMC8028Zmo301ceqY4AOY0J98GjViGcC400ubbW1PV54EGn_1g9W5YJW0H0TG91qGGE8WY bq8Dj4GMu0r6m2f7GWDWEes0UelM4Gm0v2jbiBc23CjT34sm22ASRIZaWu0E8q0203q0LLI4 HvJG2B8KD11k8wSXsIAA8xLZ02BF04G28EfGCGQTXsKAM202c0mWA58Xs08W1WhBqcGnU0Ke E242JD1e1azDGWG61CW2erDSW201qv2j5Kq0nZI_3Dqy61U2UCYCe0a3EGv_@00WlV12azno nGoR4aV42O6SW2PP2a7uJDbUGD7A021q0SzVFSvlQX3azPJeW3W6e69QWgyhKG7D05e1AOW8 m0qF1_36eY15gjH130_JWtW1IrmWIH8mWy3K01F0F_DhiW9W0qF1_26eK05CXW2sKG3OAQzQ Be3FnV7j5qWAW_fY2Y8a02i3@05Im3WXVF0EGsNBW2k8wY2feXI5GmE1_Kf0F8cm1Eqa28qI QqnG2HDu0UMIZ00JGEBf1Zo5DBet4kpcbg0W0BftKkZcbg0W0BgtakBcbg0W0BhtqkxbbY2e 0xDXTOP9DY2W0xDbT1NHWSHRHxDfTEP9DY2W0xDjT1NP036OAo9oIz0K04dKGWia6z0GGkUD aad6gOfDA1e1U8GkGR14ptpX67Hm40gR99902eDmIPOa2MIZoNFm8m89y7161Yl8Wv1mJl31 Rja6DRT0HW1hcjIm8mKL6050e1cWSJjKVA44l021_RWjbTImrqIn0mWjbTQmXqIomeZw681d 0Zam@4O48_c06XMA503C9X0P9ECY@tNZy7m8lf_0PPH02tPfS08GH3C1uoPfc0CmKmPZbom8 ria6T0KWfZRQvjOS0oURwC@XG0CW60kI315q302z4WW9YhaO0QmsoEbu2PfW1EGWUiK314WH y7eXW3CMW15x92XS_0j7CeE9H8Br7QEYWUnOG3W3K_EDq3W3LRZG4564Tj2s7ndIWfW808ek 02Id1XSk9eaQ42yN1v0sEG3WLqHtx0DDbDj44g6WWIJGmUeD9XS0wG0K8s450XHv1DDCo2mB 7yF8_cfD86V20azcMzq261SW21u0RWtJKVm1yaw3IWXNd0204x5QcM08m44XHW248WdW712i 0ux3@k0K8s9421mWkR8e604SmAKBxUDArQ2ICm00PFgf1yG806a6W2P4OWT07eC2OW0FfE17 GOhFm0fEGG718aOE1q0nzWsM8scW10Ob90DGs7C02qmezWscwL161kRb3qzUebN03_0VWoBe 4ycz1fSd00hbGm2mhm7iS16GsNL03C2SWgAu3QGaU1FJ041O5Z0jUGRA41mAV0wzHZ68cN7h 58ZetlkZ221W0BXec4AYef7Q28U26WkeX1ZYm8F1l14G1uTv@05RG2o3j59twW7OW9YDRWoA e1c0EGP5C2zGR282mA68wyWsI8cgW1P3GYep6eE0I02h04u54G0PVgv3i0Wi@qE0Q8c06W4u 05Jm8vEmWyGRnS78W00PVo06qN71meRWwa0Xc488@X2wAWWY0C8T05e1U0bHm156mGk1Suri 1gC04W7GsN4W4f5eHy448VqU2y4805WdM_h7QrE01Lz7eQ7Qm1n3Hu494cX11hWWKMv0O3az 5Zm0r17eklSefC4euUWPFqcLz0_d2WUFeDRz0uF00@g0QQm3gBc4Oo0Q4KT302_YpaP1eCW6 GCibY1m0v2OGP1p0Z2I_E0GW5301Zom8@V@SyF8vJ1m0FHF0aJJ1hkkXm0Yez03yY@153m2b fI0OYHOo3G0z0O0GyFeU0IW13WHF0F82@3gOW54aye04Xb700aHj07G0@3Yye8IvJ4qXG2MS Q2J102Rlu4AC8vJ10X84Gma36KA0FOB4dE502wDu01BcczEj0L4G30c2ufAeXDYEeI5Q03Bj 14rK8G4TGXAyXbx@WqHI8e72YWmWSnT0JoxV3v9uYe3ANy68wIR0HD523H7KD27W9vnNC0Bl 02ufW4AWSzpam3I_eoT08Z8SQ15G0r7m0PARsvAK3W3sKsC945HdDW3GSfDQ3u07ka6Gimbg 2GXSp90yJ8SGc7GqP4kgc2udI@LPK1e0yWI8eXY0KWTA5Kn0Ba501LXuWN07eOO69KW4WuUe rX01E8Qmia68QFq68ww3ID158dDGfcqWH1CeM5EmJm@Vf278V_3giW5Qc1XQ080xy7Ka5ReL _3A1ZDu9@1LBX2408x3DmW6eS0A2eICKFW312gGgAuX0VK5G3UYU0hwOXE08Ws16K708ayF1 v0e0uDG0QINGT0a024GxE0Ke4Z2iWI0rfN4zOO0T07047004H20Ycg0ak000H_8008UH200f Y12Gm01btn38X@W2JO3LmVG55iG57AK251SO0DJQRXqUM8Qf28ay0O0Ybl_F2i7O2b1m1q3D XQta0WTGyDBXGM0SG0u@DBWK84yWa5mAWG0Do2e152B0nGHWu4I_m0Gm_W94v1G04BF048@y iFQ1Gz16m4WTWufuWSeK00l_lx1zVF1lW0u@xvz@@xU2@Fuf2o4e2xZs0W7X10mAq3QXa723 GCv1O0wdd6b4aWdWNuG2AeN04o7nW418mJm380_@UL@@_o33Zy@zHx@3YF6950mhF1UJ100m JWyV2Ua200W7Wyz4y8300W7@u@4u15000F_m@9uv2000UwntJm780U2U0600v0K0i1u9m3G0 00UxX@JmxL000yaZF0Wd2u@4yW2000ltux9u700F1F1200mB3_XLXWdWtL000yW6@U31eWS2 8eDJ2iVSO0yzphU324G000_DmFvB2iRS70ydW70000u@7Vxct0YFW1iRSxAlnM1zPlV705O@ usNU4iYnp_WWdUm06f0ZsFEJOqkYx9u1m0xQkdW703ilvsDl0O9mknfhycmeQi8m44jhusDl OO9mkpjhy60UmFmJKVa9i@SxQFCC20m38ytVF32F46ORPx0W0vX@_z1KWzZJVvz6yUQ01f_0 3K3W1O3@3w_vWy189S0DW4_x7Em222@z37u2qW@1X3aGeO601mt3QQWN7748W1s3OGO40W71 ul7QDkI0vZ_WemI8124eVUJqVm1qm8W8Fi3a2c2A8000VNudf03f1WGO46OR@F87W8oE0XY0 CWv@lR405Gy@FeAW30Pj32M0U576D0ZsFEBOqkYR2ZiNSZmeTYBC03uy@x61G1K_@zY0e06@ @EH0K0X@V7_XXH_@UVz@1ntg11WiN0JiO103m@kVE@B4m0lv@1vFy0y0R16jFSjBO060VlQ4 Qm@tlj@tVlw8AmSwldznJJ2v_qPDfGM1Ou9uD10@VFy_V@o1A0T@lR4050k@tB2W2ms@x41G 1Gx@d0@B0u@x9BjW5O8i0uLy0pRm@d1slEuXcAII1uzC_3m80M10Hl0mV2U3Cm_cRFqKYIOm e8CI2mxl_7m8x1c00@9uHm0xRkzG38AXHC050s@7WHOO45WdNuFWHsMsT46GoRrf4Eng2i@U Ome8Co@tFC@rlFxacGqVWvBYW0@VVQ_78vJ2mWOSI8D0407GoN3026R54aDGot1W1bmG0DWx VtZZ@E8UCwGe0000002000eF0cOG1XfHW9CQVnfFQ2oU4BZe0QAq1WMVq4azir1m100Q0uR2 m3myrl8W5uIqw3jdW7W3D1mq7DF1FX6QAmY0W0ACm4248vHyK27fY12J8v1W0EJU24el42ui y4OWDMpGm3e1cOCF1l2000uT9_254G461U0Dm4Z96mr7Q09Vv948W1c0OwZM6060aHcgPW2i m0J8GWa7oJ9Sp0QWU0dhP02i0000UomlPW922e0xZc6XwMW9YJFfjBQaT@vD@U2QF57eVb2S 0qxHndKt4Ji9P78U1CmU4S0m31m0x9u_GJBqIKb02ZFdYPVqe1Qx5301b6UG806ORPd0SxZM J040W14k9W3iVUJOkzHBSW38t_er302WG6zJ1m0XfFQPAMGn150W1cA4W3CPO7qsm1PvWGAX 4m9v1G4EBF02uMvR0CUIzf0n_8Q0u@W0F1l06O0wBmyqmedeEW3O1Y66_06IIXDWs3XDy13e 7OwtzG7r3GWT2Z2WlFQs2jfXFboOlmsJQ30l0600hKFqs7jCWcEfPNqc0HRWd5WR7fDGy2OW T4cEfPFqqaGcFTZY64E021tGGAY4GFq2gRW5w0WWk1WmkWH1mt3jk1C8173w6m0xXM6GJNqi 3QJqDG15QIW06ONWfBQb0O00MXSHVGyPueG0W84S08s3D0iI5GJVqs5QJ36zHRFeDHOjBWGl 3AWGOs7QRaeDa53610y80@3YP1X46EHGu32OE8_y5O8313oBf0oj7QL7G0CbP@Q4_mUejXq0 O554z_G3WL80qF1_06m_oTfyN0cy998Oe5YTOXW18mUXfVh0BW2erlLW5q0q0mt50Fy22e1H x3jDGp6ujDPd0Exbs0DNGWms7jO280Wo0WL60QwbsUGJJXa_qx9DCCgr150Oj86PG1n542qs GFRBx0W@X1i@SxRF6MnTO70Hb2VZ0@rM300yxQ00W4MB203ywQ041G1n0WG20G4401T9WWT2 R7f1mAK1wd0F43Otms3QQaczGRBfDyw4OWz5s_fvXL20sxdcT3xf24AW4Wl7qo0DxXcsGRFq iLQJq7H1L0GW1YF02i7QqAizAFu0wbskIJJXW_qE4608GJhqwOW0QAa7YMFqAxm0xXcMDUS0 2XP2Wl7QsCD0io3G7101mye50_Uer302G4czo081C2p1Y7a32h4Y0M49h22CPOx3DCGhjX2e tsosh01_P0zbN66P2Z2gGe2iji3KBo11MG00XP@0BEm@tJA@F8_0BO8I73ISm3xZ70MnWehB G1G8J1f6SGl0402PEetY4WcHW0_32GZ65fQ1uL1PFY0GOv100@xUrzlv52y@zag@UDIle79W AqeiA88B07m602d5G1es@d0@20u@xTCBW62I01w1c6CQ1ZilSJmezXB612my02tKG1i0QzXM GsZq14k3W2y0qCHUI12mo700U2Uo40JadIX0iy1G0ca7n31Cv3O090FCwNVqo3G1i4j_GB8v JroWYPKW0ZCL0B5WX1cGW29VhCI0WvcmOF1F6000mFB_joGHG04O5mrlMW3ohX1YCoKr2KW6 6OYQ1g0WZDXnU2UD000WtGy3hf2ZDnOsNF0iY4GRVz2mAF0Ts1A0g0OAxW4m@G0dTG1qb@zX cMePVzc2OxZcjGJBejlU19uWf2Wfq0I0GJ1SQ050K_tFxX3C1Ox3jCGBQY2Ws8m3ev61y0F0 zGR8gBm0M0izpiX0uDPO51W0DG38o@@0UsU0Cd0gRW162z0ENI06q1F1z3GGO46q4a10OWfZ Mv0J8c_XhOG407qU32cGGzZ1m02UGyXhuIwDP4fr1XNGGa84OBq2eFX6CN0CHUuag213muK0 NXG1sW@zo0f0RWcsIRVyghb0B7s1PRrGe0QOm0OYy8BLe0EO_ztBKW52DcWi488L06YOo0BO aU0Rl0BRWWM1WWb1m4v9NgM1S0oxlVO3BG3qsJYJ1Mu2AO0mtFm12asUXbwY188c0oxfW2Y9 ev62I1W00430M9Ve320XC0C8D022VXWqXIGjC2RI96O7mcWHx3OlA5OmdW703iBnU2U0Cm_4 RVq2BG2E70JadVf2Bm1mjl_GSd7D1HxJizLBlM2YAW0x9M00VVridOxNPm25dSGi44GWdj70 oD0r5G0xfsJKVWGyaz0OEWbt@340r7OWM68m0WjVr4JKV04m860iIzGdLG1vmKWT4JV8kVQq K88qz_e93qsNQQOKcH6OfmsF5c2iVOxIj1YN03iBnA3Swds_KJJX4cqxNtq1cAizJ2u1J1__ D3a0FYU@w1EWUBkF4rK8ECjEUS7refG6exTKZ66j3qqW8xbssaT2uiZQ3ac414Rl5Jef03kh Q1oLGb25OQy1HC0i2KYUNgDmAA1RzhAu4G0k_L5K06aU@g2oWUBkFrqK8dEz1Y7c32e1ZQL0 1GoFZ8OIUK86mrgqW1rVVv1oAU8Rc2W01qhPSD1e0Q63u08CW_xZML44aa31X2eWRYWfg0I0 JZ1SL05OBzrl7a4iBQJdoq1namGx8OO@ycg2Y5g081XjFQLEXW2m@W0VL8p9SYJO6L51JadG nYJm1dd@_n9yWLZZfc0I8E14GT_x7dm4oA2cg28Xu4GmlvhVdAN4f01cGizZK87QWs_GR3rw nIXA088N84mr@7aMO2XoX0z0RdwPAej07y4z2BEca7eY1SR1DWiyrF7c4idQJHCzHpEeDbms HDRAh_GRY1BCu03gFQPTHWzGRpM088sW4iZQxr3H8qBjdek0YqNZ2XX0X70V@u0AWsejFqsI nWDE0QRfOR64qD01cImzZv8XAk8WMAkFqsGHQAqucUVq2c02@VVrDxbGwW4a_b1TOL0rs5i8 hC01q0WLw2QG1_UPXKWz1RFejTQ0O520zUePxqm7QOUaJ0VFejbQLaJWzGJBBk7QsOHD9K7I 7Gb1sQHDGq_eLsL1GRh5BAm0wXsK6SFqg20184zUGZBrwgw0B2XHom8GTqUe5O02g8wzWcMA QFqsWYQAa7aUlohK8_W3g0WWM1IWWxXMj980LetB6D54pUer7J1e1WLIAW0RZ60MH3ep4Gau 1GG2JlNO34G0j441WlN8D5KB11XcP08x5jWeQ0p08SGK5Gh@V2yC0W@l7VxthHPIX1I1Gui0 A0H@@4uR00@VluP1qGSF6Kh44sCjX0F13Oom4Agm90o0JOidWN2000ux1@e2f88030m0x1CI 0NUe14xXTc4aHWMKb7q0oUuEZmX0q0WdHuG0Q0op8S807O8y39St2Yia0xXs1Mvwk3o5Y0aq 1aqI8O1uLw2c6rNIWvMm8xEt4CQ@uGay080Yb701Wlz8I_wQDeEJ3yaw3PY98o6eD4u1H004 V0X0KW58I3WHayX1uXHW7am0QmkxvWLy0ws0G0@xHKR0J03qqrUC9FS73Oo7m0c2VH03GgR0 188TWKe1Qx2DXKt020GP0hO@yUYw3EJR0GqNY1WaNuozzW_I8eB13CXHx1GYalA1G0X00aGW 3D14Hbo4O3q60y1CWjb50hy1qf282050WK1MG_x1Kd4DaC074O00A6W4q3eS530HG5CKC078 O00i2DGN601bNmGX0C801qgG02oBs0xzaw4IY9Gq0nZ61s5QJ0MC0I071sB603A7u0vXuJX3 S0U683WD3uL3mGj04qX03L3O1K4Otg1g0B2iNr0N0c1o8vYHgUmXu9N0j92RS4GG@z0gjW3i 9N0ObqYs_x14xnLcww9mqS5WLO9QxltJKVe1eXHF5un1sBCY2Bu0QXsUIJ0rDm0xqTO1c7QY wYubG4GAU1Ge6uxd_01f6a0NYU@K3A8d02YDG1x76Hn6aWzJJ0gFm0sDiTZDmaaAUeK2agh0 474F9PV7Hc09KJT1XOuW16O@so8eap5Y38XkqAm_pjF470U3C00MP0e31m0@0__GS0unm00K 2G1X5J0R0VV8E0yWP00A1e02Cm_ch5mB1W00F00b0KGdm4W4mt7Y3GFWc3WI0A8IO2i1uxN2 0163WLA1W05Cm_cJ2mB1e0J1mAb0G036OVpb0ub0KWX0ObI08m13ilv00S0ux_s33Z2BGX8T GGWrE8O1urG5GmMejB0t5nKZ8mb@FGkq5W9vXlhb2C3_I0ctKt03e9Pt5nI7A0WwdNeD8Kv2 1zvIWzp38sZiCvGG0fmV4mWvHs5H0iorH7g31_@_An@1nNK31w5z0xvfW0eHGEWjluoFlA1G WEeD4y31ac8IGU49V23IqV110I00QYOXoUC8iL2orxWalo9bQ4A8W6@V@m1itGc0gavH4X1u HI6FaFW1AV@324QX4UHmJm@lPs7CwX6Ia@@9Oiy8O0D5oVOhNFb5q1W1yARzWsGsx@vCk3W2 e1sw1jWil304a0sFLN110J7qI101J06O0@9u5m0x3CTGhD04C1OM1SzGpHs@VY0Be8x@FHW8 I101J0cF92aGR08O2me1uwX6aa@@M2EeD05I101J0s8j1aGc18O2mo0uwXcdi@VpPiy6O0DR 3OXK0Gm4WXGR09a2W1EOW9Yx02r29iHwoGOW6uGy71CxZcz4x0nJn0m7jCOq@thg@7WHx7cz J30h0Ws0mtzBwb0RhFQs3DDGqUfHJXEGsF1l16uGuF2Ck4@H0pEWXLmt3QxB6H1VFgD2y_RW zD6GoNk01WOWd0@@oG3mstQZ0l@6Q4q3t062U0CtUZr302qRDj06God1W1o0Dzb6Jo3Yv0kA f32Ga0xAskK3WLqUq0b4G3GOEWJ2W1ZjxQrYHGy144I0183Szes_hHur7m034F07O7ZflQsP DD9K0IRVrsfog2iROF0yTHp6uf7rc0Exfs0XKH0ns5jobDmkfDG4048CTJBD02i_qwJjTMhU t28s_hLOW20SgzACudY79em0A8m072@HWn0WlFr0O5@HVMUzIypLW0xW66CwWu1q1zcTn1H8 ZGAk44zk1sDlz4cke5t51fcG0D52YuoBW33C51r7jM0G8RR2QQr04Coa2x1mB2W0HCmK51aG uT4K4028Pa9JC51ofVUs7DDgD5a80Em4ZfVC0641m144VS0Z_errN38JVq21e0ZjFQqCjd0V 03qiA1qCjzasJgRo160y1CG5Y442W1cQW1QuZ0WjFQX0GG608Ghqs7QRWcjbT2pTGyXDdGul BGVys3QQFMp9Aa3021TJWTGR2aTGy1emGcV6alh2s3G00lEzR0ZshwW24m0JGEzrp_efLV17 OInq7QxXcf3JF8kFQqGCzJGO11CWWP7KWBn74mC1Ts7jDbssePVwsFvW3CLOxZF0MX2GlV80 5qX01vxHGMZ682yt7QRbcDoRNqjFQf0WWJm7Ff10y8e@3QsxWKq5A86SYmcWW4SmU82WLA2Q 00@fuV0ZiROw3jdWd03CHJ2B8W1ci9138cU8QVqqe4Y6QIG1e0p4D9WWxs7jc4ImV0iIJ2Ku @xzp@xZMJ24O@wsF5W4Gv@uAD0WNSyVGsqB4w05aY@12Tu03Cm4XEKYTKRQYfBZz5KIo3Zu@ x@elW3IUG1@VVD_7lq00yIW@3YFvX3YbCX2Q900mVlz7mes28mkeDTch4aHm2n1G0xt@WS8Q 8WH2C9_u0cjbDB42ol8XK1UGpxFGg088CzHCz06I5W0Cl@_fSW0mE8_G_T8O02o10XA0GWmu 3eOE8_eDW8Y044mAv3wzGBb092Z4X218mkpjNh36GkzrpsoEguHO0Gl20aFf1RKt00RKOM40 0SgZ0a0G6110YGN4WW0wGsB2GG0Tuz5188WEy6Z044G7gSH022e35o8011qXIP4WW0wmkC2G G0TuU6188WESNZ044G7900c8R4WW0wmJD2GW0T9x6188WESaZ044GN_qH0IM8ikEC8082wLz WyS8WSxX6DJRFejfQ46V04ZUeb0Y1H0SWnGCyYFGmKX9emt3DQfsUGR3refGEGwzG3Mfj7qq EDxXMMKR1ZAGb038N0YF01i7QQHis2F3L22in0vblP92aW92JlaOA8F52iLuxr9m9CAyzWs6 wPWLIGqwXMgC6aIW2m9yzWs6y5241sRkzi70heWetBRW4W0uxrGG2i9@d2VY0pj7Q9uHW1n7 7WiHuj4G182VFejnQ2Ob2azUebS22C8yzYJu0J260j1KXw1VFefjQs3jiis26H3YsBo42ets oQ2u2em03CsUeHhrs3QRiMxr4GJX06yU3Of0AuQmtBFWF2EW46Z@J17yWL1VFejjQ0Ob40zU e5C01sQDDw5OXU3KmbWh7qU2U4Cm4aJFqIVmW80CmqWf8mt3ju2CmenBW1qK84CzUj5aGb06 OdvsBlW5ipUJqMm2q6jTid64PFqq6Oc1UW34WWLO9ZN2isUePxrqaG84Tp04mW1cWSxXMYk4 GBnwe902m60h83et3QSmMQ18OJPXeqt2Qca0xl7018iW91Z0Wl7QX4eGy18u5mtdURBBKNvW Y1AG13CHi17afC19JeH658KqW1QOwzg58XICGm0WhN507Otz0elu2oz1XuQGeqN4Iij6WSGy Py113W@akY80OxXMQE4ahd3m3CyWc1mx4_F86W7YzT2q3uGnzY070NFenaymSEWJDyWy8C06 ulN6l9uZLQNs29V_lHa8G19zgKOa84W81sFlz1s_evZL0Gs0uR40401ir7QC9FCc3uMqC08x Wc90xWowI8F05eWHxBk9CoknjVW0FO1i1gEm2OY8x3jSppJgFe1cW83KFYcA3m2haXuq88H0 6iNOx9jFM9H02Y0e0oB8WsDlT0sEe9WLC0qxW61M9CGl3Q0O5N0DTWR8v1e8j2CD_82cz1ZU fzKs16G_zHhSR2iFO354m1q7jXXFYWGlqOAp050p6ebSA15CJWT2JlQ0O08xac90xeS1mmyl fk14OVeDWw13uZB0Nlk0cm8mJGN0Lqc91jgfG2y8aw81bB01FmM@o6O0CRWcT1J@47QmkeD4 uHO0J0c_zJCHGz55NQ2v40X9mM@S22n8mZW1c0ia9Q8xWCK1s3rBH12GWypef03eV0cNOy18 CwNRG4_@Usu@1n75@1HzbGqY6Olmo0uwbcTHR24j1UqmezXcWgRW160y@B0ca7xO2Im_ez4r dOaQ08m_WjN6X5OlmqJQxX6D5ASJlFQbWGGE3Ca2Y1fNM0Oo3DwWs@klu@DWHO47I31WjWus 5D0io3Yc9xX2K07LF1W@l0mazOGAWbN02m4xnQg428m1m31zt5j8NDm3GpKL098m0OgAW4Gs K0N5G1sFVWOFwpaOA1nvJW95wXQ1MmW1mKO090lf0ECW2CU_0rOH1COad0V02G3m0g3W3i1Q 1O5yXku230m0R0jPZdVFzG_0B0o0OAJW4GvK0d9G1wD@X23u0RgsiY7kd23W1H60JX1a0ad2 um0AGfvFKO07GZr0Yy0DWXb70ZefGj1m093Wfs0I0@J1SR05Gnynl@524G0mxm@r7QxYMbc4 OWw5sK34FS6GVvf1SjEOWP0VFffFQUIz1wobWU0A063y4u1G8Q0sUn0y0E6u9qxhOq0Cyas_ ePWwFIOxbcdKVG2yaw4S0Xj_03u9r7c43lE16O14bXHn1G00cO24DGz6UgCgW81xbM0M1vkJ 801iCm6GR8u1WSx72G2reIG914u2mnhO024FT1Glq0YyiFb1sN0pl0Hj2m0Y6R0nJn0r2u0o xUVeDD_0ZdXI5e03ZFOO18v3R0108W6AR8vpPrWg6Km8qpdfc0ic0OWsX1K70BGBm6ADW90s 8J4305Wdl1o4W118mmm7eLY202RssRKVYXycw3Oe9BhQ06CC_Om4WaFF06Gb93b9B219S0C6 OIXDayf0eG224WX1cWO09Vw0DuazHBv14i1UVO5Do6_e90ut9@M0Sm3PpKT49Wx0OgEY40pO 0N7H1Q3VyXc0mZiyrFTG347_e10udN@xZc1Yt03WXHOo_G45moBW0U2y68W0WVN@3azOV6XR GeWm9CW6610urtVuZM0W@e_R0W00q@1916HC040uy7WH0iIZ5BW_3Z3Jsp4n0M_C280NZ1S6 15u4yn7Q10FMvV06jNOsBD023O109V4YW9x33010E6mX1KW7m7Ve50ymc@12382FHlY13iGO 06m0ult@xZMhC44f02q5D1gKe0uP2GTBK034PtosF03@2WH2O42ZFMi18vh1GXgr9e604GbD x2j1W763WXLO3R14QK90MW2n400CFc90eXFn4WW0wGlO2GG0TORC10039V85FOjHe7G3DXnI 1yQ0i8O93e1u3r3m50Oe9Cs2Wt3W46YUWCq4ZrV030P00wF81aO3Gr0i0W60WQ0I07s0KD0B 0m10e6W4WXD0L3W2e7Wvg1G1COpknBSGts5G0T0Z0W@4u1O0x0skn3SGns58Wy0B6W28WUWP 7qqWHvXc5CI8gFm0sMsj9B_e93Z40yJYV844mtzn7Q10l@t@WO8L8ZY2IfY010@UmV0ZgYm1 077JidHngeW160luyVFqi1Qx5ES1s7CW2Zu0JZFUi1WLC0qx3jXWlkO2Y1G1OP30n0SG2I44 3W2eo60Y1u04Cm_v8TGl24K0E1UIz9DpEWrt41M0wTWs0he1et1Q1i20Wk1WlFQX4HWz13XA 0A043iFm60yA08063iVk0BW4R08NW30o0x73m2um60Y1u00Dm_n0i0Ci1WO0E0W3iVC0B02R 08603GFWp5303Om60Y1u00Ct_n0i04i1Wm0GmOx3MC0A00R08C04Cs_Wb0a1PWWGEh40lmoH Ox2c9CQV1_4yPEJGad4Ws@7eZX78GSCnUI5hZ17iX@05Fo1q0jTasa25uZ20IU542Js7602e TCW33e03u@_ISXLy0sCrAG268EcQ281CF6mD1K0uxVFfjHU60U4C00hWYerNY09FrdIJ2zGs j1e02YZfs0I0tZ1SR05ew_t5Qp6l@@93GlBQ0O5BQ0e030zkGRsu1uVFa7G20I_AY9OXcsDW 1mVh_t5D0io2YUlqinRw9jdKFS73wTn0RWc40VNqg5W030DUIBNq40ywJ@zIBA0A2kc001l1 2Slqw1W159sJf5J0msBjK38eg42C1qx9DCUh9W7Cs6eP8u1KOwbMmE8eeno0OxbMK0M0uWqB AWGe1QxBHXKt01eNL0F4q32sBjXXFOiqh01OVAD9a0P7101sFmzgD82KCm6GJ@4XXHv8j0Wt XylNz1LOtmsLQ3GF0630hq0qsBj1KFnJbBa168_08mUf5202q0iTbs0q3mn0e9W50p0Rq4G3 WP0DQ2eW6I8e905Gp0Rq4G3eP0Do4mWc0Q0E3iHJ0D0d1qe9022Cf090zUIRWwPyKRK4G2CU ADoBYWg0A0F3e1qsDDFf_q6O0uzm0QWezIB6W4YRWWo3Y8d94inR38_06m0m701sBDQS6UIB 0unK_3b9o1P0H0D1RVf1mA48wzbuUWLdY1jyXGtm646c11eG00WVVzFWHrwuW53X9sJbSbRu 0nu7Fe50yUB@zWsquZDUqBDg7i1Q0Ob1qE75381uxb4m5UIz9CqJgRmXUYwJEK8884Es1XWC XT7yfG18mTub60WFra2YGmXm4xHJka2S04y3KB8POuGOACW4Q111ul@krTKYZ3Xfy0Iek34e z_u9j0WtvulRX05G3et5Q0iY2Y6lY59G010lIoF2WZNQfTG0GodX6FE02GZdq20U2b@0C2WL 8GqF5631kRlqgIeWc7IeJ16SP_V060M1uGVP4058cetBBWBQLW0RAxJnASWT7SNBEQy8OWTD ekBQ@4raG3ajtWd03i7Oc0yz24u13Fr6GJt5XJQPme0WtrwZdq00Uqq@kMSFmYYmXO6yGtyF GC3FOZOOYzu9NC3EWez1AcXCqHCC56G2nCW0MsVtO6AH8nmKU094p02SOVyaM0mR3ytDcXAa 5_H4pm1e2V6YPe1sX@0nCK3LYUlO6w13WlNC3JOdmsjYX7I_3XqECG8yFGy2FOiOOYzGANy2 E0Hzn3Q10letV06jFOs7j0i22H72016V@1Oa66r@82DSmGo0Euzz78PW7yNCCnUGbBP07Ob_ u1j0WtOxZ7q_@Uk_@0CQNmAQY01Cmsa5WLW5qu1D0WNp_FG015Kv01s7jj9hUePguslpF2I_ P1Y57Jr2a0Qd3uQ1AGAwZ7q00Uox@0z1y1WaVnO2MeF04eW_0Lu57jfj0IC1Fe10yOrVyW60 mhT@tD4XAa3Ou1D0WdPxFGEHFOjuOYz0BN92Eevyt1QRWN224qKW3SD6co281KF7m10PWyt3 jOrCGEezKfQ5GYyt3QRaNP16e4eV2yKDWz1p3WhFQs3j9Gq6xLh02zNHW@dPVWr0u12G064O Vef1HL2OG@i4K9W1Q7@zXsenpW1slFX2qjsu1D0WtCyVGk1Bam82r0G0yrVWk7UWqnm4xPNk S3SmNvlNp0507qoePW3eB_7Ksu10iM53Uh0BOaU0Rl0RZZ0Eh@0f2yWpZf9o3W0f2uWQoVF9 2mAk0QWI291xXsabCo0wrBks0GGJoJX10M_s08W6v@KOW5m4mtJQFfkX4ufA2FW66jNJb5Kb W164_02JeW42OGxnqKd09We10kJW2CF_xLM92ISlqefGKZxzIq3hK3it7DRatGWNW1ijiw3j 9YB1F2mG0x9ndKFS05WWHv1DDCI0mR3ytBHx6660VVqI2WWKV889054mw3qs71zCq0FmVto1 Aem82umAZhRc0FR02C0yzR0zHhQW3C066rM21U2UW800mpG@VA9h2QGh0Y53usHDDgEeWa08 W11ulxjoV3OqJKVufyawJRgz4pUgz4rdU0OOa6CQVqYZW0POqUKR0uTW0F5Iw1sMM5gIx0PB x_G3WrDW0Bme9cp_fDWu3O0x7sEKRWuPm0xGCzIq_ff9XIcxC78W5xVWuHvW8@K8943qT_3K Yn38Cic8FN240p3PFNWz1RlizAe@I5IwZ03GFWc1WLu2qx9j1WFh1341qx1j1gl192Wo0Rqc a1X0a0D0R@grE8C02QcZWk0C8T52mp0Rq5G2X0OGN06aGh20O0cO@vIbJ01qKizX60hW1et3 QQx6Wi7_23FWc2D0et3DRx6_G3pZoYZXeCO0PvFGg5FWgWQYya9Gv1Ce0uNs@09VnZDu4WaF 4060m9w1jTGpqc1K_07G3qs9z220DGoNJ23j1mG8040WJE8RZ30Pj9cIG1QIU4Bie074V34u 9uv01GmeCCY86P0u31@i28W3vFGXBG8eca7U20SM1Dek@t3QRbdXZ703ilTkC@D0p1hOWkFG yDCWz3h1WVP_s0cde_m2KP11cW8DO4Js3xP0cy1CW98QVXjVQLfG0IEeN61PlHfWW5CQ@QHB m_WXN084Kht30I_D5KJo3J10EWW6Kp@x3l8M10o3B03GKIX@8WlpK100jAL00Gkf200IEL00 GsI500aUg00WyJ500a0L100PeA0085L100rGL00GHg200gIL00GPK500Kdg00W2L500K9L10 0bgA00OFqYXG1x36WLfGWw9UgC08WUWlNf47WW1s0Qx36v0VlG0E023i1qs7Cg1_UX0SGlQ5 0Cn0F4040n0R0jz1ZMWlN807aK61s7Cf218XuV8m_WfK809WZ1s0Qx36X0VFeDGzAUgDWs_W X7mtB7W3Go0R0jz13DWlNt5BOVmO94W4YCZ0x369X0aGPP4OVmu84W4o9Z0x365X0aG3P4OV mO84W4YFmWqn98WC3o_9YaVB0UWzMMx4qoX2IRVmQ9C1gjJOHvgGBB4O3ethfa2gwm0K0zU1 bcGr84GJXMGqxXMMP8G3ZsHQQAKfI44r21sBDCA0UXm8GeACCoAW030FW62WLwWdWu6Ce245 YzW03GFW62WLq0qxLvm2PXm026GZc0A87k32UOXc0O023eHJ064w61v5KGx38q403OO0DA7m Wc0Q8322Q2W1GCW6j5OW10Obo1Ke822Q2W1KCW6D1KGU94q4W2f7GGJ0C0Z1qe9W2Q0YWc0K eJ22Q2W1SCW6PDe0ss7ic9CG6efFq0IU0CGmit@v8Ww3OWdKtK35Wr7GWU0CW6WjN059aVC1 61_@Cq8qpl1q8G82Y10XO6keVk3o1eW0wI0Q3ZFsO1Fe10yUI@3o5Q1y2B0U5Fmy4y0OeZn7 om04v1U00RF06vOynCCx5SK2A8whXFpmO8w1q07ZFcXv0nZm0E6Ve1pJm3W1E6_K3JK0AW1e VA5W20ECF1U66mnuZEOU2UQDmnmdSOi0uF1UE7e603A2WWQ080G3SCy97ceYCmnuZDOk6VW3 orm7ROi1U78Uu1W0490yHd7NZFuWPWu5W0N3ViXfo02o1e01e0Hv0e024uwS0AW03iHS0He0 1kE7W2Cm0R47G4GGWhp1e04Cm6n14X44uwS0AG13iHS0BKuK1L5KGY16WROQ4uNZFqXuQupD CqmehXFsm4Q41P2G00MF0280_T2G0kXP0n7m0P1GWhn7zC08G0NZVN0gWW0kkBWLKG0Nt5mA G8Whx2O594mrT1iI_36uQyv68NZFoXHJ2zlzMxLyW60mZJy7WH7ZFsXvQupECXpuWuYg9opg 0f@oW2WlVxZ7Q00UZJ383q5LJf14XntVeeDEm1nZC1qGi218mau@KO35WTOm3Q29F8Y30mhI _W0yXQOiXe08GIvF0Z0O534zRWlW1w2WW0aKm0q3k1UITJCb1MP0eZ8m0V3DUG30uH3_3m80 MH6Gh7qU2U@FpKY3Fq00ygafJ4kCgcYAu0D9FnD0LW2W@ne288kt2YOH1J86UG30u18_u1D0 WNEuVDyP7cAM80y7qR4aBas32H6O0Zn72W3ayX5n0QC1Fe10y87@1IohWA38e965YCG10iY0 WUVqonZWS7R89@2W7O0bPK3ena32ndX82gWWu3H41FW0Jm3Q00FGnVW82k0mZy4rdQe82O11 cSG41NONmUgQA2C7Go7WB3_0wdIAW0pj1uvrWX1eV03DRz0wl30DUev@xL4@xYMqN54nv1sV kzAqK3RVP_U0c0iIqGtG73n5WWS0B7ejWHjhR01cGOhFm0MWede_G3qo41QU8cPFp3Pqz5m4 Ffkf5OFeffPjZhWDbLFe9A_C3c3YEW1qM8iXBeGM0Au9r7mGFfk96QNWj7Qc5Vp0Z66PNqqa G28jdi@VpjFOf0eWXNN02iFQcWezBF_164z_Gx9rhFpWU08mUef9ts7DQA41mMFqo6W0JQc1 0VFqI1WW2188g02iBQR6Km1s3jDvsJgd7W1qW8c8@FJXOvBnCZkVg14Og9mWH74FAEet03I8 l82o4d0w1s_GRlma0ux1j1Yt@pi7mq3Dxbc68QNqijiJ0kzG30h8let7jwXO8rF6e3Qx1DD0 pEejDPr3DJ4tEz2UWTGRpI2EedB5i7QQpizGhgF6y@zzw@zGhfD3A1W0Q9m@kds@j3QQJszG hRT4Qst0x3669CLWZ2RVezawfvJHX0408vfdK@Vl9@V@k8A8iH3CUtx0DzGZmup6UU2_818G BWlFqo1jw8K8OV2A1mXu18093aHB0J0Z1oe5W9mn0P4D41b3a0dxM7ej7Q94fG70AaD41T0e GlI4q1W1b2HGC08K403H7HG706an62v0eGnG4q1W2zAHG70Aqe41T0eGGJ4q1W2D2uGpk4q1 W2vmHG70A4rB1T0eG1m4q1W2L@IG706KnB1L0G0DDxfwQJm0nJd0q7jKY9m0xBWvNWeS6C0x IzlxBs@g4OGwTl3qq3DJSsJrCKHWn6Kk04j0GG43IqqY1j00HQo4KpW3TWQGA884WX3jVLG0 69GWr7G0wXcTHR24j1UM0kzW60huzetl1Z62011v06G1US0TGROu3KAT6OGku4KF02cO5ybz 1nNl129FQ0y2R16jFTcmeTHtUfP3qslF@4ALn08b2GX0q0YIvfq2BG3WZN3h5u@x1s@ubcdW F01y@zsz@Tes0nBW1sXOxecFMnTPlBVLvGWde7O2f7O40yY8l03OFmsJQ3KVe66O3yUYw3FX DbT0qZtOq3DXe_03GJPt7VFfk17OJoE0yuR0Xe_03OV2V2z0CaT9a6WlBZ4O554zky1WLEGq 09VZCC0fKmhYW3it@0HU06mkWfBq8MU68Yk0JN6jFZ2Gz16mco2Goc5aW015pR0z1JVejBQT 6GGU18eh@t5ZFfkf6ON4kBZ0ObZ5z1n7a82PufWzn3lgCB002ylx3x@U5AGWFHF06QN1g1um 3jdI8e0vyFG9ga0co10hG0qqFnTBqc03iVW91GGs04ua@tLYFfkf6ON1kRY0Obm5DUeb7W1s u@zb8665l53vCIG2d4OVvcWHx4ezr3@02AG02ylx3v@w18m_2Q2mn7j_0C0@_34v1G0w0sEz 7GWHs1CwhuEIK0rxFO12e7OzHh0TGJOuJKEv1GG914mR@tdYFfkf6OV2klY0Obg5D_ebAW1a s@3IUFXCTKmUpzK244OkF0l755epUQ0EyGpJmBW0_@Ubz@0CQ@0fVYFn_@dZc2X0etFH0iI1 1CKGT040a1snSxiNK45OkTsp7hmjitRlM788J05y4y@J6DWB405i1UOaBz21EQGQ26u9w1WG @Vlr_7lE0E0bIzlx9x@4JL8tI3g7e0XX7Qf6O0B_V06jdWsJnXGFaJPJPnh5W2eXH@xUa_FE 44YQ011y@0L1KW1W7430mA40wdolhWEDG8M42S_CQI81usUf1WL8Fwa9P80f5C7Uer9W1qs@ 1Oq0mNtE1L2GG6H4O@zm8sW5I302I4m@k7O@DWHxAmTJi_E3Y3W04Cm_cRt43Gt030z_sR8u 9m0xN9G314eGQ54K90188W@T@c_do01sFnXGFypP@0t7U30V6R4OWetNYZGFWdR@I0A8d02A 1m0WEt_2S@4p3mWS48Wk_VGK1Fa3P2jMKGi24GD@7eO02WN0hWWetNY3HF07QV1E0usFn1h0 eWE1CeQ13Cf@ub6m1Wo@1Q9eWCKO8p42CWHxBkdWl212eVU0HUi68k72yaw2GY98o6vjhvqT FD9F7c0Ov5m0RYhTch302m_00t1W10R7q4mAA0wTGZ0ha2et1D0i20W_8mh4m041_Esx@L0G q0mNWa701GCv580xitJKV09Ay11BGq0g7XviXUxPkzshcN6o3W0c0_JbDK0H0Vd412X2pjXy sRk41a01W@KM3500m1WlxlN1ICaU02Kmez5t46PN0rFzW9ixUFHz9cew120ayGH0Xb702y4r 7S0JGqMGK3ZiBY3OV1Yd_x14vXQWs08mCuB2OYSVpF@k0RNqY6mXeP88Q05YnoWk1aeP02w6 W0xGtEu38vx6e2phXH4eU@Cs0nxZ10WAu_BDCw9gBoCs5CzjNJoZf90EZX2y@A11QztB405i NT0bcm1shldYNG2vjRTsVlHYMk070zkwx9rDr0RJs1Wt03ilwC0yG0Am4RBR806G@_QYyyDH h07WEzxJJo3O705O6yb0Cx98zuRNeDm_4G_zeumhJW1sD1X3ogKXKG88116o1X0xddkG43Z4 XH@x_S_leQ2eFQ8H_FcInolk96T@og8m4IidqaTVpF@E2Rdqw4WWKKO8J05Q4GXaH88S72Am IXG1Smq3iRC17asX3P2G1uzVWC1EmW3CgwLPCZ6@2z1yGU0QauD1T6GW9Cw9gFy0qW8co5h1 JEmegdyvCQy3K7_39Sy0msFF2iI2mM@yYYuX4IJ8O25oDZWSOA0OK0kSG38sJvGX1K0u1G03 XV8097q0azqdmL15lG0jeQdALA8j32yvAdBxdWFE022gn0C0UUG38xXnS2t7m2f8HW06OFWj 7Q4ObtbDGsZYv4k7W3e1O7qXM2PQi00dm8x280yzWuZsOYS0U9eN2o1mXgS98@K5oNW12i20 o60VZ0W0iWzJ5fK0D0N@y4U8Ah2Ws_9M_61cWeDWuk1Qt4rDjX3Wy@xBn1YN03il0rFls0W0 23e14tFHJAarc_WupQW1u1sJi@@viJWFrd012Sd43M3YG7E0WF1l@dPNW1WlnW0HS3444010 mNzX8GsZrP4kvX5g2WWivO8B0DAPj0vXXHvq9X1CA7WjVSnpLW0tFlY4CWEez4u1O0J0u_oJ WLu1swdTm4s0H0iI4GddW5s1jDWuJgtdW15oWGc3GaEW4j1GGk24OJPr1QJ0eTGB38gVUn3G XC5Q0Jl3QvIKGG1L5AX11RGGyx4O@y_CDY3yvAa0xzpp0m@X1s9CxdtJfdKWz2Jdag8ewx2i ROw9jca7YJ0Cv3O0JXl8WH3qiRQ2aB512R@qIkwXKFIeg24I6H1x7t_DLiWLm_f8OA06WhVb 1LONqUAoW600yF2@THh1H3QHmYe1DmrOVGG9F4F0G_2@TZ7eElW@kn3uII6Bad16n0OIa594 Io3X1OGm54KR03E0xzb7Gs33v4cy08WSGJ8uF24nemGOc74do1q3DDQJPX49Pm@pi7vU2_8H 8mUwXHa8F4F03fLeGy06WIX4EU0A2tvWo0SG8OlVp55aV11DNOWT2J@ei8evY2AlW0D9FdDN W08q9jE0M0CQWczIJ8gFm0M0CzXMJo3x90k_d3iXiOm80WN1uVG4NA4hG2SIU04Xpo3W0kL_ 60ZdKVAGiFY60_F2qF11XF8XQ_GKI6aMW361xzJBe7lf_06G0rZBWW0BR8RWA2IW44F1mP3i G7094am2H3m08hTne1EW_vzKa07OVmUAA428NaWJVzQghW5i1Qx9CzrJJo3R90BOtmqFZG2e _02KE23W3wdw0i0xhtJKVe9ejixBl98o_qfF_0o_eVCmcSj3nqdl8WGeI020mAA0Qzvh4W50 oEgPJPnWHGU4TK3eEPcmXuV2Ok4Vd0Z0Mf2iZ0WWWBGWKuF2O0O5B0zbm@4Gg22XE1O8w24g Ob0A0DGT0S0EGRVyT9_E14COK461qZqdUD9VZ2Aq1G3WH3qiFQ2reG1sNl1wuX0ojlU8Ob@O lQlwWuPf9@22LXWkZA00@VFe_@9mR7000U1WVl65023nJuHRM40m1M0H3ZF03vWuQR8M0240 0@xUI_tJmV70_@UM@VlXcKGC04G00_tzOyldW7F0y@zK_@UZ18130m@kdX@z4yv1W@ldl@tR C09W00_tz0yldWNF0y@zaz@UZ18150m@kdU@z4yx1W@ldf@tRC09m00_tzexldWdF0y@zqy@ UZ18170m@kdR@z4yz1W@ldZ@tRC09010_tzGxldWtF0y@z4y@UZ18190m@kdO@z4y@1W@ldT @tRC09G10_tzuwldW7G0y@zKx@UZ181B0m@kdL@z4y12W@ldN@tRC09W10_tzWwldWNG0y@z aw@UZ181D0m@kdI@z4y32W@ldH@tRC09m10_tz8wldWdG0y@zqv@UZ181F0m@kdF@z4y52W@ ldB@tRC09020_tzmvldWtG0y@z4v@UZ181H0m@kdC@z4y72W@ld5@tRC09G20_tzOvldW7H0 y@zKu@UZ181J0m@kd9@z4y92W@ld@_tRC09W20_tz0vldWNH0y@zat@UZ181L0m@kd6@z4yB 2W@ldv_tRC09m20_tzeuldWdH0y@zqs@UZ181N0m@kd3@z4yD2W@ldp_tRC09030_tzGuldW tH0y@z4s@UZ181P0m@kd0@z4yF2W@ldj_tRC09G30_tzutldW7I0y@zKr@UZ181R0m@kdz_z 4yH2W@ldd_tRC09W30_tzWtldWNI0y@zaq@UZ181T0m@kdw_z4yJ2W@ldX_tRC09m30_tz8t ldWdI0y@zqp@UZ181V0m@kdt_z4yL2W@ldR_tRGZCm_@dpU2_KQH5O5mt7Q09F43GOo3G0bd HGok4O2YM0HRWMYs40Fqsl7WBYna09801WlqyDWHx9izIhKQ2iFQxHG30FUL60TsxHHCCAmj 4YnA1xZO0vhO041I_U1a8oM2i1U2K4m12O5mWz_865W6qmec8F6Z49o10v9u1m0J0izHCC0B mm0Rqe61z0KXjHSlGlAmE1UHSs4KdN1qBnTae0hR00s7QRWOV8A00Ks7Q34F16OVWjJYbgLW 0t7nm1i8GC2iJYJ68M11XHH42iK405q6HW8@@JGJX0eAX3m3sxdRm5vAHW@N91OhFYQIUIwI 81xdu40J1mJ1W0mC2mf0aWHh7GpD1OfBmY06O2WTGyXW1Hm1gPJ4tFuWs2d1XW3KG0hSHJ5n aIb5f2eJJ16aAm4YR@yGnA08R0yDs24Ipr02Cm0g7ofW1QwNKK20Iz18G0r3ofq8IWVoNY00 e_0P2aJT644J05fMRGUFGm@xrB663o5uWS0FGS74Vy0Kaq54f0GIGZEKM029HIG6fIKN4161 _7ACg031@06OVv23O3ojlUc8k3o1P1GIhWW5WNnXH3mezZp26jhucm8x5t8CQduiVUxajQ1o 0wTWs0hW5et9Rr2u3u0rcm1q9FjK6God1m1uJpoo001wbdsAZ5mR2G13ZFb018vZ2013ZFcT 0a0zoROup98i0SWo2O1K32GP1i0i11ei0M0tW00m1mtyVD0ay2No2DKZC18MU18m_vvDr7oO lfkf6RRoEHPXC8Iq28a1X20SgDWs0q3mfs7OxZ60MHUG3ayr0mWDbz9gFmKUIz9CrU1Ql4ne Fj50Bj56fm51kf00a@oGIBmkpzK_j7e9vXBKZ2i9NxPEWalFr3AdD268tUoRYuiNU3qdQ14e xd2kZ0pjNU9@QG804aNB112WW_sh9ops8j2G0EGRVvfxUmVld2lhW608m04D2Y68U0E06oR5 ZQ60248t0CQYuI9W0yC2m9VSWTpR2WfVUb0i08qFlE0M0CRWcXW783i0Os9F0iI5Htm02f9W 0CIBVvrayGQ4Wx2e0X0pRDTOW1c8CI0EGP1y1WKV03CHO1BO0Ov5keCMeK1641swtJm70PW5 219Z81Kn8m3Ia0Naq74c0RzbNJo3iH0kGX3i3QFHz96gH13Gr80t2G2rfmGGyC4Y02s8jz4s _ePsu@tFI0TA08GVqUYwI84jD3eG0Immu3WIsBD31V06OlmiBQpA_@@n4G3KF07GNqUYwI8a Xndr6DIWkeDCy9eam08W03idms3jm0807G3Ko6846m1O74WA1W1YCC_G74WA1813ZF252K02 6OlAvFW03edqq8iCwQ0j42RCACaT715DLWyMObe48mkvDGO26aA21Y60VZ1e0oNAWn0K0v35 mO0A0yT2OQ24OkH0E8Z2ilSxAl1M1IH34v1004Bl00WVzQE91wzawje8XjbD3650y_EWHYke 13Gq0gN1viWHJK_11H2G2zsMs8180@1CIa0MGka0la0vC0yyR0Tpp44bDP7neM2iegI3QIXW C6a8XX7at2heDitLU3i2rmM@m5QejX4W60hm5e1gvWKejiF1UW7eIm2atJgRm9sci2fk16OR ocjir7WXM07eU169lR2w5m588t2P8KHP74qWW1H0G0hmM@u3o09G3Ky1fO8uXm0PBRo1OO4m 1AvWKg40ZG3Shh22yU0Z4QmGL2WHe1Gap23X6OGMJMWX1m8h92GF0Zbra3OO0DoU9ZG1K9JA 6I5G7KC0695K1A6GZa2u9eg8IFud0jc8zWWIA8Yq3a00l2KT0D0Y1s0QOOKu0EadS15OPWus FlsfP8a06o@hW2UAW0P@KM0Ka4S1ntQWzbxfmzAW9WhZ41I_ipT00hS1ep3jO0a026b1ZU2U K8m0W7jyZQtWw19mE9kFvC0yE_GmE9AWLgERxh76XlpGYNBu@Pslyf2iRWI0STJiO07eHUxB l95Y0Hlh4tVE60_kb2KGNu4GWLINsxlNqtN8EzphH072tZWMWIGYFfE15O24DGz0UgDw7gWG 188ew6IHuWor9W33iBms3j4v98PG2Om0G4UG1CG010lrzN2W1mm8W8FiHL2N1n0K0bxNNez4 y4OWf5tkePWubW0xYMJQ447W2qj@TXs0n331sjNW2Y1m048W0Wtr_h2mWG1WWezlRL054301 ODAXZ1eWm08Wbz34xPPkaNDm0n7010o_E0CW6W54x9122BF008Fqy4ygGWdWt@pilxRr@Y58 8DV8IEmXmi9mJm@Vy07mo_tFuWAeL@w3jdW723CXvq7DF1l16Ogv2FW00Cm4WJNqojW0J1dk 11KW9XJtO0AmqmfRK05OYuq5QF1F26Og80A003CP4058W1cEAX2YFG2cq@kn7K1DwVtO58m0 OOadW7Wi0E0GzlRg24a5G48eVWIIO5Ru@11LiGIv40VmMWHx5e9CQdQvDGOxbOMC4ORP1mA5 0jzIS0n@@CsKsz0M0WJl4r3OwXc9CQV3_4y0OWTDuAWJt5tHYQAaHWU@u1AmkBE1Ys0FPOqk MK3ZiFQJWeDmpJgFWHsKMBGqU6Kl5jNQJWez2pUfD0w1S60iI2WUlqyaw3OedKt43jNB04q_ F12Rt5Bka0xEekMS@5ffGFRwzIiY04e1qxsAG3b2WI9p64101b1JGKwI0FmMWHx1e9CQ70k7 Yq1HyWM66v@xfp@3Oaz3S78gXHs3DDGq_9w9rdm8RAhjbT2mj7QH7GWTGK34jVYX0GGt4EaA 01PdI0y1336jWHbAOGK74Ol4rHYuZMj04ue@7WHxBeTIKZA3AW6ujF5VIzS1CWc2bWet7jU1 AGYJGKD04a201C0wdwCfW298mEW9Gvx5Ko71zcgGw08aS111NGGc44OVms3Q34FH6O7XjFQs 4lde_0ZGJPt7QRZd98QJoEQyeOWz9ekeL911HVm0ntVt8CgWrxlFq68UG8m_GRWunm0G4vH2 KU@zB1eWCAWWlxlFqsGlq88msogFqcGkkDC051y4uLG0@VVH_NdqQqm0xhu0rES03WUVAgXH s9DDGqJmN301s9Dzf86692ZU2y28W@ld5@3azvMOXzLS0nBo0sKsWIk81QOqJ5NK0Lv@fO6E 89S8IMd0xWs0Y@@Pi3Ox3H0MHAHl3qU2Um8W6Wx4mbFYCn_c72pspiX6TV1CoJKVw1ooZWyB Dmmh7W1sKMRBx0Y7c1ijiw0j9WhH04eFYCr6G24OYde_q3af910Obh5z1n7693K4M0yAUWP8 vJt42BVCz40lbs7OujaT2R7fDGyGOWz2he0iFmk2RFqQDWWuj98602iZOu5c012u9wPfS20U WsdUfzKuc40EzIBX43Y0W06CmaH0K0o6OAojNQ68UEIS82qhlUIxDuzt0JIkzG30h84etHjc 080Go3Be4MU00G65GSWQrV061mA02_m4uEgbn310IUM328XQ78GqwF4vHVYkPA0y180DWB8s 3o4T0eGz04W11sfEW2QYG1tg@UIRWuHW0xGj1Y7130HC09OLz70uxbctW@D2eHSqDjd0@O3O 2usjiZ2iROwAjtWNV3CH80Bu9udA4W723m1F1VDX0yGI244202f7G0UWMNfz4y6OW9Q2e1sC m4X0q026OYG0ImEgjX_qDjG0OmMzfR80DOp_qD4W6iTVw62m2M0yx530WO1P008wcM81E420 1_Vc92181uasJ5lK044G0m@a_1PG0Y6OAmfJQU2_XCmqmv9wrqSxJezPyfeGEWEfDXusdn80 8mKnXVnC48WdW75280ubH@eQ8GH3C1usdnib88D06eFQJ2kzPC202CDS1nUw7eJZ2WuJgt30 2c8kWQ18XG08mKn5K809aK01qKsW21u0Q0e_Gx9u1o0JGEzHpJm7X1cIkUGAefc2ArXWS78G xvlVw7DOf_rjId3Ann0JDtkLZKXGpVtQUQGov3Kz7OWn1Yd33iPz79O8vJN42BF02GZ0GGW_ 74FKEet0WAWZm2WNn3CxZsE2RVqQ3WWG59eO32iROxMiH1LRO0s7O7Yj7QsJizo1m0YjhQv0 K0nsNjS0AmOudM37AelyrNQF1F16O2mfVQDSOG404qm11H0GG374KA01uGWzes0nNi23Y9Vz pFfW6EC09GlVP65KC01bPm0FoVVfDGybAGWca7GX0iy28WdY1e0Ia@_LQKGO04Kf13C8@10_ _fLfX1qHjdgneWkD8G03i3nqHjADC8405gqmWG0O8C07gqmWG0Oek222101xis0YtW1i1U1O 54YE702IGWWS0Gm1Wh3rU2U5Cm4z1qGn6442035RGG80808vPrK2BF06O3ufZQj08XjmJdM0 cmcufJB0JORyqf5W5Y6W0pCm4n3aH8044DJ1X0i176OYG0Q043CH80DGd1c8OWUSm0J42G3G OW921e1xCm413q366OYG0QWJ3CHh3P4C051bGG80i4G04LhGGy3qnW1c8UWw2HW1ucsJXkSW 0W@C@hRQHkGWfWJtONA8qb3Ou_Esl22qDj94t_E6101cAEyg3u0K8G0WNf@JzXWGNAWZ34FA 6O@q0MWUfD9ustn8088q5AeNQJ4wI3qBjf2TPZc18m@pC1vqBjGNC8od2QTw110@qyVlqYUn 110V_yVlqYUX1NflEIx9uZUXWadCmKpjZq68_eNWG0mtA@t9jeNKG0mND@1o_eNkWZ34VqBC 8Vqqeub2e@zvw@3Y7E7qR0M7ayc24PWz1s_ePRy8oA60DyGxVt@F@bPP080VeyYEm6u1WL60 wGjCG1WZ7q_@Uni@JjQjGSS84s41Xfc007I_ucCm_Wffbs9CQkqU2RlqCQyCOWT33cBjlmmS fecI8lX2mc@x9DCCIGsZVXw60U14G0mBJX25GW1mWHDcK90685@tXQ34l16O3ufNQc8kTes0 nJW1s0UwbcfYRdA9A8302CPSxGjDmZUfDju2oUuFWmvJGGI25q102q6iTX80he1e3A404Wsk 8Q2Y6Gy@BJH0AK@91WO00io5G3kbsXOxeMe05GkTKBPW4o0eWy1E83W2I9uWK8A0K3CXvqBD xdtKcJlq2lh0pjBYrTfWTHK36jVQrTXWTJ3Zu8UmjzlRRD4O0CCYK9zK905mr_rj0C38dkf5 hN1aRN43B22wcsaaRV6Z0W0JBdkIRV6BfW0RAB4ftK0E4uVtBI_f9XGt24es_rfA34gFA2wa sar7L0TIRwgCc8J92goWXKb8eA3DQ6WWwZ88202YBWWUB8eA39uJ@xKbn1g8fdA1e0rq@EHP qWXnN@Q1N8A32A8a2D0_z1ITWFa10WGG6004zX10W0XC008yZ10090mhG@DBH09Iwf4DAm0z 3KMIrG@xfW@74VMI6WXC0080MB0UD8sZF0L1GGn2605120y4qVd48u9u1W0Q8NA28q1G10S8 vR13108W6buTGC_KO@yonA4ajzpRKnVp0sFk10__vPquXn0x7dTpB7hGGssDlH5@D3Otu60u xcNC044601UIz1CXsoQtyc0HRBRddCaU73XtPIgSCu9uRo0@VFLmV061mALWW060V7fj1UGO b121u040EUGx@x95_3meT0hRF6osJ6xAu_HvL0KHAZocAG0m70_7m80io7YUdqGAIPKIG120 _xj@06bdE1vHG0168e26Ee704W__3m80MX1H7K337O3zsNTd0Ui06GIao8MW4iJQFMAG2qV@ To4e2kl@kTJK03HAZOgAG0mNU0A5O@wsNV5i20a7T16Wea2@H0Fm69eu100V8F00O9o3006c U00mzp300w6z00WTIRBxD0yfpJ00WFQ16azmN0X9F02O8v1o01BFG6OQW5azPHiWm2o_E0CW 6fjZqs8F2f_0vbaGE0AOZqUYw38YTIRhW0_mcv9KG0TOxy4A8WBIJX1Q4sJWN20wjW0@V@2r MiW04G3oXMuz6OGOA4u0e3A7W48W0QGEj2l1378Luxa5G1PeOWoWEeu36L40yKy15uH_3ghW 4CW0QGEs17m6nFC00aaH88242iJQR2F0M1Gm7E0t9DRZ7KM18unDWxIHAM1GoZD03o_e3Wa6 fjB5dW8Z6F5v0CHE64G3vu3uxaMM3AeEe3AhXH110FbrG1oT@WwA8158W6ap2mJgG160TGv0 qGUBIm4zVA3J8IAzWGyGes93wUq110lhoV0Z0mAU0wXaFE98i7O61yzIp6yzlLM8QxbsMux@ LSGqx9jDvp@hCWetBDRpt@H1a0P0VlwRMmJmda1y@Ukr@0nhaWz0B4WlNQsIlT1skenWLC0q xYc8Mv1GlBQ2O530T4W3Vq_tz7rl1CQFWv0uP0GW2wV06j7OG0Syp0W0xFWHs3C10_Jmt801 s3DC2EeXqVP84g2aN0hO2et7QRd71MPXcLBW330Ku1FmcyVg_b2S1uxdiR11101JoVWmOM88 62u@zUP@1CAEA8o70XK38m6xjlvsVlMPKm5WlBqsQlK08W1hKWen3D@VVg_V0Zi3OB0yzt30 hKG9050c@7WHx0Mj16aBm3nFN0y0B7WP0uq3jzjt4mrHR16OFmi3QR0lzdBH02mml0Oa06Xs okJD05O7m0WAf7TF2648j2UV_4C8661kZmWH0Ra1CQGpd0YWxetDF23c203G0Hu2s_WIWB0O lFF96Sle5E8WR7oEW03EV4GyWuZ1mXu0G043kNS0R024F8EWBCnWx57m6c0n3Y3u2KCuUn1i 1AGyWO0M8K13wlf0Wj7QsGtzpXkWijh0WF1VJ04OV4tg9W8I2G2Rhx_91KHs0AOIz1ryx3MI 0ROkzGpqe@aVsVk_lT89W64uUePQq@oFx7ezJ4Zi1smKe3WVs7iq2iGEWjVkw60CTGp_v9Cq 7wd44q8FN2o2818ACwcwdzp2uYaA8eA04i7Q21T0c9W090mhzcvK34IU0CWpoZW1s4RFfk97 O0mFW0QIU2D2moBW1c2_Y0ZT0JeW0Mm4JCGG0FOFm4AG062282x2cG11SWjPx9gFn860_FCm EXb203cQc1o4XWGUBG03iFmsBjkF8m_ez4r7Q0x360W79y9WH0HUWdgLB3g081ej3QaT@v9F GoZuf4k6W7i7QoM3G1GUAXh1u1xYcir0K0cdIuQ0Um_e9RD050wf4k6W70ayyc2m1PKb0QF4 suBCmEW14xvO06BF2PeK0DGZ8o7qC8sUgCac2fce1Yz0DGD044II1zdNWHW@F3jFOq7DW8F0 p4a01qK8Haj_ev9x@tS0BV70401i3YyiCMQ04qJC1s0jT0c4W74024O0D32W0spwOT3KWmsB jW088cQ5QCX00uxHi7e10iyzPYT0Bm43mn1zcwV3HyRGI7E4711m7iS1cUWP8x1eqc3mW0QK 5G29JmGY06m@p1cH0IB0UTem0Im22eHO07a504o1CTWsJq3WfcAcY2o4x1q2mhThGGR08aKW 2f0GGa8I87m6gSW4OX0QaPm4H18XF4GZq3web042wmXS0Ge017Y3eZ0QE0GspJ7S70WLGGq0 PFUaJuak8Wz8CGB04O2m0A8W4iBOlRU46q_W1K9074N11qWezXcc2PXiV2y10Wcado6QFG62 40u7CV00VCw78xp2WXE0I0OxYM6wDalG9XGWHC06KeW24G0DQ28Y01K8A05eW0Q4505n8KGQ 26qb11ePEXxHu0G4TGi7H0IJg0q7MGTOH0xlt3y3az51OGBO50izGZEe5KJ0783Zitz6qVCF C8Gu1GG20EWDQGm3mGWfsdeUG4u9r7I1Kgk2U01@2fw4uXFyBLg306gYw2mW@KdCSzdwAZB0 0lu0w9rf2LKlkgg2N@scGOeRMG4WgJ012aw3C01L700Cew280031u0sq2Y_5cU51y0ufdKN0 ny4w1a3CfU4YH0e1aGXPzW2m4m3WdUIT3C3JKVYP80qIHenMtG3G9rBu100@f0aqu501LBUG SG3RB0zTWVYeV1a7GC4Ky08W1qd3o38C6IV5CVM2o1mLQyWe07Y78E40L6GVEmFA_b9u9033 H@2c7mO4br7FE10F0AwWgz4y0m1kZ70Cudr100kjU028sw1u7ROwOh70VmWfJ21VfEC0u9rn 3348_08mJgJ4faeU0_0WWNJ0nRy0u94_rNg356WAU00GGMdWe4aw580OwrNgp460A81jU028 2w1u7aA_08GwH79u1u14yR0C20G4h_1QU4_58pCguNO0p6F84W1jnWC8eR1Y75C8iuPG01eF 3WF4z9GyC0S1Y752WjV5EUWmG0qNWu1Y_CWVk@LGgpW0W48ahXe_DWrHGKfO8OwrRgJ02_W7 SeD3en1kHGyKW0YZ78202z90U1el0c78rD00XGV2cNHgFW0WfN47F3z0S01WF0wJmyz0GWKC 26z6Y_80_KO4CzYIu1m33IF0dm0@68z0CY0GJ0zmfp@Zwan5C_zFgN6NI1QA3V8150DLK706 GmlPm88C2Cz69r7u1UyB0210GgFW0KnL1Y680aKGeutWW7011ZUfeU0I0F_DWw1O4met0W70 5L4uzF81HFS2u9u100met@K7PSfHa05aC01uut5Oa061Ar30D6yBfKV0r4fw6uXWGF0X0cU1 cHG2VW240WGWpHmKhde7GaHGyaXWd0F054161WwSW32e2G0F0A2fV1aGF1U02WFd3CZ420Ff ku2u9r5J0FHT1Wp7@A1u@R8J2@VUAGu1MKmv89X70FGXVd4U@z4S92K0meB0m3GH21U0448d 3OZWYw1804_5kQ080y0K0507gG0IG4m3WY4ewkACeU04ybwHYhVe7tk_4u7G0VfEtO0ZVDWC V51m14OTk9Wmn3a10W_3mV636O0@1YwE0Gx34W2Y2cv0R40X70090u0se01F01H80_mlVfkW 6GIgFm3_JTHmsVgR4sK3qFfE94JQhFnO2_NfXHG019W22Gu_hj4A3hWulWx880F0F18w100W 0l@023@2aGrQGWWe70142y_B8CyRI2L901_1QHpOZ0wF0@WOT60mmn3a12W_34F0W7039GrI I8miEG00sw1m3JCDOZ7G@Pmq02XdeUC1GWu3W0_hYeaEMn3mJ0QTX152@24u3000fk100E7b 400QT0004q3W74Ly18WsZ6Mw38@ODU4mWihZ110W_C0FL@50hBCKaI8CC4l@2QWmmGmTKt24 8Gw1G06yB0f7004WC2OdQT_JgBe1_ZwYmMv44O4s21qIgk1UW0GB9y0u14yB261kZWaw1y0E _50W0tHa0_@y41H380Gnl01F002E79Hy0GEUyB0r300WpH00F06Q8mxFG98G0uEwFgBYOiuN 4OqVgRan2WH2903_zBg7q8L2G0We7G00tHbjG0207O611y0O8ayBG2vBr1038yBuEQ8mRvG2 med0F00W3mXAxX3o2W0A0EmPGaW8W7039GrrFOWlKF0C8ml8qe0O40WO8ujrG8yhHZ7GJDQz 0O0UfFZo31T6rw2F58sE0wB0@6Z80el0yJuu1X0y6F0U24wBWy6QT1002@sf01Wx814F82q4 0111G0eKdfM888804eEtmbG01_d1EeEqInZVvWwHF59Ld1FCfwOuXt0j641Gr303090C_zBg 7K8y0wd0F0ZP8rX243fkeY0Kx7GCO0U00Kir3W7ynl91WWKVQnj500Iz00WOnxF1wdATWjPZ 7WK7M0S719u1u1C0F0O2XVba0CHTe01Gg75G_J72@hqY@@10aw23AuEgN122HW01eJNuMYub n3SxN0WlY128Sy0GWW08p22ACWWg38mNg7300AU00mKKdf1QC0XK7800m30c4uN0104e7W74 WEv3QWK730C9u1u110F0OIWVb40H4301s9VeJFX0FUE3T7S0C_TIgpm3K0QO0F0C1ZVZ1y0m 4iZ6Gg700z3OGS14uYVX4y0y44CAIm3m3Y4U0y45G770128QX8m3Hd70168wb806@21ZG8EW 404y_t5n1L0O0W00ke5kGQGBgr7GWg58GI2y4r124t0zJW7mfCawH8YXK74Jm0u108BA4E_T B08KyzHWde70Ci8X8vNRf1GKd10CxwHv1I_reh7b10ITS1miMFo7w0W0HE0GKdJ0CxwHt1G1 YU0WeEt0OZ0mmlVfEEu0SHtlA_nUeywY2Lp03jCGG934uFP4kZXASpvIchmBgyS6AEu084jG 4uFwrthJIT6UmVq3dNHm8sT_aKdX7GGqBHWVe7JlY0ZSxyu5KWoH33u1G8@HFNUD6u1mG@XU UUrNd3Swk4W730F202403241m1Q2V2myJg381UAuZ601qIHzfO06@29r3u1OzhiMV00Wul8x 2S_rRg7EumuN01V0zTO0s48QVfEGOfWeJ3W0b7zNKF8M8EqT1V2O0S7H8ZGm8XPq@E@XQz@z BxV0G1I@2Xu1u1FqRJm7Xsz@zqxV6_L0W00Gw2V8iFmCg9yJ1W0g@FDf041m@doK0YWq@JPA 0H0v@f95W5840EGQPZd@FjWfV2UUEmiMN2na0rFHT06nGm3WX6HV20FSTXG00Wx8I4VOvJK0 1Y_9m@FCj0W0WDo0W00y2G@00o@t31zzaHBi46CYG6H8io0j9O4oeHgOHWI189vCI0JEcHC8 90G90mJ2y@tzc@F2MI369@v0s8iL00W0Mf3000Bj00WNI700cm808o@tZx@T0j1O48gTGmMm g0IUiHbmo302c2_4i2GGB0J20ycX@10Rle32W60imT46e50rE8i8OrfWF1ha301AX@10RNuZ Wr50imT4ugj1BrWJsSZE1X1G30Ii2_a0Z0e1J7LgGoFQ60V4@31dGmIRkHE0I0kUfar10G20 80Jh300GKBACQ0i8WH_8xWeE03O2u7m3G0D9n70WZ0UCie30z5WJ2y3mx1mZ8mF0FOOHW8w0 mYzH30GWGl2Wc5GJJ2HGq8W72031nO0Mi7s2O40OHSH3@v0UT70Wxd3OZUWA4Q48gb06PfHG me8O41P38rPeNW2a0qn8M0414u7WTceA18ZY4A@e1cHGet1GZhn3X0Sq8Z0cGGJCmC8QZ2CX H34m8EmWW6Fa2ymc0m15_4O72o1HuJWT685uZTtE7OZ0Gj6o88CIooE0Kap8Naj7WVW7KHq1 Hz06n3eC4r7O89aD4mP2mC5OJ2if134oy0Kk7R3W21oc0S84_4Od1GX_OZYOJMM0CIceAWPC eGxBQuC20z_0QNO9GKhWWb3qmGiZAjjYL1h22Z25D4eP0cC0uDM_2aoG180MuS486P0upW@l VUk34m1QXGj4Oa1X51nEOQsAM3A3e05eP0cC0ufK_3quG260_0uFyd3cQBWH92B4CY1610yc J@7iK0Y80A9Wa3Cf0Mj0JA0a0439Xn1Go09RGihccjY556bAQAGr10@F@30KOmlA0I95481O XHleOa1WVRz@_vmNw000Go3xf2WH2BF0602rY1Q_@_dzF4zgbqXNG7O4KZz0nZa0i2DB4@@@ 81gd500G24cfQOK5_8ed0G3c7XMXoNqxgc5Y576XvHw5Tu5O0Bv3qCFhY30NjCme4GJ16bWO @@Uv@FACA4ZC0yXmVuwrAB1dQBm8QW6a4w9e9aQJm8TZLqebgO1m49cL2oz0m5YHC0DKCo0m p0@1W5u7zQKZ0RmZB10wiHpxdZ2Zo6D30F0yNDr41QH8MKCo0mhl_JBjA0CGzzd6rY8sA080 yzdgrY8sA08mwzdU507my_J1RH4R5048y_N5RJZF4X8YE0AWszdMH07ew_NLQ35hLL356XvH g6Vi32e0@Vld_7kUpCm0Va2Sgb0ZqWHT0RXOZYnc80c2Bp5R0MX2eDRy@xd2W60aW2Ze2AOU 48C2kUTnC30i00X_d30uR4VgOK0C24Z00yC2VvF70W0lpjO430sJW@VOi_v05km4WhsYm616 fXO108mrB03X0mFF_0ZCS4B1Ye0m0m83252a1GgeVqW@y0Wpxd3OZ0YyOFLV0AGy@XGl0RKI 1802i52Rw6Bfml4mCOi15GW7WE0ha0q95G0Xml40XvHD5GG314O@p708vVk00vUdB08g@y@T @l@30KaNqYncmF7uW1A8e064z@GetFI9k12mWHMm82oko040Nl3XjHYrKuJ2062Va0szE@@x nv@88trOJzd@4u@76lVk2L2GG_x5O0ZWGj8WcCCwVtlz@WeN8Kh@txr@XGlmLB4OgWKFA00Z C2my@Uv_FiY@@V00qmftHG30hiFeN1CvVE0m10Gm0jOO9Og53Ua9Ox0DbiD2_T4ZG0aOutny 00GAW9Hn85CPQjlN0EqiLux0CUYU1CNhuZ1OwmgNC90WdrI1A02RJXO1OJ08Y6WB3OrBwm08 1W5S7jeHM1CpV_Y6v9uzFCh0CvFFw12W0jmeMAy0cmM0Z8Pxc1AGaOyhny00HAmaIpe2CvJm x@Ps8PW6mngNOI0WdU@3Ro0D03Ox5wm0a0W5ka1IeB138@vEWsded0n1WQn4MPiQhmd18y6y 0881YK1H_4u@F6jYl3W08vXTKJ1V2MfC1200a40I4GJQ6TX910U9zF0r2SGPB441210s86GB 4r2JOrmgFHF1e30HE5_8O524vRm7AW3z1GWMnd1010yGvV0o981G0a0W5kZ01y3u11C24roC PV8QcQK069WPGawEm52MX_H71qWm8BFKeYF0PC1GJ0U0@H4GF0ys8NO0E4mFWViQiSI8zZ64 z25y9u3AFKeYFWPI2m0j7jZKFW1CQy1Gcj7Y609H9040wnF70iaEe104dVUGTmWWQnuN2OaX C2YeHWH8me4Gp0WJ4y9OZC188S06GFqYme0CI4u7WT40V1i30M9@e1dHGeN8Wt0F40ZK8Q3W M05kGWV6D_i1KWzGF0ys8sW2800hile1IZW480Sqo0ZAm8HOawYb8rx7m0T4z0Kn4ZWHsg0j HGZc2z0ed0SY6V0cHwXQ7m094D1WX0RCGAT8R1GpCefP8D487tZ60W07UXx85O4DCQ5yea7W 0FC5o4H30Lc7Q0WIyWk2y5mFK0@0U0c2bWeb8U@B3zY_yph2W00a2wYU0y03UOG3mF7m61Jk C588rTW0I0l1UWYAZBm0eGfV1OaQM900hm2e705rP43CwXib0Q60S2m11qC0KA2V4in1oE4q QHW1n3T8C2qOj0U2nZ2mN0xW2Zs9Mg5R4mFWV4WE0qaG1kFQL4B0X0WHM0L14Z85IVH3dHWf twOKvd3kQ5WHDOamY50a40uqY3EO44695Z_tz0yl1C20eOVqTWGW@lFV_JWHo@SWPq4618vn cK2BF040kCHC0QXO4LCoVtli@Wht9X64rY2ZcGkOOaf032zE0ykWV0CoeWPCmmtv0RaMI7UF rQz0jj11BY6X2Z_WH2Q4CYTGf1mA00Uo98YB1pYGmlQZF20K1GRuIP0O040a0GJuIP0O0604 Nup04KKM90F2F00uZcWOZF8W10h00yOMG10l63GXL00yt9eGDg1rBfP0Ga6KlaZfPy1G9DZF yffPupF98GI58Pcu30GaLybC0C_D0Z0WALHJGi2600uJbWCP4AmF0l8Ryz081vZcMhdG1e0w w0Mtu3WQC6_009joeRupFDz2GW0cfPupFDEO50Cl6221R80c0b12WK4u1WA00UE880ZWWu3G 2RQa6n@0ry4y_F6nWN1JoW8JGy1a0HZ743WrA0G_QCuteR2uHb0pCWP6Os60Ae004Kf0uIWP 6me28D1cP0_Amm504HM0CK002_4WPQ1O242mCP0aWi0O63Cp06OWPA0O2pBGeL1S0X68qA0A mH3CZ1IR062WK6Wi1Cp0uPWP6mM0CZ1cP0ZCmIW7Y5i1yWu1WWNB2k1uXu100@N8CdEiGax0 DECg@G24W868J069_020GA5Hx0K10mBj1vvNDK@dOxCZ0CyiOG1K10mZj1X09@VlAytWDvmJ 7Oo4WaKWlKh090@0teLW2y3XvqAG10G4EY5e0JVEmCYrf500CRw000xJ700OQQ10mIj1a0g3 SZs0AG24cJ618GToh30j0Cv5NG6aP041WKaxsKHz20W1P_4u1O0h0FWM0ZV5m8085C_rGm7W 1mMM0WIgY60L04y_OmDWF_D2epWDeUFF3CZSWR204DY@ze918PGc78o4oq1Qs9yFe6HA4k_D 2ZWGaB8s0Y12Hk1u5O02Cf0W61C90C80oDW7X1CW8r9Q5e92saQD00BreR8O1GpR22lj930E 4u11R01BSeR86nSWrDy1e4r0cqmeRyxam1itDKCA8ZqGzVIi@lNM_30K02Uz384ufXw9fPGW 5nv6TWrDy1e6r0c6DKCXv641sq9_EecD5R0YeXw1rOo1c3cPcm0AWcOqTN0HuT1HWD2W9CZL Wi0EG1pCJM0PeS1HWD3a90J10m7dWE0p4a9HQ4R02mSG1ZDO6jtF0G18u59WG4RG9SKG4OJ2 QAXDl1Oo1Ml04aBW4m_N34F210Wv7ZWR0F2Um7GN0cGGJ2f10i8dkX0B0Dlw64ha2CGCGmYD w62Zi4OD2GW60Jwa2wmcz30K_9wY2AGOGmYnvc9WrD_udckx2e0D0c4ouWLA6n0yJ32j1i00 x75xsD_0e42i92OgWCHaGi_hDmOBOGmavIG0G440ZqGzaqicXF@qOXFjLvGPKR08ei_XIkDK F9DZRbtD_0e60i2GmZa11m8DZF_f1Nup0Cc0UWy07@w9u@dC4892mS8msGz0ijUXEyF2tyT0 C0iY@jdGj62y4OWMXFGq0Ry11CDKF3B3Nux048e6iXFAW0AZQ6_KH37Mb0xqA_4YYcXFNa85 ZU2z0Accnd6qqC_8Y60CIpuZ7IQ6_8H2HCgPup4Dsne@TFBz30K80a9iDeCA5690y_pV2e90 e0ZVVAWW2qB_0Xc9W7GFeBen5VC0pGW7e1WA_C0cPF7m6fFf300ACT00G0uHy@OeScCYUb35 Z2o810@I9MK0J24t_MA0AbllE61U7Cm0Y710i0aJBT0A2BcllE0GaK0SGtblVJ0FOwotH7@W 60Uf0NIwl_meCXF0WuNxnIh5efFCIA2LWaM2U2iGcu30GSIvTYl3g10h04yYGGGCJZuxWQo4 _00YXAV9m7m2L0G0VAVbQIA8302WJvB1U0Ne202CJv004HZ7C18C0620RYH6mFWLWC6YAUO2 G2fKliB0IcKUJCg2y5mEgO50WtO2EguX10QOK2G10vvaW98U1200a8E0630RYH4mF0MqWHS4 7G1GmeqmH2eG_i9YwaJdKDo0KMGvs1jSqH3rJpp0W8B4f6n@0b4WCQ4VeH32IA191m87C9lB VM8j1y0v150v7G7VG22OX8ZFWWqI8m2m7W1U2U0406_DWGiWG60wbWd0B0ZHQ4V6KIZmlWQ8 W86fSIJAGW24vtHtWY16EmTqn2JMo22u_S0eoFqJQNR4_GJ20690Yimb98GG814KG01wzyb0 FGB4X01UbyCXF0WWDLKmlB1FGMO9m3n2o0@0y2fahnamZ8xW6SweHuRG9v3GGh06O18Xn8sf J114GX8BGvB1FGM8Ju308QayD0F8F00uPJWvW6SwO1GI0cMuJ1OqJgJyv2Mw0C2U870aq8_E e8TqnFeP191mB00lE3q0P2GAqORSOK86n0D70y6rFGYr0QEy6IOo99q4TpWD10870f4cK8bt o88JeoiUH5KN01ieyd0@@mW08nZvuOa@l@0xd0aEWoOKku8W0uFm02fkYaR0n3J0emerX0Lg R01E0_1qXEC2UHl1y2u12yxnhZX1Ima@GlCQ56fGmlEUT60G2Gw7wbGhmCY3mF0zSywO8W44 f2bNt22_x_4rA4i0evlIWDrKo9oOlz10A@HlFS5YaJAHe0Y0RYgSDK@dEB18bCvGr8G2mQV0 WoVqZ@MRGzI668B7gO0I0Jx30K_XUNtgxf0i0Xs70ey7zClr6KlacnioXA6W4Op_00b@edsj sWwbqC5KEKn0a0Ls70ey7zSkr6KlacvXo1GBhWDKWk1rxvPPzGW3kX0n3p0EUT68mEm91914 vDKVWF4G1C90yFC0HIG8gNWSoWhLa056f3ZE0_1q1fKV010VqT1GW4aKDa3iHmPw0007J72Y 1IW5gbT3rt7010neKOa2YKE2180u20@3u72010O4O8p1uBWMKW850F3mlRuJ0m0852OK361T iF0q1yJ21Cm7oJ0ATZj0_XUd3bH56WWar70ey7zQhr6Klac9GoXA6W4qh_00b@eNOjsWwbqC cI_6W7e7q5qtAV00YETi099neQW8m@t7lTp4V00o@klcT32W051DFGKdEw1e0m3G1_@UER1e 0n0DFj0K004XaO0EGaxk1uXu1A4z6W7e7S0qxe32mCQ32imdO0m@ldpwcJ_G5W0Dr0OByf@l tOwk1y0w140DF8MX1152O0BCN5DX8vX9nW6CVdiEA8w84y@zVPtTwel35y@zM52W2r5K0AtL 3Dz@zqVN3iP6FnWLGnl6CY4cS4gFESG0ohLE5DHLobGJ9RE069L6Pma_@UafBK6rY02aHV0W oVqpQMZ6vxqHcA4mWBpjr520JcuB0G_WHPYl00vM@_XHIreKPa1Gw@xJbk0RKW344x21WPw0 0m46b_55_@_AeFSzc_b340_EuF0Za_b3Kjj11xW6HHZeWHVO41WVS@30QS0oT5F0FW0et6_O 0J3N4OQ19qIQM44_TRuJ0eK0Q1p0u080A1W6mbo0m0C0gk5WjWX5Kx2mEWl2AG1O7eD1RGzO QcGDY0sqGzmSC0421p00HQ6_iKZcnd6L0m8Q6VOKHpfpYHMGaG49AYC2Hc9_bWX1G5afImA1 DrOCy10IPbHtm7cQI6WWGF80CrSWL0OU6882iPXDjL6BOIHmh4C2eWW48_0I00Zy4u@76DY@ LgHCymmaAOICW4a6bWu381e6F8fWL0p7yReF1yaU0oD0v3ex18l0W5Gc0sQ0o7WS2Oa18V0y Emm504HM0CK002M4WyC0v3a00150OWN7WS3G_0U30oB181P10v6Wy1y_0aN0m4ERW71GU3K0 01QNW7Z2e0qB0v68F1C70kI0p50v3S818V0T10v6Wy14o0AOpXW743eW9L0JG0F8U08uLhWA GJ9WlY62SjXxeZCcqEe5Gl57GAnLWc21F84G1Igmcc0UGy0GmhI1LGcH0VM04WM3rH7P8P56 AW7nPDyh5eGc11U82W2Hg0Db0_u080S2gGS07OH3r9EW2I@I1aD86sC0H0mA0JUH4a2OI5rB 8Wsl808m380K0IOW96bEG0KmutwlG0Gm@011G500Fu8y0ZqGzaAC6YH2HY1Dn8JI8vZ42rVb ZHJ8oEntLrCXOdOJ1Cp497K010u0GA0qc8J14p4H6I018K0489FHZXDd0cSe10OvcsfA0E7U RRC9mZkXeDc2GJ9r0ieneB28mUtDeUI53M655ZOGcqlGW_0sWwnqCGm31i12M0EtqbDH1g1i CgcO2TJ82ifJyTLDRs_L1KTCvQ@w0qKJcL3aWDnevk0EWU4Y0RE8JP6h0P1SGxN6a503r2eW a841sWWc0K500lL3IYDvs60mYJw62iGHtP6W00HAws0M0CWTWLQ6VmK30cdL1XWDGW78OXwS J7mkBfU18GCWbHT1Juz1HWDAe99e7G@14yQMm4ivTWfRyfH5p0ML048vCQEBW52_g000mywT G5iv4mZW722qCaf9qaHQ00BufR8m2GppX3vAR13034ieZkXm831MG14e0mYERXFCQ@005YYM 3rZ9mWW74034O9SkH4OT3VOg9Y024mC50i4o8r02GJ5D3VOgH2TtGT0Bmm_1okTZFQgO1RE1 cOGJ8Z_g0RYn2c4WK04yuPm6g7cc1WHouJ4OJpm7cQeSvDK7m2IhViaR3r3Jp8WDkNUE24qL 51wzG0w9X0reB_TVjWPMOIBWvLTVb0TptXklAWZj62u5O0QZFA0HNyv04De_6BJhuJ7Qmo8Q ZF8WfLyP75fmecn7aayKoN50HQqmgDZFu8fPuZ6DQ6Vyw_g0yHY8CgPy18Dxme@lNCz30KM0 I9iDMLVL05nVXglIm2IsByfZcC280lGhRrN7GLyP0CrUEiCI0mFT_GfSpCT00mkf300OPaeC A0mZ5_jLG0I3KtYMAWDbp4Z6iycPC03NIQPN90nMP0cVO4W4Y1GgGc22U24W2H6301uhS5o0 f000la8C7qGmDB0J1CgCA4mIv0Wa6ntL5bZE_1DP4P2k4WN00yshGCm40e0CvjmG9WP8C23D D0yh0V0G10mNF3JGJOivXquJXazlIWoJKtvm91An8JH@x4WC4r5USOup9Ya6cl3qqf3sYK6a 4FHI6n0DYlLAHXD1fHsH7AWqGmBW1KOoQj8GLr0WHQ4VNL36s4WLyhzUhr0K10mpE1zvNDKF fOZXun03D3VI06mmxa05G500lc4SKau@z4hVCq46RAX9XK8e_h0Cw0Zu9IJGo4WaubhWC32U W4W2H7K04AN1QA4y0I05oei01KUcTRLW5_L1Rg0c62UGC0Gm320KmlAC95WC3u7mBYdyzJGB 1P0vqI7WY4PvxNbs2f0O0LFVVT4W8fXXWCYSQf3GH0zS5WPVALn21eGI00lp0cAc211OG9A9 G00WN03WXV3G4J842WM1DhFW0MLeGWN01AGW0A8f04PlpZmf0heYA00_KSeen360WC@i20cX 9aV61492y50ZJ10f1036j9CGDUm4W6m01Z467905vpcGgBEv2r8O8Pa8V7qwPX008IZm@gIq 8_4ec009SG2SWH4Oc9WK2J20Ga0ILLk2qK2uJzX0DFu_f7uW0QETM4GtItY0C0yDnV0G10mp 52xETM40041WHG0yUIV0G1GmtX2RIUCAJJa7nPWRy7v1WbN03eWC1MU180s_L3ZCm89GoGW7 W100HK8II8v7CQY9bHvA8pWW721eG935u7oN9wX2o0W0vGk2m48uBYXWE08WCa30HGDUm4mK 083y5mYI3WDnWoOWQAS7W19D1vTYlhg10h04yIQGGCJZuN8W1mWS5ivGmBW1KmaPYF0092aZ Ry0uXVGV3kc9118em6X@Lr8ZB@pvAW9CM2YS68ma@HFPULXeSEG23kJKE5qIX1Qvyd0@@mO1 8zF_i5SLDKYy6gFI45Kq_0qzr1HnO0ZA7O6nnqnOQG0N481D9eIX20J0h311mN0Ta0957XUq 8G7695rBO0KOaxYM1C11y1u10W7K12ZK8uN9efmMdX3y3z2Yr4m4CZ00y3e70lE3E818b7vu A_oU0Gp3A0xEzw5Gmrv30K00Ul68kMA0HIPaWsMGGYOqStCBqs22eRmkXFKr8YCNaG4iTu14 8W7_1zRqA7sS0W5m8LjKWAI6ZUOamc3Y0OY8JCv10OvlxHGhGW5Wc7P2s9bWO431c0zkKGkB Iu7kH0CGmZqFdX8UEmVtJAMXW5JqD46vnaAhn0n0Mqj14XAu6XkQAmwSJN5E5WGbo8hc583O 7qQp1OEG4OpUaNm038KV0WoVqhaMReWX3mzvDq3m2gJV0WoVqpYMReNc3qvvH0p0G1Gphj0J GJ1CoS0J6mQCmYs4GGi1wGH2A45G508U4K00pxn0xEcX4iG_005WW7H16XCJ0JAvXQ0R8Ei2 OTtxp5UDG4K34QgXwHrP1SZN0JjuRMe802a867KVJ1m_t24F20ulx72hDKVk1Au0z10A@HFK Pj1rZ9O806QQHe1vdF0Gv7wv7hOs2G3SFV0WoVqxHMRe_c2C0vDKfo2eGJ20@338Jk4H29iP jS4W2Z68i22CvA9GAr700TO4tZE1P6ywOuW@TFDxcA038EV0WoVqhCMR8LW2y@zfQN5qa4m7 0002Ui3O3gdqnSWHCOc4cq@tdHR0D8ry10A@HFbOjXs0E0Ux2WMW0R14T2Of1ixVYWQ28m2n mWuPW194v807OZWvq14TJ1b5WGaTC03W90yhYVaTEW0u55_TZFC06W8xEG2G7WVIuI9a91Y7 c1QCW0B0t@k7QTb0AR3RvFFc06qL_00b@ed@hsGC17eYTx6_GL20K18pJYWYOJD94moBf0dh BZ2a0c97lq4nHWW93ixkDA0NQ00M4fxuC8Gu1_RS6TW3kH8EZ2w8W1MaF0GvFwTxgDKyG1LR HGR740eL3m8EePQ76G0mI66W2UQ0CWVy10A@HlENjXoBE0md71DfoZ8E8mok21MigRUkqA03 YHi6OTtGG54WR4K34yGzpReKW5CD_00b@e7ThsWwniCGm31gPxprGza2CO6n2mq8yNf61SI2 Wy@xfYkDK6m2q5V0WoVqRhLReHX3CgkDq3m2M5V0WoVqZfLRGzOM62gHCctGzv0eWEn70ey7 zyPr6AFe00PkSGYDmopW0e0M6ouBpBGm0@HV8SDWHaGcpr9I6DCKW2_xUIvQ3v2iWtm70ey7 zWOr6Y7e03PEH5AK0jMA1PC0ODc4XxLoL80p@kNHT3QX00z00WNK0n3YveZCYiGG3y1vA4VM 102U71e2RMq4100U99uEe5d41D4I0AnDpO3BWqugGF05GEelL_004Sw8Z2298Gm2uMkAK3G1 u2QUW8ET00Ho8dm3y@z4QN5mCT02O4qy0nSwG0YaHw07u@xlpkxtHZGDKpJ1YXy4ifSWL866 bKO0iuE0ZuGcw6VeKqGWrc0120ieh282KnD2W91D5HcJ8Zkn7KbC0mMKZa9CG4Rg8DY63jTk E1lLGYS8u@xXnkvqXCYSdq4Nm9xcJ905aa82u7tTAHW0Qg1O_@_5WhTJB00q99E423e0zjR3 1Da0@l@J@30A_ZUWeQ3rd@01yoy6o1O1H_F0GvFw9ZgDa3G1myy6o1O13_F0GvFwHYgDa3G1 wyy6o1O1rzF01mGGE07eFoxkne2mV_0050W7o0s4vfK6D9Faf5L05m4Oo7W0r5HGQH48197W 8W0F0100Xe0aa8oBOq4Iw@x@5kqkKQ4646X1I8ZcBZe1YuA2WX5pnQJ@xUrnDX06Cp@00b@e 7rfsG215uAo9DidI8PWT3VegnCv6XC39tmUGmGfwG7DT4AJ1WfRy1LDSH80OfbD3KJWGO43J gz1D80t84Fo3y@UjvF0euFwthiW2I4X0QVE6_4lbOmBeuN3En9gVEvcGoIN80vwsGQ0B0O@1 exJ2QEu0HaP2sC2D54OTtbG1I43dOkPDv@xdGk9Wf_lFU@B1b0HTm9t16rg01e0tMwVg0@Vl tq5ZDDRy@x70WdM1YhuFwX_zD0knVc7GutId8m8nYXC1858yR021Z8fmc3XU0dZ2JsjqjOaY 19WX1I1Zwm800o3W4tuPq3KK7m1Cx14g3e0LC90M10ubDWO0p16H3G2W9ReUeAM3sa1PWbH3 GIHCI0JsWwLTC2CP3gFrnGmahm80W7swZhuFQWY29eV02Qd4190vCoL1CxQY08yRtm7fIS1q 98p6qK5R_8Cc9MBW7CM10ujKWT3Vegn@O0I6D4G406n0mNW_10500@r0K7ZqC_8fk4oCs0A8 b6HGI0M10mVA0x6VGLp4YdW7KGtOGJD52g@_4uF31reDgYN04wVY00CFe0CWTq8_1fG0M166 rCyXg60BFD2SbHq8_2fc4G10ppC0XPaAX8WmOq8y7g6DKFg6BWRKmCD2VYAH4OkjDWOIVWH0 G1ev1IW1ucJKtvpDX9h0S0RaTcE00IaZWWT88OK2yXHHOpT520pFD0L0pg380GmV90FHTd7t 4YyXC1GAO1wM69Hi2KZ4Io@xrnlOa9C_C4g7USa0o94f@txbV9AXa28eIPatq240i3gnf0@S FwS51O8lvxK221oC3mu@z2mN04fdC2u@z2nt6glI25I@c0@HFFGz@xT3kuA_YU8C14Ks384c G10Obe4D6PIWPQGaPSUS0Cul_10A@HFGGjX2AAmNctDyXg6YT_3qy4r3CWWo28Wt_YhuDx1C 6z7y0ev5AWO0JCojK63K2qO0p0cn7OSIL058npx6_8LYB5wFsVohWP41WV0xGNXQ6_8L2yZs Zm1QmHz30KyZUe@Q3X3KWXCt0WW1aary0wLW0oDXaCxSCef0Z80PQWa6RUmJ6W7ZCYyd9cWl mOoRcO4SV08JmhJq0M20A3WDnOOQWWHWPc4a21uBWUO7tYvX0Y763SfGoMM2WV0SmgiRGze2 6HCY0m40ua0@0i10uB0E6WH10ZB5wUOBnv0ub8i9r@wuu50010YZnu4gVESc0oKSk5PgbHkW cCOa7cK0n3GHgpSG2f81zkF0GvFwnghD0JWZN03qCyXg6bQ_E51M0CkitY0BG0Wy4u@Vc808 mf@_1Z2r8XQ46cq@xvMlOHeM6fQ22aivAacG1M4QjPE6QIhSLmcJ0l0Uu0H708c0o3Oqwc7F 116OcYPE6PwHEopvsDTQjOm@xh5@mrBugr6DPWHOm8KW64nQmq0mAb0jPMYJ2T2qaP9E9aEG t0018utLW6teHq4b0y8K0C_D4f93q08bG0j4mBW1E0qZb604HKWjbG6Di45B0W0kUb0y2y04 _TCfDAO085x5z1WB0u3I_Vi4E5wQHl2Qu2DkT_e9Q2u1q3f3TiR4uyp50zWCdPh70@XDq2n8 OOK0mBI_5LYXaceFV5en9QC_S90F4FGTeb0y4y04_D4f51q2RjS4B1nZe1oaG20TN04GoyBp OXa604PK9A6O61UICG8WPq07LY31F46OJoEQWqKsLTEs500GODFr560W0Aas0Ihbq1@JQIe1 XLW6j8Z0OUV2uLy8WuHX1FHz3LG0hhW1KOT0805c1W9fmwBO00Y7514W8pADGbM0YP0u53_0 o80GHHHZ4Zoo820FMm70Kips0ea0u42n704Sr8MXF1s14qe11RWX08W4C87YIW1fXn0MNYX8 11FHz9So64816IK3RmmmM7YXCmwXOen049uJWD08JTGHi4ASfbB01Oz46WMfffS38UGCG0oC XrDW0HI85aMMuF0Oc8M60_4GRaS5mc4Gd0_na2XlfJ6VG07GCQ0O3na0F1F0S80ELZHqpegm FW06Cm_8O_4OW0xZ0XZZe62I0JRGG31Ku9r7XJ0ifL5gRIhmwD4G00KfHHhGyWGW0iP2hJW0 MCYW280CJ8M30t2eDI4148d0_nY2XV4150lp108vUUmn6OGZs4i0fccJN0Z00A00_g8O0e9h O52Q1C2iCQI0j8OK2C10lzuRRy9180CY90R0S20BPUHWJq40ZC1O0IU0C0Go301EczmFdZj7 UoHWw6OW9940mpa0xMw24GT64evqbG030FFq7DnQIc2O4Kev2WbLB1cMmLj4AOQ0mmY7R0R7 240ZLpWg0C9iCA0IsTwaO410F4vRa6qI1Ir07W40g04y29mCy96RQVC6Gz6M61g14j0qy4LG 1WPnn381ALyWC0AqN0o3Z_6OUXe_00W@xpI@bMF3DR0_4W8QGoG5F_nLK010GaXPF_pX@xR0 @8AAfJ70Z80yWx@3h0e0yVV1ud0Z0ZHDm8_l7JzJOF078i@5WHBOK_74W@xht_4Oa6CQ0m@U _LWO04W446D0y0EV0W2GmB02H0cMW2WadL16G8I8oTjn4nxVP0GynFOvs4W09Hevp2u@WB8J 0413Gc0CAGIB499sCXL0ay3Am0C10WG2818aiI9G365WHA9I68v1aKX9jD_a0806nOWX5Z23 D20@KjBG0OgH8W0s6GBY910yk8G4qiKD20EX20_760NAjD0s43JdE0E3XDrH4L0U8U02@_4u 58101l94iqOz4y00XAWN0Fi0edY9mOKEHDN0Y8YwW3AGy_R0ZUm8j112Y714mUqTBT12WC6j 3Z60UFWF1Cg1ZoFWWC88G2R2WL00UD28Ga7W1YGn03RFycx9u1W130UWo72n_4u3m06W90GX wV1m86qBJ1i3w3a90f0evj6W8ePR04WOv9n0WOa0q956LXa0G410Vj_Z0ZQMw24W4YF00qWH u@_9nl065jW140_JvFGoNr018MUEC0@tJdz3LyGTd3oq06HHakESJWfGoxXv4Gc30cCZ548X Yc0GbVG@ukQOy467B4B0Y712Wocq0CjP_9OAWH81y0Ga1eS0W9hv81_@Cq8q3k10mAb7DAGY SdtTwa80HLlVsv0V0W8X0l@6g1IE2zWRWCyvGmple22zW70rD7O61iH0semCqRZvq3bsFpYC mM45AQyFsFlF1r44PwVoqq100eeE00WIr200KDT00Wpf3008P4_lF6yBYHMn810@H_7O03qM V3ef16bO011MGWv24e45I0noJX1en8yV@nqN6ZiZHzm80DIY6D0uj5V0WIQYM6ZSGy0O8WCI I6D0uV4V0WICW60H0XaHoekn7HW20GAPJF0vs62X9XbH9ne0WNB@31DrBMFWvWq0ZV3XcWYl L0Gm7b1no8GaP0WVZ@XbHE8p0Wt5@3WHK4V00Z9m4XDXIcQX310J4nY2D56V00Q4mq7phHWW M6802OYXCT05C@B069WHeyGJGTfXZMGZWCFK9bWvoHJOW4DOJ0i2p_50H4W8IGTeX30mlf01 O5jkDGn7S0A6086baH40UXrVtfJWH60y2XF0GnJH3G8W8o4BCe0nCY2mFWT4pE8Gp7cK0oW0 9rySaaP1I1Wv9CW1u4IsK1h00vhFm0n90C2031QH0g8W74821WWcdPfkJd41GD087ZyA8m0m FGLl5eL01m89CfYC72m40yGEV0CoouZ4062O32c10ROWzPvKGJ0e2Gm3s09Wd5q98aS1P2GA 9LGW0610kGzlD9OWbYT16HWccL8KzxC6nUDac69h12aS1HMmc0O5Dqj2OsW21yQG0q24T3YC LXHOP41WtOuxWcW0IiQLe0W@l3oa0ZWbH10_ryd3KMWCLQ301lZ6CWGY2W0eXF3q40L4eH4e xaCA402eA_1o8IsK0h0avJEG0G23s4WL04yBOm0cn2Ok1Cc0UVC0GW7@0nn840Jxnm2P2CC8 0I9Zn2Ya0D1WA4eRiCgk128r@E0o5s40hKGe05G3Z20y9zl0DA1O20A02_u989OoWC58WZ24 m8085c@j0U5iTW08b@jtukc4ZAG40C2MCI0uL2_1o87miE22WD@00bVkdDlEDp58J57F8682 zD0yYfSIq40dG0T8HIvSE2m4WGaGa1074WKbbd0aSfS9mK1W@X2QOW0F1@0IWwqXm820Uzxl C22iSv0p8eeE1B3YnW06i92maY9L1aA8J0I10mF11fGJ09F02eqb0083pUmZBn12GLw2O41W tszB3Zsn8yVVHolvq3ob024GYC2GZ80yzuV2C2@tZ8zXXcOG8eJ22m@zp8@kn7HWg0y3OfqI 8WC6rjqj80xOa0WlZ@10AN9QWa70183ZsneY180ynnlxv8@w08890280yCuV0G1GmZ90f8J1 aY5uUHpp2026aVtItYH80yQNMU184GAeP4OQ2CqKH@GFxS58o3m0naQGY94G0un2@09Vp56W a1QMwM4GfA4G0uR2@9QKS148S@9WHyVFMq7cu2Mmruh0y3OfY188k022EX00WIlWkYCXGaqm ykn7HWQWCbo8Tdk0AwHCy0u0bBG240_HmF0Y0WH88Y520@W_dE51wmLXOqI6raY1yfV10lg_ p0ZutzrdVB04G0uN0@BO41CA561YHu@_EXl1n3c1K8UB2K4rHdH01u@_AJTfWK288g43Cc@W 9NWCg3048b@00bVe7xjQHJU50zMHWcL89DmF0zapAK8w8ivK51@eZGcmCYAmC0mK1aM0kkXF HWAWPK0_1iZAs41J2TvrMO0y4q0PMmcKoZ994moB01xa66i90MXK@gXH8mJW9FY2Q1C3G84i 90nO1GYbHs432CP0mpQ@X0aqOEOCw9m@VC2G434v1HI19tE_c2S1AZ1CWaNd2I0Hom8I1G0Y HWuHn03IeypMOWv3ZC8JEa2Z_5WI4G9mXy06X2JMYCHGJBn1cmO8F00A7OIWc792Q08t_S10 Y2WiaC1GA8xtIm4GpB21BPJ6Cv1cyvp108A0ooFl102y_v_m8X8Fk2380c00b@etCkE0D51_ kOGmVqlI@35KQ414Gz1C00hu7w5Xh4af08P1Q6GC88o08p2II3pbYG0C22aS1Jo0vG0J_T@B vtfW1MjV0WoVqh_LHmc1i34cyVt3@k8OJ0822OY19tW61942ci0H_@zyVtX5F83WWL0oyf48 2oa0xiWci7ZaX11HIQCMWa1OU_86ua01WB5qTt84G6Z20yGrF8W40i04yOEG8Wf0P22DZGd1 0l0K02G_WaIo87Wv@tJEzVGc04FOGm1O60yKN@aO44Qo0ZmYH10FbvVOeHWH0O5T0T0d0BZ2 XH10l9ud4RkpG68QT5F0F00ujMW0u2WbVC1I2cWPe1I1u0S580U1Wv1NW50@0Ma1P61DN43T A40WFV01m8AG4iCga424W@FOJ7W44OE8Xe0QFaf2zYKW0WtUz3HcP0GW7W4B650yUlV809id p1C3XH10lGr@06zxvP6GGG0480u3N@G0f7WCKdZbHU8p00loxBLofGcoOaKNYP0GE6sn8gak 01G0u3b_TdE161I6bfHvPG08CA3690yUfV2O4@tJFyX9PZ4i@zbu@kn7HWk0Z4memY88S32G nc1ObGWM0b0Kf6BGFzJifZ2uG@4m8_lNMu3JX0BWW@ZWciIb0gX2RsfG8FQ5iU134R2168_@ f3Go77b10VEOOKE6Lr11s@_tvl065M42wcV0WoVqBDN1gLa50USxx_jzF905qA@00bVetJig 1y3e7mio_Wk2CfGy1G14WqCaZWDxI80q2UYkxq9HHF1U1Im@tZaTp6VG0pc0O9YWHQ10UPp7 mn3Y1MdyoMCm@v30K_rU8qg3o4BZQKm0_ql2oq18xwd0_3u1s41DPma1G74aaza@3w1dLSCZ r87BZuGc5Gp0WdQzx08ZbSHqf2uq0mJ1WW_0Cm7zx08Joey880Lv7XC3ec_8801u700DGJ1G Ze4ITk1m8FOo04fR0240yHW@aCY3G60uxDV0W2Gc@L0L1_1edSM1Gm3A0Z0JeAqzY6XC9eHn Oa0Y12Hg0y3O7@VFisjWCLWHJH36qKoOKW8b63C8fzA7BZgZW0aql3WSDoL0yFWWMMgJ62GE 0adwJ140_KbVBHaNb1v9G04_bWG7A02@s0Z_XUygwJWNW40W9Lab71W64cYiY0qa1rn1KW6p 71sq64YFw@T@ew2WNUGt18IQ16uszJAjW2CM_005qw6kndZ7W0wit8er22egH@xUlsD502un l88_06G1u7WTKr8@HFLMDdHo0W0EUk3GXnVZ6X0_Oa1Wy@xPZk1GaIa446bTsD74T31Q0JOC R0rpGn6WC4uf2wiHb3XcmoeeWM0mRFzXmc34F62G3f990GG62O40nZ10utzKiV@65Ga0WtQx x1p90J08Y1oq8D8Nv1Oc2mFV02y@zMOtCsqmnR31k_S34D6HzM0cUjYq8EG1n705_@U5iBkY Fd7qAq0m5DvscdhPJ05uIeZCMZ5K3@G0oyDd1Ow3ZS0b03Cm@tpjS1s8BaMBI7_W0eHFm80M 1QG3HMW5uCe7oIVA44_5RuJ0SK0wWo0u08071W_dbo0m0C0tkIK3PRjd0X0jFI30Ni4qx0DV 0JdR81u7u1CyxUI3WH0GBx2C2usFWt2D0e5yqjDmWNr0aHvGDPCoA61gZ005ppzkIy9uzFC3 1UW6mk1s2m7YU08sUGJt01mA3fx_LJ9pA1w1qAOyBVQh4ejRYJ0U2UG1Gl7qqRDahX2YT7sG k60O4WCIEg92ZGz8WAasYUt41G8v1iHe70Zjh0rDHxac4e7mlmnlufC4CoEW1We104zYEy24 0ubE_Kwy069X03WwHmA_@@116XXVxNDE7Dsm70OqnAFuNOC286jh472U0D06_Tt0D_vxWD0M 1kSxjp1sei1P04r60Z09M5i46Gx@x5s@Get1M219X1q00U9kF_n4M0ubE004pG2000CYm1Q0 mCYyrBXX03Oo7W064i14sGXPmmCYynCI6k4GGn6YO69lWbm8oty41vYW0340YDiO4OCuS4m6 b004004uS40W0kZ0YyOF5YalR19iy0O0W9V010YQn0Q00Fys72z2iHv0OWi3IuS0QWQx3XU1 s869VtY1YQR1W000VOs7YUraym7HG191GW@l7U@3Hl0s8b1mI1OJDsY6mLBF1W16PGyO8000 @CyR0ZmIi5O40210np00o0Ck0cC61JmutzfdFKC2EzMWHs@SWP47B1kQBWHSW6HJ30gG2qmc 6nW6eeHYu@tF4KjC0F0gS1qu2c0e3ivZ1O0mAt7T2c4Ou0V2y1CW1340ZC0O64iXgHu03DsW 6RGoCCPmfNGG3AnI0Zs_SWO40Wl1yPzvem822n@t3h@11C0WYyYcXHi2OixSubM000dQDCD5 OaDsTYb40903Vi13XXD8n06VS36mm7Smy@zqwVq03A6zlxXzVe26ACw@xnw@484PCoA6XEmG 3D@V@B_7LqaG8YmeLCo@tdY@H7DI4Y04P5Zy@zZuVuwL65500Q9Tm7q8UY1ZOWH00_xztkef 5q41U3KG1gtlnymCROZDMG0xmX1ejU0_r1s6WGQha0Fs@kGRTCCeG50QOC20m3E@10au98GO 213Z20U1sFiY@@Vq0qGGfLsGkeD4u3O0mOqI0R2qin6J0C0Wdo_70GG@y61C0RzpBq2O3Fa2 tws0b44y18W9Gp0ADCDc0CX1sqE7OZmj1004eU00WGE500asEC0361WK82Qa6F2C00uHg@Zv 9vGZ8m7W0W333Xs8WVW2iBQ3IejWc4m707A2Cp0D08PeCe5QI0_0UG2HdaC0W5u4jWG3hbef Gs1wXHpqWf9m22U1CGSWQEmmSkngU0_pAJh45kAQCZmOuGR0yqII338H3a2f6e72DZ0@0LTI 0f14D2AqzYUOqCFOm2CZ1ZdW14Z00UbvVlG7_0H5_8W7xrGoOSWuHO0oYcc4o7eDFQqnef1Z cWvhp54D8VUoG80Hi7Q82X0YXW014ZcO8x1sDMAP0aC6n3C5HZiWPDmS4C00FGyFxpb66I4W Q1X2W0vHRMefDOc4iW0V03OEmMnI_26DGBI29yqKP9WOK6ev@xDn@yUE2K91PJXA61R14FN3 GWut21Q30GFF0a8uvMCX14FE48dPq60OUEh1B8m7m0i4Cv1ciWPEmY3KXUknv80XCXw8P0Sy x86HFqs44P2a1CI13f7OWySgeI1ORX56GykHWtcHR0etvajULzN1ORv56GytH0ycHR04tv0I UgCbc2PWiz39FHF@aBDdl8368U_GGVpGR06pvSR000XS6008es0002wA00GOo300Iec4OIqA 4iEO49DA0GksiOCHA0F2Fe5eNGQ0i2LWc2mBW0q6V009CG3WIUXHz6hQh7GlHplMnedGFWZX Mr20cwOaOK3K710A0Q_R1esu31OsW6AZF4WPAnsY6_130qovHBRy10SPZF2WA1nZG2__S00I 1msd91y@UynF0e08uPHWqcOl04qC01SEQA0V03WWVnaH3R4WWtJ0YRy0uXe0D5q3W@g5QK1D KBw56roqeWU8z6BGJkqc1QnaclqOA0i966OzfDNNGOFE62HgOaE5Y7@sXHKn8AGFWlnEe30c HO40Wd3w30A00Uw1OCfH7Z8WHxVFJ@VM9E2zWSiX0FW3Os07N6q4cP0RTRKNOc5iZOKH6H7Z W1QPP4YC20mxF@c5DPWsMRe8ZaM6p26P0JRuZ0CsQ3bXF2m0WLs4q4lE4GOK4HRY95GWMZER u30io6V20O2n3X46rvmWcYAYbYxAWCfn2ZWK8K_B0DtLWbpTEfXPHGOQQfcM690CZXQWUa2y W3TpYHY_SXOKM610uBkSW2KaH8Rz160H694Yc5Co0smEFBZeYH00_RvtCe50CZn8RbnC0x@x v6@005RXsi9_KOD7Os0dov1Wf0W7Ev30Aq3Q2Oqad3IZcaH28f1a4Nn3m3a1Q1e90geBed5Q 3yfwIx85XolEo8OW6xOGcqEbGK@RK14aKW20ObT4zh2HajfDfW2iYHnGDGF21Uaik7OJRin0 ci4eBUeW64EmFqZXN9Uz848eP02mSqP3V0W50ZaT427GW91svwOKi148B_d5QoW6UCQRRCBO 6OJfbXCWb901oEw0WPC6v@xH0@0WYCZM0G6zvoo8HO40mJ8_dfwW2iH6p0i@lN_x30K06Q9U EMCIXG8aH00_tt7CnE4EMUT3Cm0cC0H8WaKwS4YN03CW9n@S1WPCIx@xrR@1GJ66n4W1dpdD H98oJ19aW0sK3W5ivvnMWZ0q89Qq@k7J_XHyOx04_bk6n1eV2U0eWVGZNqOHy@x79e60b00m vY6qcF3WPfOHR_E0cPZt@@G0e1o8XO4oEI9r1W21ecQ5YxH@3q0u5a7z@ktE_1bHz2TuFCN0 3GWH8oe@ldQyJHk058NZs8N02aWVebBW1YWQ0o58135Bjv2SW1W6461yHIIT0aG0reMXUlMW 2KUq@x_au7I6rBqX@GD9F362Ov5m0O0DuEIJop0W0MU1001W1kZorXWOT88C738@@GeNWDgz 62uWHKm8PY546TWa20UhhF6orzmmYO409uw586HWa20UYhF0GfUe108sxSwbM00mBf300AO4 Ga7xe8iy08W1C24rY0qom8@V@s_7YUjOYmhs3CYco69Ob0U2O03CAae5R_E020In9R70L30U CkF0G1aj9mc3WUu6oir3WleuN0OI0CPsw1mJz0wHJqJq3eo6YU0Cse2C3mDQYJWU0_32HF4u 5O0Z681Y@814m8Y0CH2pOX51OXlNZcecaL2u1u33XU0633@_4w1iC0Loe247ZaYH00UVm70e yDeZG9Zc880R8u1u0wIiH348XLcm0m5X3DECYsyv0410Uks70eeDe7Dn4R8me1Mjp5ND6iac 4gteJ8e0YLXH4fiXGFWZL3019wGWc3B000aymUg0OamoNd026bV8qBGod20300_0WF4zAWuN W0MeYMI7VFTWHM1R8K20ZeHXmfby3mIqum80W7DxNhwv@Fg8DGadxmeE22JU02mQO4guHW1S Z6d4gBe96QX3jHHZ8mF01453P3sY0RAqWZH31_06mKW10upOV44F20eNqX@ZY0_3AmwFqOj0 9GQePm800YT03Udhc2g1Q2e20o3M0NL234lSSO0nZ30UITdD0GoZRn4cy080HZ71CCmwOG0g Xce2fWeN0u0iYLqcSe9gGC0wnInX01iq6UO5wrjX6XLde5QcA44_rKnZm2K2wno1e08jn3G1 Wvn9W005x1ZjWvXj533lUEwG0Wu5W3FHTd7GpdJWuHO0SZse4Ype9Gy2mXkFtee56C47DuOa s0RImi4Q35IA1030uPh_48U40mcd7hw1uF03@u0K9504yh9mdKNq8WWu3O0R303MV01QwX00 0@f2S8qYw12VZF7aTSm0AO43CE1Z3nFW12G4JekB60dVDdHR229qt0nlDy904HAqMmE2X00y 93G7YN030FZs60Ci_0IG9ZIFW074zq070K0eyP3GoHZe210uR6mS3Am0OjX7GHUTBM627jY0 V03OCme2_8y38WARWj8O02_0CWyW17Za5OM36B1RAW10ygIVGOqEdZ2Lyql24FkSG0nl5018 GW@il9lIbA0IUE1eirJr@0Wyk4erNO0nZd368_x22e0zS_Ooe8u5W0p3Cn03Gm701c5CO05E CoRmu9OQ1C0WtAwJWuH00GS_sm710XD_40cHWt09KirJ80Fa2pThKWcA2ni7E0EG@Dyv8KQZ F0W1YPmL60HUk7hW22CD_8W4PZt@@O0e9eU_Ds7cP4wv7Pa0_F80E652Z20UaYFiY@@VS0q8 Oz44W1698XUBRON40WdZ0jD_806jGhR224r6FKDm1gK84h6e0Z4BEC20uzT_00aYDtsuZ0WA 2U1C0ECIiCiC_80an0BV82oGW0FdF1Y710Ghv931JZ72B40HG4114psmd0O88G93Wm8o43jC y906BYMu0RKmmDOC2iIENI0u2u7O0H8q0Yd07y7zlura0W3nJ07YG8w3DAEVb5CGylnX1YdR 0y4rTU0bQE2YF04W1y3u10WNp0Y0P_uSYZHuG37ZC5Q3bFG15DGGG3400uRK_WOavC7O6Hk1 004kP00W4K41q6V20JuO0IXK6_4010WNJ02ayH9a0ozDU@@31_5kbCC_8WW1WsWQi5CK6V40 34W@W1WmlFXU0Z21GFiuHO06Zn0g7meCJ6umeDAm6DmCD2n810F0HAKWtWUGRiH662_00Wsu Z0OM6_80cnn0R5fC_806u0M9GBtuVm3AWj06PEWzqv8G5QWzY9OWun12vCZj18IcdQyO8W28 I8mxW0Gmw10W7IH8W98OTFGGZE488r7m08ZF2WX0PZZHG8U44m@tBEzHIIQZF20HRup2CqKe 5i6Y@IPnqaG8_B56JamcEG3Px7GU2U@vmegtrvqWvKG5DmkCg3Wms0GBpN5334l_SO0np70X AGW_BF0YyawmC0514GoZxm4cy04WbGR23j4O6m8gOELgW6iN88A2WmRpOR0wXv0G21W1IdFG 1se10ioVqBiNt6_8022MF13C4yrBGWPFNxU5A8N128rvmn8bC20W70SW0U3yW6WMquXm0Q2D D5YzGlDy90691Gc4w7xLfh08bVedakc1X21Q6R4DCNswfwVCqFb1G0lPiD05myjn71meiXc0 ek88Wud3Kk15WmVV2y_XGj14u7xhNhBoW1YdF8qtCs60tLE2nZ04I20NVUs38O0L8aHGKhab b26PJsD4G06WU0ujeGA8w30E4uBWV20FBA41WE0iWVq0048qhZ690H2WCFfE76X0gCmw2m1y 5DO6P0qSaw3CWHZF0oizGq0890FW@m1e70UBAa9WU8u947MK880zWuHGEMaGC0T6t4OHXG0q 4m32WP0i8Es0Wba5D0WOwp5WHGO4eF76rMWHGm86OKX2nIZObHHO47oUGOqfGMGQX4hgOW3Z YY6KWl0wH0u7GFKKey5DA61cUzjAY20GAu3Q0415u7WT40VC0J0aHHXWVqlxSWKN13C1u7u1 l7DBCQ0quQyG807Do8W94q43C3Yse0JOq01CY3C8en3f0Fi7856aDKmdWTGGE385Ym71xWFi 9r84OqqE7OZIt313mm68OtO1m8G0_@UI0HZWP0G0G0FSUAWeHmC0808W7GF5We5O60200GPW j11y0wf2WM0pW1ZWx80G046fyp1o8uxS1GJ0691uF0090j4WFW78IqI0U1Um8HB0Gc41B06S EQ22i13B8N9O04W81u@@114D2WH2581yFuX0Y61m8X4a0U3yG0YM0O892I0_0UW0HB5480Q1 0Z20Jyp108WxSG0XtdF54204B0csE7OZCGQA8D0grihB06Y8QJ200Yd270nC23Zbn04TaXEW 2V4mIKmd0UefG58Q2m11vOeYgVQWP40wbcVz4y@ZddWN0CSlp1I_GRDG0gFW16DUGD70M16Q LGtTm8089gK203lmvej4Y6LC1LEeRY6F560WIunA8ex06176zkpVYU0C208PAz9GzfxyXZt7 24WHc48SOquf4KWMI7U3D8is4004F580YPOWH5Z1XnAL61XH2Go@TlK@B0DL0A07FG6O4WL1 t0E_54WCwBWvHLH31F@kw8q3_1UPQ0420nhY1aW_3ClWKV060ZHone1oCZ03YQHwOQ0G2inR X04ml21F@ko46T4z0@0t1j4wBWv3MyW00Qq70oF4yyRgYKqGq3y16Yw2S07m60WGX_2OUWe_ 06Gxp9GFPXF2OoRdN5_8WdPeV0nRvphg2W200yixyMIli02mWH18r2Co@txf@Dm8FO48CADZ y@zOwV0qqAfb8Z28J0QKYqGaqif6R9Wan00feWkNe0Vd1CCA7ZwMc010lVmV0ORAW0B9q6A8 JY8@v0peBG14rI0ZAWRAeqmDfRW0WetKO9ePQ3YeL100lD_dYuzFDrBQtFFIK24GEJ8D0gLI Hi90I409WH0Yd078GyK80fn05o49XKGQHXF1sHHX04_4OdyncX5HWi1OaC08WX5fFi1eN0Ra 0IRf80HjQI82C2k@21ZWOREqT4W@37i0qOmeD1m6Pabq2HVE8l0qt1vfeG20w0014zY1Z640 44F52OWu110Y0Z9wGc2f0f71B0i2yYEIXKWqI1V2w10hekeZK8vFD00vypZlY05fc1CY1ZqK iy8svKZOebDqY2VY0p80B8y92GmfN80n@txWzXJC51MX0h0mKCOi7h012Y8rooY0q5huGJsO 95_c080OX7GF2q42Vc0306PamCEOWql51242Gy@zmJV06116X6n62imsD04YW2Z88400FPwV Dr0EOQ3D0KXtHJ1ZC@S142ACA2zPmzw20Aa10mNb_105S3D1Co8mS8OLxSWD2yr6WG64MTO4 5Cw@xzx@b0U04I9m@dW2XUm500YyY6Wnl1XU0dW16XXV1OoA28W0e24y9e9@Vl9yl0Z00Am8 w0sqSX1WD1O5CyR04H0H8JOpAiVZ52PUgwDSC3iJnYl61iL6B0i4sa6W13Z60MmtBQCw@xbW @0Op04XCXDdm08UWK00UvyeXGcbgU37Z0xGb0M0CJ2mco0Zqy@zMh@4q49QGHZ74OJWZ7824 WCdGV28@m0IXX8NO0OoYFFsC3oLW08OK4C2IZy@zHm@2y0KGZbj1e4mOKOGx@xbr@d8D2Y75 6y4u1m1x2mumOWuHX2ON3S16Ye14F5CeOm2aH84FAA00nJ11g2V2iYLuZW5c01ImW08GOh3X GsWX4mGoQWrYY3H2ikG4IC0I2_8OZdek8E9TijIHE8Dhmd0xe11sW19mWi5HEY6mwYCan0a4 uJmAUIzHu4yOZAy90FpaBHCIAuZ0F2u72e30h8VeJ6_G0NSQ606ZIXH@VF5_F0Z4eH68iY4s ydR8Z2G9WQ4ECIq088mHEO4gY8G6DJQkmeaWM0peZCc5QTAa1wUB04GCwKeznDI6v@xPd@0m 20D20nJ10KeR08I0o0WH4ju234ze0aRG10OcqOGyK8WD1myOS1u@W134F58W3enSyWm104n2 eD0zPOU2f_0608yHmEH1V2M1Z292zTGUoZj00JWO5GDhn3aC2ou31OYn8@VFey78ZABWW4D8 0Z214y9O7ldTKP0aWvn6zm28mJCacAIRGmgeHim8M941QJIZKXHEOaICY26fD_G0c2iE19GR y904PM4a@D0ny@zUq@deUY3OOC08HZ2Gn200oiAI1Ih0Z0O42XF1sPoYeFsZ203Y75ECLH35 OL0c76KCZ0cqJ5faqGq8lXF0mm32i13c7B5Yd25GaH0uagWF1h04qY01ImW1800Ca03sW13i l02mWz3GC9d11MFYs6Em5CmgYI7Rd0ctm70Oy13T0Qin700fWufe00P40CP4ZK5_4OZ10a24 a06aW12i@14JWrHXG21Gem71FD22sW11i@1Y9Wr9nGUa8G160i0ef3nZ07aJH2aTHG4esppL y0yW5wUBuJ0F6ANjOq0WN_018Gd9aR6nx@SmNq0i9CCQOu31aLdKW7XeMCOK02v@xrW@1O4Y 2p0X1XU1seIXHW3fP9Zum814F5200Ge0Q10c98W4Ci164OVE8@0stXX8mwJGeDbL5CO8X6OT 2C4BCA8yHmEhZxUYrkev9XEGRp2WSuOxCeJOT9CSCg642a7Q0ne0Yn@tdj_r9D74F32GI0AK 61wV@SyF7Z0aHdme@ldizBkp1s8I0@06ebqJ8m0KOKBYsK8u1qON8F1OP7eLAQ0e5NWEqU2S Gqs129W6AeXfOBmeG08mzGd3ZKn80Pq@k@V@bZH4K1G1KiVx0n96Xzen9XW2aYHgq2G1UtV0 C2AWf0Z60OYVk7KQpON80_43206vVtBu@EmeZTEG618vZJ8@Vlu_70Z0AOH1G0ZF72Wy@z64 VY06XWX0m86O4O4and40WxvfHRGG640IZ_WH34F4409sdpOQmeXP@u3m0Z6q_2C1flGOhFc0 2GbQqD0X8WHs20143D5QVS3ZH_@UgqF2RA0HmLy9yW0CQ8X9GO2fx24V2981I6JNA82OCA0q 0pE_@UTyFH590ZgNq9iE46W86DQyGeWJ9a2Th2y3mEA8II080b@vbG1O4wZ6XMCAW2ra0IO@ S04IpPaOWd64MMO4YC2081GA00UV1q@t7dzD8UB4W5I1ruX01CwtGWt19y4uX81KZF10dnVz awPRE06Hi5XJvQ7KEA1S1_1KGJ51rVVXHcfTcU48iC4cy080fn710pOH00_G48Ie14u3m0BZ HDj600u34W00Y0Co3m7m302_51u8ePur9W2QZF20H4mFW094G0a1CC510ym9G1iU1B0WrNm1 vM40c7O0k8QSv3bX69kGXuH00Q3c91JRup04LTGGqP5G_72q4kG4ZAm8QaTGCIXu1H1H1V2s 13Ti1NK6V803smd0GeC_C046osIe9YEK8UOKWom72OC6QKe3ISXouJ1O00UX588CA5Z05_4O bWm71hC6qeo8h1cGGJ9mayw70W7Gn4OF6q4FZ8o8mHgFW163icrG00OIWuHm0@V@sq76Zgom 0ZX61MFX0AiZ08Wn0WFW1aaw3OWn0ZIWXWO62jq08mGW10Cz@UJmVuE74uD0079ZSBoFtldN L6DBYcs0RImSyvHm8@l7R@R0Zi_SnO40mq@xPs@6m80GnEGF6q0DU88m8WFW1CE6QI80Wd@0 _YF8v508Ve0SYNQFW0SaDGCA6Z2CW04qHGmdWLqG7O3V2Wn6lC7mU8R3Xc8wO9maI7Z1DAwm QWrWE8v554zKGR9m86Q8W6r032r0Iz1D4VW100pWOa@txtz10c@VFsq@HdBmwAOXiL4jSJRy P08kyHx244nW2k2x9gNO7k288CA5ZybHGblG40wS0a93Z00JM0OFTkbGR4mF00I8U8CWGPGJ X_dzXxQKR4qk61PjHWaNN0284y2G0j0sYWLo0123D0WP0mBW0IYw14Wm0xVtlW_SvyWOaC6v @xvL_KP4AEFeC0AWjvJ5Z_o8DSUGCI7Zy@zlAV2Flv02I6W0OHK0W4JXOusQ3V60nBVeTt14 u55Y726eDmc4C5Xz4UX8ZKZHPqTW3UHPyxEG1BazIT70XNK6VK0JGW64ZoMGYoC8G0PACv1G 0AiU2600CD9O9Rz048q03AeXWA3GeKE2y@zbAVaDtKeD2u7O0VbnhC76ZwBm0Gb@sEVAqeGy We0bn76m86qGW6AZF70XIpJ1G27T_Kf04XPF7O6jWH2Ie0Cq8m30W0Yy0C0WKFQmTizWVkDe 1M21ZX0s307l000E7jWH91G0Wa70001j61U0G4HgBQwEczm370s0OF01lWx8uKB2Cry610Oa H0M_tJp_XLy@@30W6EzE2Q0Obz1zAW9@p1cH0W30012r6R_S0200@cu3YUXGjCOK706WcyXL y@@ZA_5CbDQY6DnHGFWJnYV72z0EbH3SK12HlPlGWFCQH9MWHOm8BOq4q3m@A0qncF7W00Y8 m800UBa@e925ZeL_E01PCQaq0AmE6blxBl@IN80m61Ho090Zy10A3ijnQR3OCMPWetHR6e0Z 6O_E7OZ4aw0aAN14m824j0eP1qqaGI0D1C22u1Ikk0S9WV0F8WOmKiBWd152VG3i6Wx8eWF1 l8Ay9mFQA4sZMKn7mCaUe90q4m3mVa7q00YtFV1un_vWes0il0np@xBK@4O4yY5AuJ0FfDG0 D_W4gi1scGb0Oq1OR1Z0W83XF2MH9Wf5O0n88qB0ZaJ412eZDeoOW1_i72O8qXb0B0TGYA4u tX0sIW1XOCtv042zl@3xZ_vHBu0Ru7se5k0SrQGVu5G8eztz9ZFBYTMf1mAy1QIi4d21XVf3 Q80DHMYJ2Xmle5j10T8BL101e7DQbF3GfdPXXHXOa_ldS@FoQAmeT4BC694rmqHreEGA0bGv 8GDZce9W7GFuHq2RjW4B1nZe1oaG20DOCoVtZQ_0OanCMei9aOXXH_VlGp70ZCAPU2U0Cme1 o@xP4_eO4uwj16j@vv0GWAodNd3ZH29D@TlZvRxp1EV@6oa52T_F4w5kQ3Fm0HO40b7KWwt7 so3Y8y03YHW1ylFin8aX4Og0610801C4OK46H3ZotzQmVM0g04_XDBWB0GAq0w0610Y01QHK 8iCT08Xa34gG4Gw05Y0IdW0s80uVEv08KX21m091mM00@pXeG1OQWqW63n440L82CD0sWB48 oGCc1m1u41HC4p8a1W1u61HC40eO0etG210j4IOSd317TRG04Yz9m@FC00U5WB0f0Ve7Gj@V lW@t1yAqGIK3CoDy0mLxJW@V6m4zWZDEKN4KrXVvGTJK5bKdX7KfwCu10Wdtup2Y2KT3OG8K dfeCYwCPAeKN0rWXVbIT3KJGe7m8C4z0Q2SW6exB0dV2U0KGusNWoP0y0G8mtt0b@4u1m0Xl @0iYJu1m3OuNdWN0EGgu@d0sMF0_Ziw14T4GwlKdJEqcWCQT6OWGKtuG4awL9gdKNnW04rz2 AFfkpSXsurF38wNUh7ulv1izDU0y42_zBr1b3G9U00GGhJWeWhN60F0Co8r5G00HT10GWgFW 0eTTSHWm_bwrnG11HT2Y2Sz64w1CYOq8G0y0WvN5GK4lDUmxV10810U022SzIiu1W0WmJDqc 1Qi1t48UA80nn3Y20GV5CF8qd0u5W_5GUWKd0040u1G8X0F022YrDDSXGV2idGhRW0yIT3v0 2_54rDDSmfNYZ734GSS05WWv1X_50l0qdWu0G8DW24Ky046m393K0vTIT2u08qdWvZ6W03fk 0684zH0y10U02I8wJ0v1HT2000MVQuY3W1K2F0UuXe50y0m8W0GGh7W0YWU0_12_D0USFq1H T32Gbm3W7muNmTq0W70Z8503Pz16m4q3OG04edxXsGgRW1Wxe87803gFXgmutE7803G35r3o W_68mG64je3KT34G0W7WWy4y000uwj602OmlGmeCCg702a1qKIT6UW0H35r3m6J4TbKdX7KG qIHz1i17@21Zom8A4TWv1SWWWtV154zWBWdI4eWE0C0U10dUXhsK9umfuJgrBW01g_0SGArD GDFHz0Y10mZ80VIT3CpJW7mgKawJOYXKd4Zz4r5G45fU4ge8r1HPFHT0CX3m3WWwK88yhb4Y eurF14eUWeZ0Il54UITo8WjqeirDG1Rb1G1UYU01nJq30Mirw2uWwMV0E8oliLZwO4GgZ10s AB03Y1u1S1mMn0K1E1OhO0g0t0K5rDm1O0zJKlWAKawMekdKd1My4r7U03fkKcx9r9i0VHTE u0mH71w1y3B4TGK7W0gHW0F1F0OospJ1W04yR0620GwjG1@O@hSjsrD034uNRNd0Cy5rXYXa BKW3m30dSITH435vMa18Dl8gRW3QqS6wLu08yRbKdX7y3zxuLAL73FeGV34Wc@e7DlM9rPu1 @HV9U52ZaXHiuyAL73FOGd34ecVeN@k21Zom8YSEKnGaW@elOk2bw2YW@GV3lIAr7I1@HlrT L2d@4y_d730Em6r4A140SWZ0e0DXF1O_9r543@HTsuoJgF46mutA08W6G35r3Y1CyhKKV864 fw3u11_5agBW7004mT44Y7W7A1W0OzRc42XV1fGiuNilmRgFEu02_sW8eI04Ide0ySGqb2GG 804uwebYw3m3gXkBuJ03Wx82P446HCZOaHPOanC20W3iH2es@TVk@30KGolG4F0U80zs4_Ge z@TFz@ZXV30800Ykm71x3iHf0O0r@dcK0Y0u@JPA0Hmv@fC5W8Gy@qa2m2UIzW8W4r309gWq HKjte7FpDxw4JA9azJgBuH62y0CaXK7AJ51y0ufHel0m3ZV1YGmTKE65u8eKN0mKWeZ0U004 2_zDu10Gm53m10sebahGv2WKGml0W21W_9m@VCGme@T@CzIGOPdHjaE0W20mN0_w6V20k0mY 1UXpHjaEu6Y26rXHPwJ00W76w3m_AmUGjF1ZWWz3WP6mfvn0NhB02IRz1a0nf3W4x5wmDOO0 E02y18CWG0@J0W40AHYm2WKQET0K45Cg3Z0iyp3G0C10hC0B1MUt3e9CQGZyWH0e5jY6Z2bc ifjU0_3WW@w0zFBKwN0612ZmeVn04W02fKo6zDGyJXhYrW2GNiu1P0NeV1aV5zDmyk2eXKd0 7i0zBOVFfk5I27ZaaHFHT3GApV2g0W0OWaWC2Xz1Gzume@lNgy@4rtO83fU08gKXWGsaA35Y t@wG0fBL84_h2Y@VTGQ6aPZaC286zlxpYV9P42s7WxLWHWme@ldZy@4rNO8RmmGKFWWyeG58 x0wnYP80f@K88_R0wf8rfWG00420NZ2X2ZEBR00Y0CQ0F1Wa10okJ701OXO1I8XjUG281OxP Z0aaR0094Zy@zhWV3CYjr3eV06U32uRW@lXucIUI86@56Z0XHOyN80240n6zJEW0mk_0K08u 58WFHT3G2lRy4u3G1tmmJK73a0YHva1A1uF7ZIDW01Q48Cw@xv3@FrQG3I8_@b31ItQ01L0G Gh1487Z0XH@VFttFds080_5OK704O4_VgrW4WOH5qQm1mi84RDe0984KCAppLRz0w7WXdZ0_ 6u@R84fKdH5e0IWW4me@0YVAkGxw3G1WW7Z0EhYevtao9mX2XOEV7u7wnph182eCoEd3aGD8 G00Mv9m@lD6moVPV2lQ0E9tG3G9g4QChFK12uy@vIBA5z0358eWVe@FlQW_KmUb5F83u6z70 z7eF5a@6C0YHoneLe@0pRYXAma@Vl1t@9gR0IonedeE68X08Hm_0KVl14WszBWcJmGA268Xi 9mc1i3IpW0JIWqAL81aDfP8BF8GaajHB26Oizpf512aV16r101mS@2ev44qYG10AmYOGs1e7 0pm0I7eY28xA0801Rk0zLOV9lE08e8rDWIuuSygM00ylMMI9C_B261WHmulOW4G89615y3zq vLbZ78200zLOUsel0Y@6z90z1Hz1Gm1whWv1n8hel0a@9rXnHQOeSCAv02OWa7mo@l77x@4r Hm8vOaDO8GZOm_0aPG1SQV3mv8CaPW188RAiE244x01cQQoACu02iVEP1G0xBmeE08mDxRGX 19mGXEGs1q38M710CWqCKe0aT0z08Y8q65fk4Cw0TA31WXXLGW4C856s031iF0gV0xBmz6OV 0CV0xJ0P4mwN0a152H@MGz0ic2iE43XJXQmqwABA_50Z4m84OT08q2wJXuLaGK_B00P0m700 0BMvu10WGGpV3y@D4E5Yn6BAeA23KYvom8xClY24G4HbwSWDAD1221X072B0A10ICeHDBT0A Y36L1Z0O5U5jY4wli9Rz0w7WXNm1_6u@R8QA4ZT2i0MLgcQ8GW3B0DdZ743OW_SG_Le@0ph0 zTGz3fE1CO1wxm_UIzAa4C6L@11A0f@TFTwd0o2k76Zy@zdI@dKlB33SgG88Roo8143SgG4c 0I18B3oJ0v0NfVIf1K03C246z@zOK@dwo010TeGA8x0upGPa0o1yn8rJ0X0_1_Y423Za7spg U0@nVJ@6u@R80g4cbPSX_YUrmCEWX2XOO67WBe3W8GPaj0N4v608Yme@T@5wh0ZgD3X2uDWl 1_@62RArPK8DaXG2K08unDWFHz2G2TRy26U2U1emJHXaWwpFd438Wz1QKY14G5zVg_W3OgG8 8Roo8A43OgG4spG18B3I3bu0QdVEHXKGz16u1zVg_W40OH5KVm1HXK0VCIzeG8G0W30G4mes JGm1msBqX@H@l2GjOSX0XMvKCEGDwBWujH@KCAm1WO43qN1plY_fOGWBGI335aHAGV5KF1Io 72AGb@Vl8pt6C4aHXOGGb16euy9e4Z5GU698_@p1mm@A09R31P48Cw@xbN_1LYn2SDV2AnOX KF80mPCG8670uC8C4Z2KGdo4YHBSOQT3n830WoRWMEF008r54o1iH9AxDPXu6KmFqJYNBGVA KloY7a1OZ_3WU3qd2o@Il9BOW9@tzKaVj34qRY140I4iF0sNQ01AA@1wDv0cAK2oMWD5mEa9 31cCp128Gsa9ZiyW0HIQc37WUypfta2oSm0fa@0zcu0V0AZUJEWF0b11sSXUJEWHgF0bwsS@ h2bn5iWVClqg8E0vPeapbn86SEmPUKWcgZDqbMRAZko878DvDoA30G9docREWCrLa14wy68p fCsApOq1WYe3Db9dRAZEGA2e0000JAY8Gk0u00CtTYHdfGNOkXimOpRkLM804G6TGIUmL6v0 XAb9NRIpjmm60042G1V0WGT074DW2CwDv0IJbnjw08V07CrOovDsO30JLcmaRCebcRE34pyc SW89e018W00cAY8p1IOahCG86RfnjrIZRd1GU0FGCvAJOh1GA0EG8sIZRh1GA0986GCAUW4e G3000LKP0W60IJ5nfg0P5W7eYAWS501P1e0GWn5W0oLAJCGCLPonkoaBCW5c2eWE0KGCk02G 2oDXnsRE34gKsSqDBG3f201PS14WmKH8QEGg28Yi0GO602AHW02zMOaZCGwP81kuYB11O0hU ZDq5sPAJ7GKIDkG6p0XLWeW60O8r9dSApDwI101j548N1K00egCj1NOaBCwKdSbT3m16hCsC NQrPE5Q8Q19m28GzdG12ojy0oQb9FGepRWC7wU3kB18GIkPdmOBDa1oIABFGoF01W05RABiv K685nDwAZSWabtgJEWC4QUBjnK68W04G0fq05CLTZPiocpScL7sOBFW8NPYhkoC7TbXCGI2K W46o8Jkf2CO3W3KsSpH7G00000WI8pb30GO8W2a4KWG7GAP5W5cYW0000001aW8ZHje8h22J jiaae2aK0EWHoK4h2Yf15EO5W20rJK14x23RrL6GIRku4G8B02YJ0Xt4G8D1461u0Z120000 qG7TmHdNU10o03O010p0JCB0G0P0107L4L010aG5LGvbOS1C0Wq4068606pRkHdoSZEjGNUW hCT020qfCyepBeHdsO30izsO2ZkqycRw040GpRpH7T010De00U9DtGMPun5qeJRi1WNe16qu 2QL0G0fApCb9NPaJ70_501W83CW1adiK3AKHX1q1awa4Kl4301v4SWxkxEkCNQ6RENCNPlml m8JOjzYwI3ElqW26wDtuMPZrEW16ZjtCNPDG10GAL04G3Cq04dU3TWOctgpDarW2t2CaXUpj y3Mu_W207RX9DtQW2DemE0KiT01v0WXncRkR0mO102o1O2frMOEhiN0dRdb3G6EBDpo183g1 NPp1GXmW3EibsOpDKWNURCqL6TQPEw8NPXfj6KG3A0GN36mbvGx1W2W6Tj10N6pSp10NWpDd 1WBEBDp0WBg1kp0WBqX7w0mb508000OcqOhCjC7T2Zkv000W2l00GuO000eRCmroOTAaWv0W Mu500IL300WRbjD01N1K00O6F10Gos000qMTib2G207l00G6T000aJPXnsoB4e5o23TX1000 WUu5002o300mRifCoQ95W3mGU10Wqz000KYQg303nqJcg8Y0mKPnfMaoGMHq405OgYS2L0Ka feA82nKIc2fYG40699dQnL1b4gQ9cB0KWC0C4cUQA9vqH0WgaqKHja2010WfWC5Lj8eXM200 00UeJE_m3T8pdIG6FlWEoyv2W2KdBbS0m1qfawU1G1pnpB51am50LOCGAnOyyI704u5waZFD eGA85ecwK8202m3QqfDsy1FeLcm8p7yGNQeZjoupKj9CveZPrDdqUpDWKKR4hCoGMPaLt21c hCvONPoXdNeh9W2mpBeb601KW7w4cOifCGkJQaH7qwH4u03CAH4GCMPiXDu23Pab6tEh7Y4Z 8X0KWvWBCZbcRX0OWmOBDdvMF4PiosEX0Y0oOOBivCNFYWEnOpNqL6yeJ4_m3Tx7K0G6xjt0 8WRz82P41aq0U0Ffrcp0PEoDMF4v5nyZ8_yRW2v182VuHC_qKTN_q0UUHi31OmBq56nOhC_m 3Tt6m0QW16b8284xDvGMPof7HY1Su9Ia1fK8m1g1cIo8G2czcRe3avacUbf7HQHCYu3U4p73 XMOSpjom6FlaI01@0GmD17WEo0PF0HOLOifkouvE08wH02_0rRlSGWqUhj34AO1d3U603WKY B7lGGZ0Wy@o10XdNU4W3j54FH2e0gao7Wm3L8odYW7TbHEt23RWGboQ3Eb9NO7xKWqS343L6 R6BjwC7FlWAYy1FKHKf07ejq83PiL6VAn5oO68WT8Us1e0lGbKV282Z23DoLcRGhiqG7FlKA G6CYdN6585BL6RiBDts4O3BnpBjI0IO6ny_01ahDVmJQk1kwe38qb7uA34z0Y84gEwGtRkH4 GiRcd2q38Y0ftQJPY0YtSRCibsOM3aU0Y8t9Dt8pRtvoTE8m5qaJPcrZJIpjqSGm9YupQ44S B01N5Wm706G1UUXOlHcyyXdaPAWFA0GS8409gQ2J_m3aAAex38GIKnaYy98ZHNPO3afw3X06 LtSzXGmQ8BS4W1uffYGLGWiX31QfiuKNQsfdXUB863GLUmfCG6R303qZ8q5Q32s1anWMOoPk oeJFtbsU14OkMYXCr83HyXd81WWKbP6vAREe1oO72S0PyX72z4Hoo7UOqJIf9G2R3c2qZSb9 Cs8JOq5MoC50asA3Tez6owvCbHdFuXgW84J55un1@TWG335OAu2hXX2438ZfCsO3KXHMI358 6Gkxx46_PmWU6CWFyGry0504GuPF22028WC314raGWfWBCkrZC0XEo02F_q7H1V1G2VuH8_8 LPBKGWqQhCWGKOeBCG02HfPEuOJOvn3XyX7l8aF90OGV59u5g4A1X2y2L1H8cAgvWBwDfXA3 Ouw444ZFy49m1bOKGF1Fy7m1k1cI8YFymedS2Lpb6zAh7j4ZFuH8VcCv0l4LT2pDwa6TvzJW 1B1GGJ17Sc1432KGe96K8W1TcSmR0F4qX4VcSnB7PmAUU9HWFsCvW41sOo42c29b9J8kC194 sOhfCwc38K9dmSREjb6TehCoA4m2pO3Fz1e1fARCfLcTt1W1SiXdHB0vVZ602FKb4W19f8s6 1Fu5ZUYKDv3UUHeM0C88b2e00yKLI1rcaWcc29Kr4J0n6N03CkGcSW1CkKZRan6Y0YR2hjoq pH5nfYaIGKzqq144hY17c8n3L4Sab11c82qABDdX6TwHaP8J9YiP29NqGmb9KSfG175O0HIp DmL7T41aso7m0YSMPeJ4VC5ToLi71exDGw8v0WycR0v9cK4Hwylm2hkO0H0fDXX7RApjpG7Q z8cS09L030IIE1ggeoKK9baSw8W828Un7UU3W1pLdOQBDwIRu0z8oKV0SWNyXd86EOwX21Y2 0000UXOkScqC307baHm9dme70k0Wg1100qZyEIL2zhpwUKg1wVUYNWSpcrzhuW891__yk7C3 jwywRUrqbPHhEedwLEzisCNtlXxdsgPlgbMS@kjTLRi2ZOa4TwTE8LHn0BMV5JEYXJIq_zvS 7pdL9KwPK6LMYFgAYVLOL@@@_70060OBXaF12000020ii101f6G00CuV038SGY5Dae1GI221 50U2bWbJ9jgLgW2jmfSxgeWiFHO9Y4Uc0HZgNlWYfS4_fKRfNDsjrp34um3hiW5o83AmnQ6Y e6amKP47vqJFtzOTuBB@WW54e0E8m17w95N22DweaeBoIr5bGnF7e01ErAFDy1Jvme85LkSQ kMHLnMY590XC8m2ogs6gzWR1mSyogTVsK_20@0n17aG2EmXZPK7Jf9cRcqBf11GFEKWkpacQ hn4w804l9IRJLWn9tA8uH1M6AKG6SWfG0z10y32u00Va2a1QuAl5NgdWq0tK9cHlQdIG0Eni 4OZ6e_gYBUh40YKH2l25Jef8gmXXH1LQr12WCKAYSicY6S4zTW_@XKCEmZIe866bFq8@CED7 sgvoiaSaPBfHTA46DXEXUR2A6CT0gvC48cryA1HKNBEsZE504uNmwKUCmXCMeXiwNd4ueco4 250VX9_Y76nl481cRSKXbeYMvO9oKIRiuXsCCpXoQu7WEFKeXvmJIqeyW21n40MTRShYrfxX XDA18yIL2y6cH5dD2GNIqYni4hSDBRSYhYErobm3DY2kgana61fMvsGoghTmW7b8ESWJCxQH w_ab62KAoB3pUoE1Gu6dosC@GWpZkvUNF7uRFaYzUbepIhpBvIzX_8xgwPxqZ@eOea1P4QQA feojHvdd3gAV9e@Q9MZm5Qj0b934leVYGjuQL9PNY0rK4x@SJm2CMaRI2By210RH3K9E2Lai P29dk3pLX9GbGSTXzNIptA407tPucdGKhPByEKALu0@g@gv4Tpuf9EeLFIAYUA23rKbK6oUf f12Pg0o73EEsZWiIIP1qXALIg02qU20swHM4R5pP0PMSXTgi6kiZ0a9XYgKqKT8Zoy320Ddq S8WWCHNw96HJfnn46G0G5mNsoOapGcXb1p3WG804eHF0K4W60OixgXybfYh44sUvr1OB1JOe Bj0JkCugaLvGGeNwdvXuK92OE5tmE8JTOUX8RrVnAjZ01OKBIhYAUjcofwQOIvSAtwlMDcej 3q20cKzeM5AAQmiAXaChL0qq7MAhXTk2QXOm16n@w@dvaSC9ZIIwOeTsKryeedq1L3B7vR4X 0o0D2101uMzL0ml5W4W0s1dgkLXNOCS3xWVO8S4BnZOAk2RnNCzO060JG5WAKWHm0y0k8GG5 C0jOG84h4Cm0O9qmQC3O9U0Li8t5quf08N5J0fKbvosCGObxnniBhS@PDC7J50wJse94xO5O 164ec480e5IT4e8CWE9HmohQeU4dZW25G885LG0mgRv4XIC0GRkcGqfAxAI9@03niMnO0AG4 mjdQWWSp61X68oC122tulvWqzY0h111ECljOJPT0G52y0OqYoFQgGjH58k5@nbQqj142K05m YNt0XEeY326W5O9M0TAY_2QW0038ftv0WXVrf@9O0m_hg8k0nyKi0Qz0yKN5Nkf8p754Fj_m @STH0eZRWBW36yETXF2esXS0OaveQiIpp7W5G3eazjdE54sH0JdaDrTWnMurqOUrF04TBFll pmWoUaBV1WTCvZscEEl_n0ODrt_3Up0OxO0C4wpKC30DW90vs6uuBmf0K@cg8U7NdlJd60M3 Hxj500zc4m0lQxCVZ9WeZIuvTmbwK42R7WAW5m5WWo_hu59WtQ5eTN0@k5WA88mJ3r504y8v 6UNW6FXkE0BqKe282i_qRAXhTcD5WJegM08rf_ftIug2GS1kWFYoLNph2aiT1enM0IYwGsFC N7bm3NZej4y0d8OYWWolB030lh4iqbC4QLJax@q1m0O0uU91aj4ejuTC9pqbAg4arsEaX0nY d5mU4Yio52u1Fw60WWfmHhgm3aGes9kPk21Q0uUnmCDnu41Bx6IHUwA93R1U9Iom3OR5xx1w aLwK@u212000lSKO8xioGtSkiV910X7qsMh0Wm3QvC2HlQ7q5m1ZC21GuHijsAuPk643Cmi0 q1nojGM04qb84gH4GQD4YR0E0NYK3k4ndu5LOxc28oB_KSd2V2emzG88cQ498WA_6GZ439Ov 0A8cFACBu1L2q0VuPEZ9NQWZEGE9eWcLNmPjz6ogZDbDdB6xjsyIQdvbqCZS@K7vOhdZ0M0T e9dteZkHb8mRoTcNExDlT6RAxim_6e0latRgZkw8MPpLgS1S1lsmc8_WdNcxQW26DmW222IO aTdo4hDXD7TAJENuMPqv5o23TbHdqQhCjL7ReBjNw0eX028W9Xr6usfEmzrOUZjt8NFjfCoE ZSbL6tC9iM0C0TuHtC06OktC3Tk56xopaP0E0RXvcpwfie0IOq8246Tq9jsAJFoGZIc98m0J 9B0GmF0EWiqchn92Q2e0n8Z973WWqQhCwzcRABCoGMFmi202cZkm87TZ9CsAZRa56vw1cN0G GPiLcsApDqDtO2RCqK6Pz86J2B6034cPc9ineJTXnMk06y2m2Z0GWvARiK0Q8MW4M1W2izcR EZimaNFma3m24Bjp0NTY16Pa1CmapQ0AaUm1AhDuC7QlHEsUpPbrZmSBCizsPghCJE2W0pbd R8hdt0NPkr1G1khdPO3EcK101Gh7P4JDcK1011RKWU6YDlDsQMf4P8qA39Cs2ZRaL6vC9Cj1 tE5BmWnUhEkHdSohdWm4Jc42015wTWIaP6cPcPCpCpKoD3P6umJ9oCaOW3FhCtROBDoiI9oO cSoP00263e0lL7TWhEwqZQpzD15@VAHz4tGkwOZQlX6tSPClrsBZNOWNqBDmv2UDJSm82HG6 OCP4134ZCmCYm2gQgLeLQmPbXU3Pbj2cUxDhL7Sh7CLo67K@15FZYmxg8eDu4fzLEe08yS5M LLXfGH98CM04TQ_0GuvbFDT8Va3yrSozDY1@lG05uXCfP78IZiU8oOpfCH0nSqb7sAh7YSNQ 8ZEqe38n06OAnEYu3cUBi2t80FlGcqip7AmpSTGSnk05izG1KRkm0NQY4os2UHjmONOp57G1 xBimb09C5m5K04GM5u0izMO83bJQIn0dm28E9cJm28xLY11gBipK68w0aJAZRdqdKsHXn0Im SbHddSZ9l56P6ACsmcOXPirGXPrvsjT50bKsZ2W02G0nEX9786hkvGtRjzPl15XI0vUZDWq3 8ShixU4GXf4AmGrDNK0G0bJW1CoSZPcf6oG3Cg9cP4JEpmcOW1EveZsq3DlDcS4xkmW6DdCI G101anw3GYW28WKbDdwOZEJL6TcADzK6AdDEG3R1O0NOA8ITKH_IgYCLLCXgfA2LfiJe0PWC v2pTeSYnchir1CGVi02wahEbboEKWdNsM8Xnu908oL6swHac7AmSeLcoeJ4WWcSApiUYSu2Z DNPUPEwa7Rbv5sUpRhz2oApCXL7RepbnCtSYas03X0KWNyHXpCYT0W7cTVXuPfuSMFe0FDbE hHKWdfGLMCf8VSPOn4id29qIA1QPgaeLHw0aOc1Suj3GCw9EHLBCAeca4JPH7GiIPoHcmSBC Aqd2SXks0781L6G2kgeaS4IKH7G4pRiHMQ07i8034w9fGKHIf5cAYHKf3G6XCpGsC8R6G43S u1avU3RfHcT0vA9H4LGI7G43Cuq5016w9cyaKw0aHCR0W2i38C99dAIB8LKn06G6RWhbWBi3 829eXMoHIzagSY8jCqJ92O0OWX6mW3Cs14gK4MKfbWOII7v4T0PiE8A85W3GKH3v9f22L9z4 dq14kzcRAJX_oDu0wmMQSRDGid29iNm1aAfZ28W0pb6RihCv0oRrXkvA3Tx02e2Y84baJEg5 fw1m0muYCAhjT2F01Kz4KZ141YIQAGnKGoI7G86RlPirsPGW4oHmW01EO5048qJKXgdQwL08 k2mWO1UuGX34MTqvjT0fCX64ZBqKAW2d4Kmd0EiC02Z2yGF2O88TiJQpb6wAZiS4_F71AcZm 0ezcTAJEGwHWWGAaWCYXZnWPcb98uC02AqmWS0EWOiLN@45C3W1DBeXsAZCfLNRd3KGo2Iqj n2V6KmM0D4iG2IpDsacRbDiG4x1Gml2H4uH4d2qGd2Eaf04v1iGe08q7G3HAW1UUPgRIAW2A mptixG1U4gqK2e0F6DEx2Ip5qscz1Am3LTponoz5qDx9K8Cs_cT1A028bpUG505GAVK84RGa KJ7b4G1XqjGFqBq80A4odf6aXYu0A08WGaoQxDkD7TaBCwasRk5jT5H3yG11RScm1Q3EGMGu 0s0J94n7U4a2W04G0Py73qMTi5yh14ndcoVZ0jqMPehCvmpB1zAm5p2y0Vu9e91EOxy6mc8_ K7k3v1KmUu8iBG6f5uGW26GkqE3Qqvpp09CIi24n7gK6UqjIm1egCvqMQk9Csu9NWAs58aH4 M87B98YFJ5sm211O0GcJkW0A8pWJ2CG1JHtR6RjlGNQZPjoaRNW3A1W0WGLQb0Gmd0FaZ0AK 04Gw5mWH7NW8_SKOZ8aA07yn4t8sSmP7UUfN2C220YVYXudZB6dOXniTeT3DA4mWZH8uQY40 bF6vDv0HJl9tQu4Chd1IxDtw1u0X9sRgZEGoPW1m9tR8hknGtSW0AsAJOpL6GahCcLcS0Hio msRt14sIZRhf3U4Igk7G08WyMWK6qS61zHLm1T40bJGh0B54sOqfCsSP0B2c501lCLR2JEwO MTp9jtSp9f8oa07SdL4p1C1oApEfDMPcpbmC7SuvbH4XFeHNN0gKuW1Wo7Ug9NZDmjmBjLNl 770WI218jL7sQPEq56TcJ10yIJrbYO1RGIGpLNefO2YHJ1YYQJCbH6PAZCGYkwoZhkktg@xj w@S4ofsgIsRYmmc61EmKITCfKja5FDPWN4x7Y02FIhjpgQgceKK08Dz6oAZd9cQu27N6eYWH 3Q08YzMTf586VKes0Jc4uWoh8WFyOadSYAWCNQqhiUqIC_W7XynGe56tShCinpB55GmE04CL W1L2KHV0ImgmOJTbnJU0Fi2a6WwDwKcRq9jtQh6X2OrRiXkmEJPyyIu0P86Ng1CWO5GuvbH1 CnGr97vApDq12Fb2e1OSP6n0IR2YdNA5039v6TAJEtIeY0br6SAJkmGNToLK07e16G0xGyq9 G6A2Fww4W5oS38T2mmK4PyMc9FOSIO3ESSn922avkUrWdIE0Em07y4HXOZO83p48YF8vjsAx JA7c82btkKeY82w0W0jGMOeBC50mBo5763x0Gm804ak1131WmaO4q1T1zYf00KWdnYaGGZHd oO3aAe8mOiLMOHTD904agCp8NPp1DG6BHW38ZFAaQq@f6zVgH@dQq@f6r5w834yu3FrpSmYH dSnO4JCYGlaKiQKW5RQmiHHubegJOkHdqeBlYZm4Dv02huvbXZQ9ueEOZDW4S47b413R01sW Zs0KXDcrAZEp12LaBCtCNRfXEwA3Pyyoc0PO6RufIWG8LPZ9joixHWEWZDyyEH8TPupIi7O6 PyPweHaaRaDTaGchCsOsNt9irApNr1ti_7aheV6Iga05L_qUF20Xit84RfnjrGHAxPdma34Y nMQSRDGq38avjngJRbv6wS9CincBeBipC7AYG8cIYJB9YKCxDoXYT2JEGaMFmOdqu9CW2u2R bnjpe3QxacLM9bH0AmMfr5NcZEvnMPSnkqCNQY9DsI3Tv1YU0HiS0qGFW82H0v7W82QIZCoK cRY04T0X8Y0Y_Chkb2EmSq56veJee2EGQcXoF1C8bqCB407CNPqbzL1iBCsWY8azR024XbO0 3Cm8b_kBtp3u6Rl9Co0HFWCtj09O7UUP7X3eW2yyrq7g1Ey6KY1m03CWP7GwIoYJaauqfJG3 SuP7GQIGITaaSgbrTCWCm0ppJhu6OWhvfP4aSf9CsO1Ibn6xAZEfDMOOPkmusSjOkoaJQcjp yJKG6S4pOmCpyJUdzq@V8uslJSqCc1@E1NIm5a0m3TqWmwu8O6PAPTyIs9lW3RmetvBE8v0_ mZG5iGmTH4WAqIpSW0bmEhCWasS0fEtGMPoXioiJPiz6uQhCkHdB30eme044wa1r1OmwpBaD GA8gCxasObDD01ExjqusPWWkt0nSiLcoWJ1W0IR3OcGm0HKIECn38Xae34tb6RO3ax4sQb1a wW38fv6Gg14pLsOUpDoC7BXnCwAZSWStD06asp1vDN0Gunedd8mOlnctah7Z03CcP6pOcF8j tJ1BFTmN1za5D1v0jK_tG00509Q028sRa9FVu1TX9M7MA86OWH9YupF06WEvy1FqHMo14OEu 2ZRz8YQ41aI9CW8ZLsf44G4G6x605u3Fffjp09e_5yYFyu5w8R102odeWG1Kuo244JDYS406 d3e1VuHiLqR8ny68cFAq8G1h2KHs0CiDG3330Xv6JEf17TN6OmMsBuisU3Prncocpbmi9GQd zYqCJE@KdSOh7qE2m0pLMPUpDNacRluim8R@S2yYRXPEo2JSVHtw260lsOZ9Xr6usfEmz5Tb 0K0wo3EbrZR91KWOW1cS0GWOdDMf45Se316RCJQ1u0czcReRkqeNPz8cOCPHW6C7SbfCowXC c4csWR7pbdR8hdt0NPkr1G1khdP83CcK101Gh7Pc0m0qb6TOhiUuKGJXeWYoAJHdt6RDhGLQ D2GGF05qds1AHcP6yn0bSpGc1EyKYC396umpApz6sIZChKYCc9dS60WWn0AmRrH7ugZEzesS DEGGQ26yvG6vRK0HehDm928TByGg66W7pUZSjv3UIpDmL7T0Xky0NPWe7G4XGrH7wUpDY0YT 1gHm8044W1141atsJtWH08uOf3msRZrpU1S1DvKcPzuaqShCZ3SY8_WdNChM02UXe2lGNO4Z joE2uXJCCusg2cpWWf@9euV4MrgmTF@Vtp@tzy@TFNUM48U_Sa3eWf8J2eGOirOuEyXdaqqH WCXJ1X5mWlCBDiLsSUHCNU_XWTphfJ0202Tbz9W11dRG9eKCAWAcYEvIZw0absS5ZI0GUpDW y4JAY8U8aFwWdaS2KLHLVJ7ejmm3Jbvcpe3Dz4JEZDOWvy1aY0CeUc2qpSrHisI3TWONxC4e dfgR302u38yaJmDHGwour4D0G1Wfm00mD5A00oX100m004WPX300mje00eFB600Ml0060e0W BS000j8500y9o00G330m005WUX3009If00WIK600wL1060e08CS008gF500Svp00W300m005 WZX300gzf00GFV6000310I7m03700q_q00Wvd65W28Qu000zdA0060g100900W10A0M3700g 0L10WAGD00a920C0G1ORu00mmmA00g6i1005G0W10A0W3700_6N10GymD00So00C0G1eSu00 06yA00K1l10WGD0W10AukX2C5LI99dE20JLtN34aU21cZEv6XW0W020kAiq61W0czcS0njoS 7PXXkm000@@l@@700000H0Gm006000A0010G104Kaw1QwDta6TlHklW9A02QOzWK0Qe@q5Y1 e11HqGWvhc4KIE1W0kW0M4bA8c2000AgW15rm400WXf000G05Hf2CSvFc000WC50002kK0J0 0040Yu0AGCVrKS05u41C10YqafcwBJ1LI_ADta6T00000WBky2oaBDsLcScxbsCtSVPEuIB2 04uoO000000AqXcqcxBp1NQBNI0JExhT0E0Cf02_u3aT0kGCf000QBCpHNPaxBug1WWq1GGJ FHaY_QAC5aLA24_m78jL406QAefGLHI1000eN04qYFevklaJPdz5nIZEjupGeIAcI2uWx08u H040000q802chCwyrSi9CxApNpL6sARie3A8JWIU8mYO1ImOiLcmaxhQ1S8704GdSXnjvCJP oz5paBCjL60n08ngD5aKW3N1KWla3FVXMOSZCsKcS0000085038MQqvhvIZUb12Uw14p8301 6Kpq25aYm4e3llIAu1ZPsP@4OGH060W00000C0004010002O000O010004m000812000Cm00 0m14000WW100044000a0300WP0GW22000Mm00W100300l701J0K0w04Ww280W20m004G0028 2W240000c0021m40WG061043W90W01C108AWH00X1O208S0J0024O40Ga0c002Am40WO1610 4CW90WG3C108SWH00n3O20801J00Y8O40G81c002Jm40WW26104LW90WW5C108kWH0016O20 8a1J002DO40Gi1c002Sm40We36104UW90Wm7C108G0G80820610a0G90m40S20e0WK0WA0i2 0O10j0WB0u50030n00P0mC0G30g10s0mD0070a30w0WT00F0q30y10@0000000O9C7uEM2Z3 khheI8JPGSREuHwf6SreqnIteLI6Fb1HRx0fmbxyuHwL3S4pcqNk2ciD1zoNiyxWMWxvHgZV X4PGShEa74mg6IYBtvvTG_Ym_ecsQiEoxkDHLBre@u2DzWM1Jsc0mek6oqBVYrFxIkC5z4N1 WYiPZ1ZDcUUGVrt02Q4PGusEU1YqO2v11cgbBEd9Qq8V0US4r4Of_BK3IlcQLeKwZQjgXDC9 hGMBvTt6GvpBM7dDOBJTuwxYyS3MZxiwHqhoAOos4w0WtY2meSDoM8Ce@LjqJhG6XOpQLcgK tdzGfz2NFnb0eW04BuBocD3CcaqjGi7YltUH4CX6iMj3X5SFQnCR1PGSpE3Yps1mBGa6Jg0H rUFn25RSVeMRDGfa@hFdXQuYkeI_0yGJ_0u17HL2MY1CT8SxsWQ_hbUq62NYDoYK0SD6pfFA hjcO2ZDEWDCbfGd0WOotkADWDxLQ0s8OwXWWNXu7gdnP3hoWATtAXwmrt5n7YvY@lxGtYbaM qk2pptqOiCcGz_O9CPRYpHLBTe30yEguWPNg5KfVJfhh4szq6YZcKxJlrcMjqbsGyBRteXH8 UcMX6NWfzSQX0YKU73OclOY2gcC_QeRy4N1WIrW8m9G0Y5ybXWmWaBfMeTriAyDGa0rc9tF9 NOExWyzsBOcSsIH4C1Diq2rhFs5zChi2i1qwoEugtRrARw2OG64kjRhP@LJC8kj6GJf5BTvu egLtht9jEhm4RJmWiWxv8n2ZPS2t1PKw3rQh1egbQqRXdv0vTw@4cq9k205YrJ7q7Hcy1u9z e8uGqaN0UuFXD8DTTbOkVvpK6Wnn6somv6i6tiR3KxFuMPw4fbUQ32cLItdzclpDVv@klSS8 VTx5LpHO13wZQDhzRIH7An46RS8byVxfuFpkHVchurKTRGj_P9R8BIQRb6m6JReWNjN93O3O qZWWCyxWvxg_sPe_E7TB6vvRQCYnP5soQOGpu5eI@cIiHSe9LbkZ1cDmHBOtSjW0Yy2JAeA_ kZkA6b5qhiIIBQN11gDBkEzVNBSCU6wQjedPZbESbtR1BX9RJc8@OOdpHfMTAOos4Gg6a0E@ n6EiUXEx0vCnL0e01LolLI1zmLSkkIis3dDOB3RoHfbK3_MjolzTSpN8_Ux5GjqJpGX47rnZ lPx6DkDes_ePBuRWRnaSjNut1htkx8tYXvq2141dQFuVbtX1cnb5282@xPPUCDN96_Jx@r2J HFp6BmJSA0gxakXhHrW4m9Xdr0v46JExKtR1OWkfZaMIRxEtyXIg5DNvMBMdjPMuRW0@EOxc fS5lfMCFtrR@ziiEAz@LBCSG_UxbY2hBbXPIpEbf6bMIKWDGJt9DmrDdYhycA@UMs6n5zOsi uIfm8c0RWckeS5lfoDyT1Q5gZCOuD_M1Qret5e5Ez68AJEvycSWujn6JToL6o00W10iGJbH7 qUZCWOMOIZjoM2830000kIktusPW0kmaJOjLsCe40kmcJPa12wU3a1fH8AW3OaSXfjo0HQp1 2wUxDWmsRSxC060m2Ez6T0fCtyMTd1DGc3SXDco09Dk1YOgpCpAcnWe0avQV2G68lfEw0O00 F2Ae1prMOOZD0YHm21DqN14L0WZb78Y8Y941Xoe3Db9dRAZklqMOZD2G4j4H0n2REb1I8w14 O2AYWD0AW9W03yc9b3S88502acRpXkmSpOb1YGw14EL5JOwhq61uWm080AD5aX_YAv1NP8gC p0YAf04Om3Dm03Oc16m0JLIf5VCqKI16GwHFW03yCgeMi90CmK5c00bq02HDWqJQ05S6W1f1 O2R0fdq08mCo03OW16q0JLO2WqUAu0ju3SGBll46PaHkocpSWmZU0P6n0GJ2QelCsRkniqEJ ToLMY27Wkoc3TVbsQ070bqSR203UG8108NPe3aUo0uWm08mPbHNY09SRP1H2W0y_2kcxB000 00u2RC456T23aGkJuWG8G0SXD6cApDWuJF096P25WWG0E0Fz0YOg96qK5JPHPWqQhCVzMTj3 O0yCoe10CGLCboMK6q303d0OGA0ACB01I14JO28eS2G2uf7G03UmyUE1dAKWKI1Wm2EWSuz5 u6RjYaC8506IC0XG0QmNmHNwb44502lEIWlcZEXHNTc3Wc4qGVr281x8HWwWxhR0800e8tQ2 785008802YJY0j5sOTCW00GnDbTtNR0SWjWfBc4JA7BOGm28a50312m0pIZDqLcSc30Kc0m0 VDsRgpDwqJFm4XW1z0SGx2FCU01t0WWj2J5sqb9T3OWO00W4DCmSo1Go08OimO3RY5MnK44T m12REwyLPoHkta300K5tMpDlTdRhbOG64ByW01IREwasOpbT02SZiloGmWYeE000WoC05Wkt WhoA3qMQpDaB1RJyGD350W0481036GZWG02f4034G01Sb624G018m03OW1_V0W3G014WW2AG 15y@bQ9u@@3eBW423W0@@@0T1aGO04u@@BeBW4yF38W0100F0W20e00A055408gGX001BA40 GSH1102CK80G8H2104CIG0WuX4204aaG00Hb4408K8X00X6940G09110Y9I80GmI2104BIG0 WmX4204YaG001b4408k8X00nE0k30u1Wy0GF0i70u3W_0WV0uF004012011OG0G80A4031mX 00H0I40A2W51WH0q80S4W710a08I0a40J20A1eI0W4040841W001P040G010102G080G0601 04H0G0W840204Y1G00160408GJ0u0G00000400000bc01AG0WGG12084AW00n60408i2W00Y T0I2W080604W000G014f01v9G0006L1eG0rRL000WWwjC008LcmW34Xv6P0PEw4sOhTA81OB jvasRkzo71O14p6dv0w02000004sSpfCveB4P28I9pH4GCBoc2e38c9DsAh4W2m28i9DtA38 bGcIch4pf000Wx200831000W200o00F4Zo130a00006n8pCef6RS3Ev8Cn63PbPMs45mjwO3 Rf0GE0B88X62H5PKE04GiwExd62OdPmHkqS3Tcf3G4BCa1YO2Rkoo6O49vaH08DtO60E98d0 WRXv60W1000GISpiquMQq9F00000uamS2W1003HK7000YQ100laE00I00a4BGWB0000IQAFr 2EmfcSqIC0C0m1W@7060e0a04030KWi02W1080GF2K4050nX1A2W2e6_05UO18qbWY0W0GBn OH0K02l_o80AGPDtS4040al0b0210000TsXqDH0G0HfK3j94000eon9CYI8000aUGCUjM800 0DCf_rmmG00GmlHU37aX00KONuLenkX00oEvis2sg31WUY4CaZLu6286LBUTurA82KlBEh9N 3BHaagk93yCy0Y8xLIu7BWMgb8qsPsoR8yeEH50000G60000w3W10E8MW3SXR5esQnra6Lly @9T3y4EQIcE0J_8vE1r2F@Ed@w_9LK7lI4xB9hqSYdPE5gLF2xJA7zSAz8g@7KgCTwI6V62w kbI6wDiI6AC0P50G02S9I17YGmZ88C003Cm0360e37Sm130q34G0X10wxK12WVj0p8yv52yw 9ZWxeC0OGX40002Z0000cey@@21X0WYv@H0Km008GrTPcPLHa00WLu50086l000su900O7U1 002oB00WHUL1O0IoB00iIU200QaN00edy2009bd00WAv500_Al00mPv900YBA02010Aa001O Wu00m00Kt92000GGS00W00i84W4G3n10040W700m007W9Y38ia2A2W0MHS0f0K029E00W10i 0W10000mHY38Im360eKV1000u00S00KuFA_35aeY@KH2ZC128JCRaKLY0A0AOq02mX811002 Y8S00AGm78G12Gm74W00G1600eo1306O000GW02480VYA95v304wFW0WGX9gaCI81LabY13K 8nVWuaYKKHvW7bIIIm4WuIe03OJIIA9ROGI995F0WDs0000mAs000GW2H440KC001088HG12 28WeIW1oaay2o7_5H4Yml@A3W0_4KG2Ia@4KGYWZ@III95a@I8194WF2AfaetV8014_301zd W00405qF2uF4GX81v7W02G0z71OG0@z71G0Y@o3W0_yN2I813uJGH94l_J2Pa2ZCA99bKC28 W@4G0@08W0oFV02W0v3@04E0wdnG12KOi3G0S8SWmYA95D40_BeW0W0401801015a@0W024W 0808W04G01W0401002geYAuz7I8Y8SW3H4X8GW1I81b@mXAKH56Wml84W0CGAfaYF@X0280F 0GKV020G04Hz0W@W0A41002wF010V8032W7V8W02mBF02W3VKW2AG02KG1CuZF8G01G09gG5 LWWWV82GWm3W024yn18024Em3Gm08U82AGW2YO0AG15F8YCgm4H0C0W3EeW3000I83B0O0W@ 70u@10y310ZA0SGLxoS44P60QNk00XNV208yqN0Gmhl08106Wp3004kBuEg200hJB00Osq10 0sdEWH1Y0zI7mG2DtP01HKHm00GWR3008SR000Xy40E0x60G205WU3081W2ml10a0G18u00I 0e0CS0090K0AE0W40A0770G205Wa3081W2mo10a0G1ev00I0e0yS0090K0YE0W40A0J70G20 5Wg3081W2mr10a0G18x00I0e0iT0090K0wE0W40A0V70G205Wm3081W2mu10a0G1ey00I0e0 SU0090K0IF0W40A0h70G205Ws3081W2mx10a0G18_00I0e0CV0090K0gF0W40A0t70G205Wy 3081W2m_10a0G1e@00I0e0yV0090K02G0W40A0380G205W24081W2m120a0G18110I0e0iW0 090K0QG0W40A0F80G205W84081W2m420a0G1e210I0e0SX0090K0oG0W40A0R80G205WE408 1W2m720a0G18410I0e0CY0090K0AH0W40A0d80G205WK4081W2mA20a0G1e510I0e0yY0090 K0YH0W40A0p80G205WQ4081W2mD20a0G18710I0e0iZ0090K0wH0W40A0@80G205WW4081W2 mG20a0G1e810I0e0Sa0090K0II0W40A0B90G205Wc4081W2mJ20a0G18A10I0e0Cb0090K0g I0W40A0N90G205Wi4081W2mM20a0G1eB10I0e0yb0090K02J0W40A0Z90G205Wo4081W2mP2 0a0G18D10I0e0ic0090K0QJ0W40A0l90G205Wu4081W2mS20a0G1eE10I0e0Sd0090K0oJ0W 40A0x90G205W_4081W2mV20a0G18G10I0e0Ce0090K0AK0W40A07A0G205W45081W2mY20a0 G1eH10I0e0ye0090K0YK0W40A0JA0G205WA5081W2mb20a0G18J10I0e0if0090K0wK0W40A 0VA0G205WG5081W2me20a0G1eK10I0e0Sg0090K0IL0W40A0hA0G205WM5081W2mh20a0G18 M10I0e0Ch0090K0gL0W40AuHG3wesW10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70 u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V 0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u @10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0 W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@ 10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W @70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@1 0_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@ 70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10 _V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@7 0u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_ V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70 u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V 0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u @10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0 W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@ 10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W @70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@1 0_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@ 70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10 _V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@7 0u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_ V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70 u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V 0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u @10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0 W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@ 10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W@70u@10_V0W 01; BOOLEAN NVMPROTECT_0[3] = $0; ENDDATA; PROCEDURE DO_EXIT USES GV; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $81; WAIT IDLE, 250 USEC; IRSCAN 8, $81, CAPTURE BUFF128[7..0]; IF ( ! (BUFF128[2]==0) ) THEN GOTO Label_0; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $07; WAIT IDLE, 1 CYCLES; WAIT IDLE, 200 USEC; Label_0: IRSCAN 8, $ff; WAIT IDLE, 200 USEC; WAIT RESET, 3 CYCLES; EXIT STATUS; ENDPROC; PROCEDURE DO_EXIT_ACCESS_NVM USES GV,NVM_V; NVMACCESS[4..0] = $00; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $b6; DRSCAN 5, NVMACCESS[]; WAIT IDLE, 3 CYCLES; WAIT IDLE, 2 USEC; EXIT STATUS; ENDPROC; PROCEDURE DO_READ_SECURITY USES GV; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $a4; WAIT IDLE, 3 CYCLES; DRSCAN 56, $00000000000000, CAPTURE SECREG[]; ULNR0 = SECREG[ULNR0_BITLOCATION]; ULNW0 = SECREG[ULNW0_BITLOCATION]; ULNC0 = SECREG[ULNC0_BITLOCATION]; ULNR1 = SECREG[ULNR1_BITLOCATION]; ULNW1 = SECREG[ULNW1_BITLOCATION]; ULNC1 = SECREG[ULNC1_BITLOCATION]; ULNC3 = SECREG[ULNC3_BITLOCATION]; ULUWE = SECREG[ULUWE_BITLOCATION]; ULARE = SECREG[ULARE_BITLOCATION]; ULUPC = SECREG[ULUPC_BITLOCATION]; ULUFE = SECREG[ULUFE_BITLOCATION]; ULUFP = SECREG[ULUFP_BITLOCATION]; ULUFJ = SECREG[ULUFJ_BITLOCATION]; ULFLR = SECREG[ULFLR_BITLOCATION]; ULULR = SECREG[ULULR_BITLOCATION]; ULAWE = SECREG[ULAWE_BITLOCATION]; ULARD = SECREG[ULARD_BITLOCATION]; ULOPT[1] = SECREG[ULOPT1_BITLOCATION]; ULOPT[0] = SECREG[ULOPT0_BITLOCATION]; ENDPROC; PROCEDURE DO_OUTPUT_SECURITY USES GV; PRINT "Security Settings :"; IF ( ! (ULUFP==1) ) THEN GOTO Label_1; PRINT "FlashROM Write/Erase protected by pass key."; Label_1: IF ( ! (ULUFJ==1) ) THEN GOTO Label_2; PRINT "FlashROM Read protected by pass key."; Label_2: IF ( ! (ULAWE==1) ) THEN GOTO Label_3; PRINT "Array Write/Erase protected by pass key."; Label_3: IF ( ! (ULARD==1) ) THEN GOTO Label_4; PRINT "Array Verify protected by pass key."; Label_4: IF ( ! (ULNW0==1) ) THEN GOTO Label_5; PRINT "NVM block 0 Write protected by pass key."; Label_5: IF ( ! (ULNR0==1) ) THEN GOTO Label_6; PRINT "NVM block 0 Read protected by pass key."; Label_6: IF ( ! (ULUFE==1) ) THEN GOTO Label_7; PRINT "Encrypted FlashROM Programming Enabled."; Label_7: IF ( ! (ULARE==1) ) THEN GOTO Label_8; PRINT "Encrypted FPGA Array Programming Enabled."; Label_8: IF ( ! (ULNC0==1) ) THEN GOTO Label_9; PRINT "Encrypted NVM block 0 Programming Enabled."; Label_9: PRINT "========================================="; ENDPROC; PROCEDURE DO_QUERY_SECURITY USES DO_READ_SECURITY,DO_OUTPUT_SECURITY; CALL DO_READ_SECURITY; CALL DO_OUTPUT_SECURITY; ENDPROC; PROCEDURE READ_UROW USES BITSTREAM,GV; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $c0; WAIT IDLE, 1 CYCLES; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $a8; WAIT IDLE, 3 CYCLES; WAIT IDLE, 165 USEC; DRSCAN 128, $00000000000000000000000000000000, CAPTURE UROW[]; SUROWALGOVERSION[6..0] = $00; IF ( ! ( (UROW[5]==0)&&(UROW[0]==1)) ) THEN GOTO Label_10; SUROWALGOVERSION[5..4] = UROW[24..23]; Label_10: IF ( ! ( (UROW[5]==1)&&(UROW[0]==0)) ) THEN GOTO Label_11; SUROWALGOVERSION[5..4] = UROW[24..23]; SUROWALGOVERSION[6] = 1; Label_11: SUROWCHECKSUM[15..0] = UROW[127..112]; SUROWCYCLECOUNT = INT(UROW[111..102]); SUROWDESIGNNAME[69..0] = UROW[101..32]; SUROWPROGMETHOD[2..0] = UROW[31..29]; SUROWALGOVERSION[3..0] = UROW[28..25]; SUROW_PKG_TYPE[5..0] = UROW[22..17]; SUROW_SW_VERSION[6..0] = UROW[16..10]; SUROWPROGRAMSW[3..0] = UROW[9..6]; SUROW_SRAM_DISTURB[0] = UROW[4]; SUROW_SPEED_GRADE[2..0] = UROW[3..1]; ACT_UROW_CYCLE_COUNT = SUROWCYCLECOUNT; ENDPROC; PROCEDURE FIX_INT_ARRAYS USES GV; IF ( ! (HEX[0]!=48) ) THEN GOTO Label_12; FOR I = 0 TO 7; TEMP = HEX[I]; HEX[I] = HEX[(15-I)]; HEX[(15-I)] = TEMP; NEXT I; Label_12: LABEL_SEPARATOR = 0; ENDPROC; PROCEDURE DISP_CHKSUM_DESIGN USES GV,FIX_INT_ARRAYS; CALL FIX_INT_ARRAYS; IF ( ! (INT(SUROWCHECKSUM[15..0])==65535) ) THEN GOTO Label_13; PRINT "CHECKSUM: "; Label_13: IF ( ! (INT(SUROWCHECKSUM[15..0])!=65535) ) THEN GOTO Label_14; PRINT "CHECKSUM: ",CHR$(HEX[INT(SUROWCHECKSUM[15..12])]),CHR$(HEX[INT(SUROWCHECKSUM[11..8])]) ,CHR$(HEX[INT(SUROWCHECKSUM[7..4])]),CHR$(HEX[INT(SUROWCHECKSUM[3..0])]); Label_14: IF ( ! ( ( (INT(SUROWDESIGNNAME[0..30])==2147483647)&&(INT(SUROWDESIGNNAME[31..61])==2147483647))&&(INT(SUROWDESIGNNAME[62..69])==255)) ) THEN GOTO Label_15; PRINT "Design Name: "; Label_15: IF ( ! ( ( (INT(SUROWDESIGNNAME[0..30])!=2147483647)||(INT(SUROWDESIGNNAME[31..61])!=2147483647))||(INT(SUROWDESIGNNAME[62..69])!=255)) ) THEN GOTO Label_16; PRINT "Design Name: ",CHR$(INT(SUROWDESIGNNAME[63..69])),CHR$(INT(SUROWDESIGNNAME[56..62])) ,CHR$(INT(SUROWDESIGNNAME[49..55])),CHR$(INT(SUROWDESIGNNAME[42..48])),CHR$(INT(SUROWDESIGNNAME[35..41])) ,CHR$(INT(SUROWDESIGNNAME[28..34])),CHR$(INT(SUROWDESIGNNAME[21..27])),CHR$(INT(SUROWDESIGNNAME[14..20])) ,CHR$(INT(SUROWDESIGNNAME[7..13])),CHR$(INT(SUROWDESIGNNAME[0..6])); Label_16: LABEL_SEPARATOR = 0; ENDPROC; PROCEDURE DISPLAY_UROW USES BITSTREAM,CONSTBLOCK,GV,DISP_CHKSUM_DESIGN; EXPORT "USER_ROW", UROW[127..0]; PRINT "User information: "; CALL DISP_CHKSUM_DESIGN; IF ( ! (FLAGDISPLAYCYC==1) ) THEN GOTO Label_17; PRINT "CYCLE COUNT: ",SUROWCYCLECOUNT; Label_17: INTEGER TMPINT =INT(SUROWPROGMETHOD[]); INTEGER TMPINT2 =0; INTEGER TMPINT3 =0; INTEGER TMPINT4 =0; INTEGER TMPINT5 =0; IF ( ! (TMPINT==IEEE1532) ) THEN GOTO Label_18; PRINT "Programming Method: IEEE1532"; Label_18: IF ( ! (TMPINT==STAPL) ) THEN GOTO Label_19; PRINT "Programming Method: STAPL"; Label_19: IF ( ! (TMPINT==DIRECTC) ) THEN GOTO Label_20; PRINT "Programming Method: DirectC"; Label_20: IF ( ! (TMPINT==PDB) ) THEN GOTO Label_21; PRINT "Programming Method: PDB"; Label_21: IF ( ! (TMPINT==SVF) ) THEN GOTO Label_22; PRINT "Programming Method: SVF"; Label_22: PRINT "Algorithm Version: ",INT(SUROWALGOVERSION[6..0]); TMPINT = INT(SUROW_PKG_TYPE[]); IF ( ! (TMPINT==UNSPECIFIED) ) THEN GOTO Label_23; PRINT "Device Package Type: package information not available from device"; Label_23: IF ( ! (TMPINT==QN132) ) THEN GOTO Label_24; PRINT "Device Package Type: QN132/QNG132"; Label_24: IF ( ! (TMPINT==VQ100) ) THEN GOTO Label_25; PRINT "Device Package Type: VQ100/VQG100"; Label_25: IF ( ! (TMPINT==TQ144) ) THEN GOTO Label_26; PRINT "Device Package Type: TQ144/TQG144"; Label_26: IF ( ! (TMPINT==PQ208) ) THEN GOTO Label_27; PRINT "Device Package Type: PQ208/PQG208"; Label_27: IF ( ! (TMPINT==FG144) ) THEN GOTO Label_28; PRINT "Device Package Type: FG144/FGG144"; Label_28: IF ( ! (TMPINT==FG256) ) THEN GOTO Label_29; PRINT "Device Package Type: FG256/FGG256"; Label_29: IF ( ! (TMPINT==FG484) ) THEN GOTO Label_30; PRINT "Device Package Type: FG484/FGG484"; Label_30: IF ( ! (TMPINT==FG676) ) THEN GOTO Label_31; PRINT "Device Package Type: FG676/FGG676"; Label_31: IF ( ! (TMPINT==FG896) ) THEN GOTO Label_32; PRINT "Device Package Type: FG896/FGG896"; Label_32: IF ( ! (TMPINT==QN108) ) THEN GOTO Label_33; PRINT "Device Package Type: QN108/QNG108"; Label_33: IF ( ! (TMPINT==QN180) ) THEN GOTO Label_34; PRINT "Device Package Type: QN180/QNG180"; Label_34: IF ( ! (TMPINT==TQ100) ) THEN GOTO Label_35; PRINT "Device Package Type: TQ100/TQG100"; Label_35: IF ( ! (TMPINT==CQ208) ) THEN GOTO Label_36; PRINT "Device Package Type: CQ208/CQG208"; Label_36: IF ( ! (TMPINT==FG1152) ) THEN GOTO Label_37; PRINT "Device Package Type: FG1152/FGG1152"; Label_37: IF ( ! (TMPINT==BG456) ) THEN GOTO Label_38; PRINT "Device Package Type: BG456/BGG456"; Label_38: IF ( ! (TMPINT==UNDEFINED) ) THEN GOTO Label_39; PRINT "Device Package Type: package information not available from device"; Label_39: TMPINT = INT(SUROW_SPEED_GRADE[]); IF ( ! (TMPINT==GRADE_UNSPEC) ) THEN GOTO Label_40; PRINT "Device Speed Grade: speed grade information not available from device"; Label_40: IF ( ! (TMPINT==GRADE_1) ) THEN GOTO Label_41; PRINT "Device Speed Grade: -1"; Label_41: IF ( ! (TMPINT==GRADE_2) ) THEN GOTO Label_42; PRINT "Device Speed Grade: -2"; Label_42: IF ( ! (TMPINT==GRADE_3) ) THEN GOTO Label_43; PRINT "Device Speed Grade: -3"; Label_43: IF ( ! (TMPINT==GRADE_F) ) THEN GOTO Label_44; PRINT "Device Speed Grade: -F"; Label_44: IF ( ! (TMPINT==GRADE_STD) ) THEN GOTO Label_45; PRINT "Device Speed Grade: STD"; Label_45: IF ( ! (TMPINT==GRADE_4) ) THEN GOTO Label_46; PRINT "Device Speed Grade: -4"; Label_46: IF ( ! (TMPINT==GRADE_UNDEF) ) THEN GOTO Label_47; PRINT "Device Speed Grade: speed grade information not available from device"; Label_47: TMPINT = INT(SUROWPROGRAMSW[]); IF ( ! (TMPINT==FP) ) THEN GOTO Label_48; PRINT "Programmer: FlashPro"; Label_48: IF ( ! (TMPINT==FPLITE) ) THEN GOTO Label_49; PRINT "Programmer: FlashPro Lite"; Label_49: IF ( ! (TMPINT==FP3) ) THEN GOTO Label_50; PRINT "Programmer: FlashPro3"; Label_50: IF ( ! (TMPINT==FP4) ) THEN GOTO Label_51; PRINT "Programmer: FlashPro4"; Label_51: IF ( ! (TMPINT==SCULPTW) ) THEN GOTO Label_52; PRINT "Programmer: SiliconSculptor II"; Label_52: IF ( ! (TMPINT==BPW) ) THEN GOTO Label_53; PRINT "Programmer: BP Programmer"; Label_53: IF ( ! (TMPINT==DIRECTCP) ) THEN GOTO Label_54; PRINT "Programmer: DirectC"; Label_54: IF ( ! (TMPINT==STP) ) THEN GOTO Label_55; PRINT "Programmer: Actel JAM Player"; Label_55: IF ( ! ( ( ( (TMPINT==FP)||(TMPINT==FPLITE))||(TMPINT==FP3))||(TMPINT==FP4)) ) THEN GOTO Label_71; TMPINT2 = INT(SUROW_SW_VERSION[]); IF ( ! (TMPINT2==FP33) ) THEN GOTO Label_56; PRINT "Software: FlashPro v3.3"; Label_56: IF ( ! (TMPINT2==FP34) ) THEN GOTO Label_57; PRINT "Software: FlashPro v3.4"; Label_57: IF ( ! (TMPINT2==FP40) ) THEN GOTO Label_58; PRINT "Software: FlashPro v4.0"; Label_58: IF ( ! (TMPINT2==FP41) ) THEN GOTO Label_59; PRINT "Software: FlashPro v4.1"; Label_59: IF ( ! (TMPINT2==FP42) ) THEN GOTO Label_60; PRINT "Software: FlashPro v4.2"; Label_60: IF ( ! (TMPINT2==FP50) ) THEN GOTO Label_61; PRINT "Software: FlashPro v5.0"; Label_61: IF ( ! (TMPINT2==FP51) ) THEN GOTO Label_62; PRINT "Software: FlashPro v5.1"; Label_62: IF ( ! (TMPINT2==FP60) ) THEN GOTO Label_63; PRINT "Software: FlashPro v6.0"; Label_63: IF ( ! (TMPINT2==FP61) ) THEN GOTO Label_64; PRINT "Software: FlashPro v6.1"; Label_64: IF ( ! (TMPINT2==FP62) ) THEN GOTO Label_65; PRINT "Software: FlashPro v6.2"; Label_65: IF ( ! (TMPINT2==FP84) ) THEN GOTO Label_66; PRINT "Software: FlashPro v8.4"; Label_66: IF ( ! (TMPINT2==FP85) ) THEN GOTO Label_67; PRINT "Software: FlashPro v8.5"; Label_67: IF ( ! (TMPINT2==FP86) ) THEN GOTO Label_68; PRINT "Software: FlashPro v8.6"; Label_68: IF ( ! (TMPINT2==FP90) ) THEN GOTO Label_69; PRINT "Software: FlashPro v9.0"; Label_69: IF ( ! (TMPINT2==UNKNOWN) ) THEN GOTO Label_70; PRINT "Software: FlashPro vX.X"; Label_70: LABEL_SEPARATOR = 0; Label_71: IF ( ! ( (TMPINT==SCULPTW)||(TMPINT==BPW)) ) THEN GOTO Label_75; TMPINT3 = (INT(SUROW_SW_VERSION[6..5])+SCULPTORMAJORBASE); TMPINT4 = (INT(SUROW_SW_VERSION[4..1])+SCULPTORMINORBASE); TMPINT5 = 0; IF ( ! (SUROW_SW_VERSION[0]==1) ) THEN GOTO Label_72; TMPINT5 = 1; Label_72: IF ( ! (TMPINT==SCULPTW) ) THEN GOTO Label_73; PRINT "Software: Sculptor Win v",TMPINT3,".",TMPINT4,".",TMPINT5; Label_73: IF ( ! (TMPINT==BPW) ) THEN GOTO Label_74; PRINT "Software: BP Win v",TMPINT3,".",TMPINT4,".",TMPINT5; Label_74: LABEL_SEPARATOR = 0; Label_75: PRINT "========================================="; ENDPROC; PROCEDURE READ_F_ROW USES GV; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $c0; WAIT IDLE, 1 CYCLES; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $f9; DRSCAN 3, FADDR[]; WAIT IDLE, 1 CYCLES; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $bf; WAIT IDLE, 3 CYCLES; WAIT IDLE, 165 USEC; DRSCAN 128, $00000000000000000000000000000000, CAPTURE BUFF128[]; ENDPROC; PROCEDURE DO_DEVICE_INFO USES GV,READ_UROW,DISPLAY_UROW,READ_F_ROW; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $0e; WAIT IDLE, 1 CYCLES; DRSCAN 32, $00000000, CAPTURE BUFF32[]; EXPORT "SILSIG", BUFF32[]; IRSCAN 8, $84, CAPTURE BUFF128[7..0]; IF ( ! (BUFF128[2]==1) ) THEN GOTO CORE_NOT_ENABLED; PRINT "FPGA Array is programmed and enabled."; CORE_NOT_ENABLED: IF ( ! (BUFF128[2]==0) ) THEN GOTO CORE_ENABLED; PRINT "FPGA Array is not enabled."; CORE_ENABLED: CALL READ_UROW; CALL DISPLAY_UROW; FADDR[] = $0; CALL READ_F_ROW; EXPORT "FSN", BUFF128[55..8]; PRINT "========================================="; ENDPROC; PROCEDURE INIT_AES; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $dd; DRSCAN 128, $00000000000000000000000000000000; WAIT IDLE, 3 CYCLES; WAIT IDLE, 165 USEC; ENDPROC; PROCEDURE DO_VERIFY_DEVICE_INFO USES GV,BITSTREAM,DO_EXIT,DO_READ_SECURITY,READ_UROW ,DISP_CHKSUM_DESIGN; CALL READ_UROW; CALL DISP_CHKSUM_DESIGN; CALL DO_READ_SECURITY; BUFF32[31..0] = BOOL(CHECKSUM); UROW[127..112] = BUFF32[15..0]; UROW[101..32] = ACT_UROW_DESIGN_NAME[69..0]; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $c0; WAIT IDLE, 1 CYCLES; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $a8; WAIT IDLE, 3 CYCLES; WAIT IDLE, 165 USEC; DRSCAN 128, $00000000000000000000000000000000,COMPARE UROW[],$ffff003fffffffffffffffff00000000 ,PASS; IF ( ! (PASS==0) ) THEN GOTO UROW_CMP_OK; STATUS = -43; PRINT "Failed to verify design information."; UNIQUEEXITCODE = 32772; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; UROW_CMP_OK: LABEL_SEPARATOR = 0; ENDPROC; PROCEDURE READ_IDCODE_ONLY USES GV; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $0f; WAIT IDLE, 1 CYCLES; DRSCAN 32, $00000000, CAPTURE ID[]; EXPORT "IDCODE", ID[]; ENDPROC; PROCEDURE VERIFY_RLOCK USES GV; IRSCAN 8, $84, CAPTURE BUFF128[7..0],COMPARE $04,$04,PASS; ENDPROC; PROCEDURE DO_VERIFY_PGM_RLOCK USES GV,DO_EXIT,VERIFY_RLOCK; CALL VERIFY_RLOCK; IF ( ! (PASS==0) ) THEN GOTO RLOCK_PGM_PASS; STATUS = 10; PRINT "Failed to enable FPGA Array."; UNIQUEEXITCODE = 32891; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; RLOCK_PGM_PASS: LABEL_SEPARATOR = 0; ENDPROC; PROCEDURE DO_VERIFY_RLOCK USES GV,DO_EXIT,VERIFY_RLOCK; CALL VERIFY_RLOCK; IF ( ! (PASS==0) ) THEN GOTO RLOCK_VERIFY_PASS; STATUS = 11; PRINT "FPGA Array is not enabled."; UNIQUEEXITCODE = 32892; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; RLOCK_VERIFY_PASS: LABEL_SEPARATOR = 0; ENDPROC; PROCEDURE VERIFY_ID_DMK USES GV,DO_EXIT,INIT_AES; CALL INIT_AES; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $0a; DRSCAN 128, M7BUFF[]; WAIT IDLE, 3 CYCLES; WAIT IDLE, 90 USEC; DRSCAN 128, $00000000000000000000000000000000, CAPTURE BUFF128[],COMPARE $c0000000000000000000000000000000 ,$c0000000000000000000000000000000,PASS; IF ( ! (BUFF128[127]==0) ) THEN GOTO M7VERDONE; STATUS = -31; PRINT "Failed to verify AES Sec."; UNIQUEEXITCODE = 32775; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; M7VERDONE: IF ( ! ( (BUFF128[126]==0)||(BM7DEVICE==0)) ) THEN GOTO MXIDOK; IF ( ! ( (BUFF128[126]==1)&&(BM7DEVICE==0)) ) THEN GOTO LDETECTM1; STATUS = 6; PRINT "Failed to verify IDCODE."; PRINT "Target is an M7 device."; UNIQUEEXITCODE = 32776; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; LDETECTM1: IF ( ! (BUFF128[126]==0) ) THEN GOTO Label_78; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $0a; DRSCAN 128, M1BUFF[]; WAIT IDLE, 3 CYCLES; WAIT IDLE, 90 USEC; DRSCAN 128, $00000000000000000000000000000000, CAPTURE BUFF128[],COMPARE $c0000000000000000000000000000000 ,$c0000000000000000000000000000000,PASS; IF ( ! (BUFF128[127]==0) ) THEN GOTO M1VERDONE; STATUS = -31; PRINT "Failed to verify AES Sec."; UNIQUEEXITCODE = 32777; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; M1VERDONE: BOOLEAN BTMPBUFFBIT126 = BUFF128[126]; IF ( ! ( (BTMPBUFFBIT126==1)&&(BM1DEVICE==0)) ) THEN GOTO REGDEV; STATUS = 6; PRINT "Failed to verify IDCODE."; PRINT "Target is an M1 device."; UNIQUEEXITCODE = 32778; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; REGDEV: IF ( ! ( (BTMPBUFFBIT126==0)&&(BM7DEVICE==1)) ) THEN GOTO Label_76; STATUS = 6; PRINT "Failed to verify IDCODE."; PRINT "The Target is not an M7 Device."; UNIQUEEXITCODE = 32781; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; Label_76: IF ( ! ( (BTMPBUFFBIT126==0)&&(BM1DEVICE==1)) ) THEN GOTO Label_77; STATUS = 6; PRINT "Failed to verify IDCODE."; PRINT "The Target is not an M1 Device."; UNIQUEEXITCODE = 32782; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; Label_77: LABEL_SEPARATOR = 0; Label_78: LABEL_SEPARATOR = 0; MXIDOK: LABEL_SEPARATOR = 0; ENDPROC; PROCEDURE VERIFY_IDCODE USES GV,PARAMETERS,DO_EXIT,VERIFY_ID_DMK; FREQUENCY (FREQ*1000000); WAIT RESET, 5 CYCLES; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $0f; DRSCAN 32, $00000000; WAIT IDLE, 1 CYCLES; DRSCAN 32, $00000000, CAPTURE ID[],COMPARE IDCODEVALUE[],IDMASK[],PASS; IF ( ! (PASS==0) ) THEN GOTO IDOK; STATUS = 6; PRINT "Failed to verify IDCODE"; UNIQUEEXITCODE = 32797; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; IDOK: CALL VERIFY_ID_DMK; IDREV = INT(ID[31..28]); IDFAB = INT(ID[25..25]); ENDPROC; PROCEDURE IS_SECOK USES GV,DO_EXIT; IF ( ! (SECKEY_OK==0) ) THEN GOTO SECOK; STATUS = -35; PRINT "Failed to match pass key."; UNIQUEEXITCODE = 32799; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; SECOK: LABEL_SEPARATOR = 0; ENDPROC; PROCEDURE DO_CHECK_R USES GV,DO_EXIT,DO_READ_SECURITY; CALL DO_READ_SECURITY; IF ( ! (ULARE==1) ) THEN GOTO ARRAYEPR; STATUS = -33; PRINT "FPGA Array Encryption is enforced. Plain text verification is prohibited."; UNIQUEEXITCODE = 32800; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; ARRAYEPR: IF ( ! (ULARD==1) ) THEN GOTO SKIPRCHK1; STATUS = -30; PRINT "FPGA Array Verification is protected by pass key."; PRINT "A valid pass key needs to be provided."; UNIQUEEXITCODE = 32804; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; SKIPRCHK1: IF ( ! (ULARD==0) ) THEN GOTO Label_79; CHKSEC = 0; Label_79: LABEL_SEPARATOR = 0; ENDPROC; PROCEDURE DO_CHECK_W USES GV,DO_EXIT,DO_READ_SECURITY; CALL DO_READ_SECURITY; IF ( ! (ULAWE==1) ) THEN GOTO ARRAYWP; STATUS = -28; PRINT "FPGA Array Write/Erase is protected by pass key."; PRINT "A valid pass key needs to be provided."; UNIQUEEXITCODE = 32805; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; ARRAYWP: IF ( ! (ULARD==1) ) THEN GOTO ARRAYRPW; STATUS = -30; PRINT "FPGA Array Verification is protected by pass key."; PRINT "A valid pass key needs to be provided."; UNIQUEEXITCODE = 32806; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; ARRAYRPW: IF ( ! (ULARE==1) ) THEN GOTO ARRAYEPW; STATUS = -33; PRINT "FPGA Array Encryption is enforced. Plain text programming is prohibited."; CALL DO_EXIT; ARRAYEPW: LABEL_SEPARATOR = 0; ENDPROC; PROCEDURE DO_CHECK_NVM_0_W USES GV,DO_EXIT,DO_READ_SECURITY; CALL DO_READ_SECURITY; IF ( ! (ULNW0==1) ) THEN GOTO Label_80; STATUS = -48; PRINT "Embedded Flash Memory Block (EFMB) block 0 Write is protected by pass key."; PRINT "A valid pass key needs to be provided."; UNIQUEEXITCODE = 32817; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; Label_80: IF ( ! (ULNC0==1) ) THEN GOTO Label_81; STATUS = -47; PRINT "Embedded Flash Memory Block (EFMB) block 0 Encryption is enforced."; PRINT "A programming file with encrypted EFMB data needs to be provided."; UNIQUEEXITCODE = 32818; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; Label_81: IF ( ! (ULNR0==1) ) THEN GOTO Label_82; STATUS = -46; PRINT "Embedded Flash Memory Block (EFMB) block 0 Read is protected by pass key."; PRINT "A valid pass key needs to be provided."; UNIQUEEXITCODE = 32819; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; Label_82: LABEL_SEPARATOR = 0; ENDPROC; PROCEDURE DO_CHECK_NVM_0_R USES GV,DO_EXIT,DO_READ_SECURITY; CALL DO_READ_SECURITY; IF ( ! (ULNR0==1) ) THEN GOTO Label_83; STATUS = -46; PRINT "Embedded Flash Memory Block (EFMB) block 0 Read is protected by pass key."; PRINT "A valid pass key needs to be provided."; UNIQUEEXITCODE = 32837; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; Label_83: IF ( ! ( (ULUPC==1)&&(ULNR0==0)) ) THEN GOTO Label_84; CHKSEC = 0; Label_84: LABEL_SEPARATOR = 0; ENDPROC; PROCEDURE BP_VER USES GV; BOOLEAN PLAYER_VERSION_BOOLEAN[32]; PLAYER_VERSION_BOOLEAN[31..0] = BOOL(PLAYERVERSIONVARIABLE); INTEGER PLAYER_MAJOR_VERSION =(INT(PLAYER_VERSION_BOOLEAN[23..16])-SCULPTORMAJORBASE); INTEGER PLAYER_MINOR_VERSION =(INT(PLAYER_VERSION_BOOLEAN[15..8])-SCULPTORMINORBASE); ACT_UROW_SW_VERSION[6..5] = BOOL(PLAYER_MAJOR_VERSION); ACT_UROW_SW_VERSION[4..1] = BOOL(PLAYER_MINOR_VERSION); ACT_UROW_SW_VERSION[0] = PLAYER_VERSION_BOOLEAN[0]; ENDPROC; PROCEDURE SET_NVM_ACTIVE_ARRAY USES NVM_V; NVMACTIVEARRAY = 1; ENDPROC; PROCEDURE SET_PRG_ARRAY USES GV; ISPRGARRAY = 1; ENDPROC; PROCEDURE DO_INITIALIZE_ACCESS_NVM USES NVM_V,GV,DO_EXIT_ACCESS_NVM; NVMACCESS[0] = 1; NVMMASK[0] = 1; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $b6; DRSCAN 5, NVMACCESS[]; WAIT IDLE, 3 CYCLES; WAIT IDLE, 2 USEC; DRSCAN 5, $00, CAPTURE NVMBUSY[],COMPARE $00,NVMMASK[],PASS; IF ( ! (PASS==0) ) THEN GOTO Label_85; WAIT 100 USEC; INTEGER ILOOP_0; FOR ILOOP_0 = MAXATTEMPTNVMACCESS - 1 TO 0 STEP -1; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $b6; DRSCAN 5, NVMACCESS[]; WAIT IDLE, 3 CYCLES; WAIT IDLE, 2 USEC; DRSCAN 5, $00, CAPTURE NVMBUSY[],COMPARE $00,NVMMASK[],PASS; IF PASS THEN ILOOP_0 = 0; NEXT ILOOP_0; Label_85: IF ( ! (PASS==0) ) THEN GOTO Label_86; STATUS = -54; PRINT "Failed to access Embedded Flash Memory."; EXPORT "nvmBusy: ", NVMBUSY[]; EXPORT "nvmAccess: ", NVMACCESS[]; UNIQUEEXITCODE = 32849; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT_ACCESS_NVM; Label_86: LABEL_SEPARATOR = 0; ENDPROC; PROCEDURE DO_SWITCH USES GV; IF ( ! (SAMPLEMASK[BSROINDEX]==1) ) THEN GOTO NOTSAMPLINGOUTPUT; BSR[BSROINDEX] = SAMPLE_DEVICE[(BSROINDEX+1)]; NOTSAMPLINGOUTPUT: IF ( ! (SAMPLEMASK[(BSROINDEX+1)]==1) ) THEN GOTO NOTSAMPLINGOUTPUTENABLE; BSR[(BSROINDEX+1)] = SAMPLE_DEVICE[BSROINDEX]; NOTSAMPLINGOUTPUTENABLE: LABEL_SEPARATOR = 0; ENDPROC; PROCEDURE DO_SWITCH_EMI USES GV,DO_SWITCH; FOR I = 0 TO 49; BSROINDEX = OINDICES[I]; CALL DO_SWITCH; NEXT I; ENDPROC; PROCEDURE DO_INITIALIZE USES GV,NVM_V,DO_EXIT,READ_F_ROW,DO_CHECK_R,DO_CHECK_W,DO_CHECK_NVM_0_W ,DO_CHECK_NVM_0_R,BP_VER,DO_SWITCH_EMI; NVMACTIVEARRAY = 0; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $7f; WAIT IDLE, 3 CYCLES; WAIT IDLE, 50 USEC; BSR[884..0] = BSRPATTERN[884..0]; BOOLEAN SHIFT_DATA[885]; IRSCAN 8, $01; DRSCAN 885, BSR[]; WAIT IDLE, 1 CYCLES; DRSCAN 885, SHIFT_DATA[], CAPTURE SAMPLE_DEVICE[]; FOR I = 0 TO 884; IF ( ! (SAMPLEMASK[I]==1) ) THEN GOTO Label_87; BSR[I] = SAMPLE_DEVICE[I]; Label_87: LABEL_SEPARATOR = 0; NEXT I; IF ( ! ( (IDFAB==0)&&(IDREV==0)) ) THEN GOTO NOEMISWAPNEEDED; CALL DO_SWITCH_EMI; NOEMISWAPNEEDED: IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $01; DRSCAN 885, BSR[]; WAIT IDLE, 1 CYCLES; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $c0; WAIT IDLE, 1 CYCLES; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $80; DRSCAN 18, $00000; WAIT IDLE, 3 CYCLES; WAIT IDLE, 1875 USEC; DRSCAN 18, $00000, CAPTURE ISC_CONFIG_RESULT[],COMPARE $30000,$30000,PASS; IF ( ! (PASS==0) ) THEN GOTO CRCOK; STATUS = 5; PRINT "Failed to enter programming mode."; EXPORT "ISC_Config_Result", ISC_CONFIG_RESULT[]; UNIQUEEXITCODE = 32850; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; CRCOK: FADDR[] = $0; CALL READ_F_ROW; EXPORT "FSN", BUFF128[55..8]; IF ( ! (CHKARRAY==1) ) THEN GOTO SKIPCHKARRAY; IF ( ! (ARRAYRONLY==0) ) THEN GOTO Label_88; CALL DO_CHECK_W; Label_88: IF ( ! (ARRAYRONLY==1) ) THEN GOTO Label_89; CALL DO_CHECK_R; Label_89: LABEL_SEPARATOR = 0; SKIPCHKARRAY: IF ( ! (CHKNVM==1) ) THEN GOTO Label_92; IF ( ! (NVM0RONLY==0) ) THEN GOTO Label_90; CALL DO_CHECK_NVM_0_W; Label_90: IF ( ! (NVM0RONLY==1) ) THEN GOTO Label_91; CALL DO_CHECK_NVM_0_R; Label_91: LABEL_SEPARATOR = 0; Label_92: IF ( ! (PLAYERVERSIONVARIABLE!=0) ) THEN GOTO Label_93; CALL BP_VER; Label_93: LABEL_SEPARATOR = 0; ENDPROC; PROCEDURE READ_INITIALIZE USES GV,DO_INITIALIZE; CHKFROM = 0; CHKARRAY = 0; CHKNVM = 0; CHKSEC = 0; CALL DO_INITIALIZE; ENDPROC; PROCEDURE NW_INITIALIZE_COMMON USES GV; CHKNVM = 1; NVM0RONLY = 0; CHKFROM = 0; CHKARRAY = 0; ENDPROC; PROCEDURE NW_INITIALIZE_ACCESS_NVM USES DO_INITIALIZE_ACCESS_NVM,NW_INITIALIZE_COMMON; CALL NW_INITIALIZE_COMMON; CALL DO_INITIALIZE_ACCESS_NVM; ENDPROC; PROCEDURE NW_INITIALIZE USES DO_INITIALIZE,NW_INITIALIZE_COMMON; CALL NW_INITIALIZE_COMMON; CALL DO_INITIALIZE; ENDPROC; PROCEDURE NR_INITIALIZE_COMMON USES GV; CHKNVM = 1; NVM0RONLY = 1; CHKFROM = 0; CHKARRAY = 0; ENDPROC; PROCEDURE NR_INITIALIZE USES DO_INITIALIZE,NR_INITIALIZE_COMMON; CALL NR_INITIALIZE_COMMON; CALL DO_INITIALIZE; ENDPROC; PROCEDURE NR_INITIALIZE_ACCESS_NVM USES DO_INITIALIZE_ACCESS_NVM,NR_INITIALIZE_COMMON; CALL NR_INITIALIZE_COMMON; CALL DO_INITIALIZE_ACCESS_NVM; ENDPROC; PROCEDURE AW_INITIALIZE USES GV,DO_INITIALIZE; ARRAYRONLY = 0; CHKFROM = 0; CHKARRAY = 1; CHKNVM = 0; CALL DO_INITIALIZE; ENDPROC; PROCEDURE AR_INITIALIZE USES GV,DO_INITIALIZE; ARRAYRONLY = 1; CHKFROM = 0; CHKARRAY = 1; CHKNVM = 0; CALL DO_INITIALIZE; ENDPROC; PROCEDURE W_INITIALIZE USES GV,DO_INITIALIZE; ARRAYRONLY = 0; CHKARRAY = 1; CHKNVM = 1; NVM0RONLY = 0; CALL DO_INITIALIZE; ENDPROC; PROCEDURE R_INITIALIZE USES GV,DO_INITIALIZE; ARRAYRONLY = 1; CHKARRAY = 1; CHKNVM = 1; NVM0RONLY = 1; CALL DO_INITIALIZE; ENDPROC; PROCEDURE INITIALIZE USES GV,DO_INITIALIZE; ARRAYRONLY = 0; FROMRONLY = 0; NVM0RONLY = 1; CHKFROM = 1; CHKARRAY = 1; CHKNVM = 1; CALL DO_INITIALIZE; ENDPROC; PROCEDURE POLL_ERASE USES GV; PASS = 0; INTEGER ILOOP_1; FOR ILOOP_1 = 262141 - 1 TO 0 STEP -1; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $84; WAIT IDLE, 1 CYCLES; WAIT IDLE, 1000 USEC; DRSCAN 5, $00,COMPARE $00,$03,PASS; IF PASS THEN ILOOP_1 = 0; NEXT ILOOP_1; ENDPROC; PROCEDURE POLL_PROGRAM USES GV; INTEGER ILOOP_2; FOR ILOOP_2 = 16381 - 1 TO 0 STEP -1; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $84; WAIT IDLE, 1 CYCLES; WAIT IDLE, 100 USEC; DRSCAN 5, $00,COMPARE $00,$0b,PASS; IF PASS THEN ILOOP_2 = 0; NEXT ILOOP_2; ENDPROC; PROCEDURE PROGRAM_UROW USES GV,BITSTREAM,DO_EXIT,POLL_PROGRAM; FOR FROMROWNUMBER = NUMBEROFFROMROWS TO 1 STEP -1; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $9f; DRSCAN 3, BOOL((FROMROWNUMBER-1)); WAIT IDLE, 1 CYCLES; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $9b; DRSCAN 128, $ffffffffffffffffffffffffffffffff; WAIT IDLE, 5 CYCLES; WAIT IDLE, 10000 USEC; NEXT FROMROWNUMBER; IF ( ! (ISERASEONLY==0) ) THEN GOTO SKIP_CYC_INCREMENT; IF ( ! ( (ISPRGARRAY==1)&&(ACT_UROW_CYCLE_COUNT!=1023)) ) THEN GOTO Label_94; ACT_UROW_CYCLE_COUNT = (ACT_UROW_CYCLE_COUNT+1); Label_94: LABEL_SEPARATOR = 0; SKIP_CYC_INCREMENT: IF ( ! (ISERASEONLY==1) ) THEN GOTO Label_95; UROW[] = $ffffffffffffffffffffffffffffffff; Label_95: IF ( ! ( (ISERASEONLY==0)||(ISRESTOREDESIGN==1)) ) THEN GOTO SKIP_DESIGN_INFO; BUFF32[31..0] = BOOL(CHECKSUM); IF ( ! ( !ISRESTOREDESIGN) ) THEN GOTO Label_96; UROW[127..112] = BUFF32[15..0]; Label_96: IF ( ! ISRESTOREDESIGN ) THEN GOTO Label_97; UROW[127..112] = SUROWCHECKSUM[15..0]; Label_97: IF ( ! ( !ISRESTOREDESIGN) ) THEN GOTO Label_98; UROW[101..32] = ACT_UROW_DESIGN_NAME[69..0]; Label_98: IF ( ! ISRESTOREDESIGN ) THEN GOTO Label_99; UROW[101..32] = SUROWDESIGNNAME[69..0]; Label_99: LABEL_SEPARATOR = 0; SKIP_DESIGN_INFO: BUFF32[31..0] = BOOL(ACT_UROW_CYCLE_COUNT); UROW[111..102] = BUFF32[9..0]; UROW[31..29] = ACT_UROW_PROG_METHOD[2..0]; UROW[28..25] = ACT_UROW_ALGO_VERSION[3..0]; UROW[16..10] = ACT_UROW_SW_VERSION[6..0]; UROW[9..6] = ACT_UROW_PROGRAM_SW[3..0]; UROW[4] = SUROW_SRAM_DISTURB[0]; IF ( ! (ACT_UROW_ALGO_VERSION[6]==1) ) THEN GOTO Label_100; UROW[5] = 1; UROW[0] = 0; UROW[24..23] = ACT_UROW_ALGO_VERSION[5..4]; Label_100: IF ( ! (ACT_UROW_ALGO_VERSION[6]==0) ) THEN GOTO Label_101; UROW[5] = 0; UROW[0] = 1; UROW[24..23] = ACT_UROW_ALGO_VERSION[5..4]; Label_101: IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $a7; DRSCAN 128, UROW[]; WAIT IDLE, 15 CYCLES; CALL POLL_PROGRAM; IF ( ! (PASS==0) ) THEN GOTO PROGRAM_OK3; STATUS = -24; PRINT "Failed to program UROW"; UNIQUEEXITCODE = 32853; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; PROGRAM_OK3: IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $c0; WAIT IDLE, 1 CYCLES; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $a8; WAIT IDLE, 3 CYCLES; WAIT IDLE, 165 USEC; DRSCAN 128, $00000000000000000000000000000000,COMPARE UROW[],UROW_MASK[],PASS; IF ( ! (PASS==0) ) THEN GOTO UROW_OK; STATUS = -24; PRINT "Failed to program UROW"; UNIQUEEXITCODE = 32854; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; UROW_OK: LABEL_SEPARATOR = 0; ENDPROC; PROCEDURE FAIL_ERASE USES GV,DO_EXIT; STATUS = 8; PRINT "Failed Erase Operation"; UNIQUEEXITCODE = 32855; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; ENDPROC; PROCEDURE EXE_ERASE USES BITSTREAM,GV,READ_UROW,POLL_ERASE,PROGRAM_UROW,FAIL_ERASE; IF ( ! (COMBERASESELECT[14]==1) ) THEN GOTO SKIPRUROW; CALL READ_UROW; EXPORT "ACTEL_SLOG_UROW", UROW[]; SKIPRUROW: IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $85; DRSCAN 23, COMBERASESELECT[]; WAIT IDLE, 3 CYCLES; CALL POLL_ERASE; IF ( ! (PASS==0) ) THEN GOTO ERASEOK; CALL FAIL_ERASE; ERASEOK: IF ( ! (COMBERASESELECT[14]==1) ) THEN GOTO Label_102; CALL PROGRAM_UROW; Label_102: LABEL_SEPARATOR = 0; ENDPROC; PROCEDURE DO_ERASE USES GV,EXE_ERASE; PRINT "Erase ..."; COMBERASESELECT[22..0] = $004000; COMBERASESELECT[0] = 1; CALL EXE_ERASE; PRINT "Completed erase"; ENDPROC; PROCEDURE DO_ERASE_ARRAY USES GV,EXE_ERASE; PRINT "Erase FPGA Array ..."; COMBERASESELECT[22..0] = $004001; CALL EXE_ERASE; ENDPROC; PROCEDURE DO_ERASE_ONLY USES GV,DO_ERASE; ISERASEONLY = 1; CALL DO_ERASE; ENDPROC; PROCEDURE DO_ERASE_ARRAY_ONLY USES GV,DO_ERASE_ARRAY; ISERASEONLY = 1; CALL DO_ERASE_ARRAY; ENDPROC; PROCEDURE DO_ERASE_ALL USES GV,EXE_ERASE; IF ( ! ( (BM7DEVICE==1)||(BM1DEVICE==1)) ) THEN GOTO Label_103; PRINT "Erase FPGA Array and FlashROM ..."; Label_103: IF ( ! ( (BM7DEVICE!=1)&&(BM1DEVICE!=1)) ) THEN GOTO Label_104; PRINT "Erase FPGA Array, FlashROM and Security Settings ..."; Label_104: COMBERASESELECT[22..0] = $7fc00f; ISERASEONLY = 1; CALL EXE_ERASE; ENDPROC; PROCEDURE LOAD_ROW_DATA USES BITSTREAM,GV; FOR SDTILE = 1 TO NUMBEROFSDTILES; FOR I = 1 TO 8; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $89; DRSCAN 26, DATASTREAM[(DATAINDEX+25)..DATAINDEX]; WAIT IDLE, 3 CYCLES; DATAINDEX = (DATAINDEX+26); NEXT I; NEXT SDTILE; ENDPROC; PROCEDURE EXE_PROGRAM USES GV,DO_EXIT,POLL_PROGRAM; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $83; WAIT IDLE, 3 CYCLES; CALL POLL_PROGRAM; IF ( ! (PASS==0) ) THEN GOTO Label_105; STATUS = 10; PRINT "Failed to program FPGA array at row ",ROWNUMBER,"."; UNIQUEEXITCODE = 32856; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; Label_105: LABEL_SEPARATOR = 0; ENDPROC; PROCEDURE EXE_VERIFY USES GV,DO_EXIT,POLL_PROGRAM; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $8d; DRSCAN 2, VERIFYEOL[]; WAIT IDLE, 3 CYCLES; WAIT IDLE, 264 USEC; CALL POLL_PROGRAM; IF ( ! (PASS==0) ) THEN GOTO Label_106; STATUS = 11; PRINT "Verify 0 failed at row ",ROWNUMBER,"."; UNIQUEEXITCODE = 32857; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; Label_106: IRSCAN 8, $8d; DRSCAN 2, VERIFYEOL[],COMPARE $0,$3,PASS; IF ( ! (PASS==0) ) THEN GOTO Label_107; STATUS = 11; PRINT "Verify 0 failed at row ",ROWNUMBER,"."; UNIQUEEXITCODE = 32858; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; Label_107: IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $8e; DRSCAN 2, VERIFYEOL[]; WAIT IDLE, 3 CYCLES; WAIT IDLE, 264 USEC; CALL POLL_PROGRAM; IF ( ! (PASS==0) ) THEN GOTO Label_108; STATUS = 11; PRINT "Verify 1 failed at row ",ROWNUMBER,"."; UNIQUEEXITCODE = 32859; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; Label_108: IRSCAN 8, $8e; DRSCAN 2, VERIFYEOL[],COMPARE $0,$3,PASS; IF ( ! (PASS==0) ) THEN GOTO Label_109; STATUS = 11; PRINT "Verify 1 failed at row ",ROWNUMBER,"."; UNIQUEEXITCODE = 32860; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; Label_109: LABEL_SEPARATOR = 0; ENDPROC; PROCEDURE DO_PROGRAM USES GV,LOAD_ROW_DATA,EXE_PROGRAM; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $87; DRSCAN 2, $2; WAIT IDLE, 3 CYCLES; PRINT "Programming FPGA Array"; DATAINDEX = 0; ROWNUMBER = (NUMBEROFMAPROWS-1); INTEGER IREPEAT_0; FOR IREPEAT_0 = NUMBEROFMAPROWS - 1 TO 0 STEP -1; CALL LOAD_ROW_DATA; CALL EXE_PROGRAM; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $87; DRSCAN 2, $3; WAIT IDLE, 3 CYCLES; IF ( ! ((ROWNUMBER%ROWITERATION)==0) ) THEN GOTO Label_110; PERCENT_UPDATE = ((100*((NUMBEROFMAPROWS-ROWNUMBER)+1))/NUMBEROFMAPROWS); DIFFERENCE = (PERCENT_UPDATE%10); IF ( ! (DIFFERENCE>=5) ) THEN GOTO ROUND_DOWN_PGM_A; PERCENT_UPDATE = (PERCENT_UPDATE+(10-DIFFERENCE)); ROUND_DOWN_PGM_A: IF ( ! (DIFFERENCE<5) ) THEN GOTO ROUND_UP_PGM_A; PERCENT_UPDATE = (PERCENT_UPDATE-DIFFERENCE); ROUND_UP_PGM_A: EXPORT "PERCENT_DONE", PERCENT_UPDATE; Label_110: ROWNUMBER = (ROWNUMBER-1); NEXT IREPEAT_0; ENDPROC; PROCEDURE DO_VERIFY USES GV,LOAD_ROW_DATA,EXE_VERIFY; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $87; DRSCAN 2, $2; WAIT IDLE, 3 CYCLES; PRINT "Verifying FPGA Array"; DATAINDEX = 0; ROWNUMBER = (NUMBEROFMAPROWS-1); INTEGER IREPEAT_1; FOR IREPEAT_1 = NUMBEROFMAPROWS - 1 TO 0 STEP -1; CALL LOAD_ROW_DATA; CALL EXE_VERIFY; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $87; DRSCAN 2, $3; WAIT IDLE, 3 CYCLES; IF ( ! ((ROWNUMBER%ROWITERATION)==0) ) THEN GOTO Label_111; PERCENT_UPDATE = ((100*((NUMBEROFMAPROWS-ROWNUMBER)+1))/NUMBEROFMAPROWS); DIFFERENCE = (PERCENT_UPDATE%10); IF ( ! (DIFFERENCE>=5) ) THEN GOTO ROUND_DOWN_VER_ARRAY; PERCENT_UPDATE = (PERCENT_UPDATE+(10-DIFFERENCE)); ROUND_DOWN_VER_ARRAY: IF ( ! (DIFFERENCE<5) ) THEN GOTO ROUND_UP_VER_ARRAY; PERCENT_UPDATE = (PERCENT_UPDATE-DIFFERENCE); ROUND_UP_VER_ARRAY: EXPORT "PERCENT_DONE", PERCENT_UPDATE; Label_111: ROWNUMBER = (ROWNUMBER-1); NEXT IREPEAT_1; PRINT " Verifying FPGA Array -- pass"; ENDPROC; PROCEDURE DO_VERIFY_BOL USES GV,DO_VERIFY; VERIFYEOL[0] = 0; CALL DO_VERIFY; ENDPROC; PROCEDURE DO_VERIFY_EOL USES GV,DO_VERIFY; VERIFYEOL[0] = 1; CALL DO_VERIFY; ENDPROC; PROCEDURE DO_PROGRAM_RLOCK USES GV,DO_EXIT,POLL_PROGRAM; DATAINDEX = 0; INTEGER IREPEAT_2; FOR IREPEAT_2 = NUMBEROFSDTILES - 1 TO 0 STEP -1; FOR I = 1 TO 8; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $89; DRSCAN 26, RLOCK[(DATAINDEX+25)..DATAINDEX]; WAIT IDLE, 3 CYCLES; DATAINDEX = (DATAINDEX+26); NEXT I; NEXT IREPEAT_2; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $8c; WAIT IDLE, 3 CYCLES; CALL POLL_PROGRAM; IF ( ! (PASS==0) ) THEN GOTO Label_112; STATUS = 10; PRINT "Failed to enable FPGA Array."; UNIQUEEXITCODE = 32862; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; Label_112: LABEL_SEPARATOR = 0; ENDPROC; PROCEDURE DO_READ_IDCODE USES READ_IDCODE_ONLY; WAIT RESET, 5 CYCLES; CALL READ_IDCODE_ONLY; EXIT 0; ENDPROC; PROCEDURE DO_PROGRAM_NVM_PRIV USES NVM_V,GV,DO_EXIT,DO_EXIT_ACCESS_NVM,DO_CHECK_NVM_0_W; CALL DO_CHECK_NVM_0_W; PRINT "Program System Init and Boot Clients..."; NVMWORDS = (NVMDATASTREAMSIZEPRIV_0/32); NVMPAGES = (NVMWORDS/32); NVMWORDCOUNT = 0; NVMDATAINDEX = 0; NVMADDRESS[] = $000000000; NVMADDRESS[12..11] = $2; PROTECTION[] = $00; PAR = -1; PARWORDCOUNT = 0; PARSIZE = 0; INTEGER IREPEAT_3; FOR IREPEAT_3 = NVMPAGES - 1 TO 0 STEP -1; IF ( ! (PARWORDCOUNT==PARSIZE) ) THEN GOTO Label_113; PARWORDCOUNT = 0; PAR = (PAR+1); NVMADDRESS[34..13] = NVMADDRPRIV_0[(((PAR+1)*22)-1)..(PAR*22)]; NVMADDRESS[20] = 0; PAGEADDRESS = INT(NVMADDRESS[34..21]); PARSIZE = INT(NVMPARSIZEPRIV_0[(((PAR+1)*32)-1)..(PAR*32)]); PROTECTION[4..2] = NVMPROTECTPRIV_0[(((PAR+1)*3)-1)..(PAR*3)]; Label_113: BUFF32[31..0] = BOOL(PAGEADDRESS); NVMADDRESS[34..21] = BUFF32[13..0]; IRSCAN 8, $b8; DRSCAN 35, NVMADDRESS[]; WAIT 3 CYCLES; WAIT 20 USEC, DRPAUSE; FOR NVMPOLL = 0 TO 10000; DRSCAN 35, NVMADDRESS[], CAPTURE BUFF128[34..0],COMPARE $000000000,$400000000 ,PASS; IF ( ! (PASS==1) ) THEN GOTO Label_114; NVMPOLL = 10000; Label_114: IF ( ! (PASS!=1) ) THEN GOTO Label_115; IRSCAN 8, $b8; WAIT DRPAUSE, 100 USEC, DRPAUSE; Label_115: LABEL_SEPARATOR = 0; NEXT NVMPOLL; IF ( ! (PASS==0) ) THEN GOTO NVMADDRSHIFTOK_1_PRIV; PRINT "Error programming system init and boot clients."; STATUS = 10; IF ( ! (NVMACTIVEARRAY==1) ) THEN GOTO Label_116; UNIQUEEXITCODE = 32893; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT_ACCESS_NVM; Label_116: IF ( ! (NVMACTIVEARRAY==0) ) THEN GOTO Label_117; UNIQUEEXITCODE = 32894; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; Label_117: LABEL_SEPARATOR = 0; NVMADDRSHIFTOK_1_PRIV: FOR I = 1 TO 32; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $b9; DRSCAN 32, NVMDATAPRIV_0[(NVMDATAINDEX+31)..NVMDATAINDEX]; WAIT IDLE, 3 CYCLES; WAIT IDLE, 5 USEC; NVMDATAINDEX = (NVMDATAINDEX+32); NEXT I; PAGEADDRESS = (PAGEADDRESS+1); PARWORDCOUNT = (PARWORDCOUNT+32); IRSCAN 8, $ba; DRSCAN 5, PROTECTION[]; WAIT 3 CYCLES; WAIT 100 USEC, DRPAUSE; FOR NVMPOLL = 0 TO 10000; DRSCAN 5, PROTECTION[], CAPTURE BUFF128[4..0],COMPARE $00,$14,PASS; IF ( ! (PASS==1) ) THEN GOTO Label_118; NVMPOLL = 10000; Label_118: IF ( ! (PASS!=1) ) THEN GOTO Label_119; IRSCAN 8, $ba; WAIT DRPAUSE, 100 USEC, DRPAUSE; Label_119: LABEL_SEPARATOR = 0; NEXT NVMPOLL; IF ( ! (PASS==0) ) THEN GOTO CONTPROG_PRIV; PRINT "Error programming system init and boot clients."; PRINT "Partition : ",PAR; PRINT "Word: ",PARWORDCOUNT; PRINT "Page Address : ",PAGEADDRESS; EXPORT "BUSY", BUFF128[4..4]; EXPORT "PrgStat", BUFF128[3..2]; EXPORT "NvmStat", BUFF128[1..0]; BUFF32[31..0] = BOOL(PAGEADDRESS); NVMADDRESS[34..21] = BUFF32[]; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $b8; DRSCAN 35, NVMADDRESS[]; WAIT IDLE, 3 CYCLES; WAIT IDLE, 20 USEC; DRSCAN 35, $000000000, CAPTURE BUFF128[34..0]; IF ( ! (BUFF128[0]==1) ) THEN GOTO Label_120; PRINT "Overwrite Protect ON"; Label_120: IF ( ! (BUFF128[1]==1) ) THEN GOTO Label_121; PRINT "Write Protect ON"; Label_121: IF ( ! (BUFF128[2]==1) ) THEN GOTO Label_122; PRINT "Read Protect ON"; Label_122: IF ( ! (BUFF128[0]!=1) ) THEN GOTO Label_123; PRINT "Overwrite Protect OFF"; Label_123: IF ( ! (BUFF128[1]!=1) ) THEN GOTO Label_124; PRINT "Write Protect OFF"; Label_124: IF ( ! (BUFF128[2]!=1) ) THEN GOTO Label_125; PRINT "Read Protect OFF"; Label_125: STATUS = 10; IF ( ! (NVMACTIVEARRAY==1) ) THEN GOTO Label_126; UNIQUEEXITCODE = 32895; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT_ACCESS_NVM; Label_126: IF ( ! (NVMACTIVEARRAY==0) ) THEN GOTO Label_127; UNIQUEEXITCODE = 32896; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; Label_127: LABEL_SEPARATOR = 0; CONTPROG_PRIV: NVMWORDCOUNT = (NVMWORDCOUNT+32); IF ( ! (((NVMWORDCOUNT/32)%PAGEITERATION)==0) ) THEN GOTO Label_128; PERCENT_UPDATE = ((100*NVMWORDCOUNT)/NVMWORDS); DIFFERENCE = (PERCENT_UPDATE%10); IF ( ! (DIFFERENCE>=5) ) THEN GOTO ROUND_DOWN_PGM_NVM_PRIV; PERCENT_UPDATE = (PERCENT_UPDATE+(10-DIFFERENCE)); ROUND_DOWN_PGM_NVM_PRIV: IF ( ! (DIFFERENCE<5) ) THEN GOTO ROUND_UP_PGM_NVM_PRIV; PERCENT_UPDATE = (PERCENT_UPDATE-DIFFERENCE); ROUND_UP_PGM_NVM_PRIV: EXPORT "PERCENT_DONE", PERCENT_UPDATE; Label_128: LABEL_SEPARATOR = 0; NEXT IREPEAT_3; ENDPROC; PROCEDURE DO_VERIFY_NVM_PRIV USES NVM_V,GV,DO_EXIT,DO_EXIT_ACCESS_NVM; PRINT "Verify System Init and Boot Clients..."; NVMWORDS = (NVMDATASTREAMSIZEPRIV_0/32); NVMPAGES = (NVMWORDS/32); NVMWORDCOUNT = 0; NVMDATAINDEX = 0; NVMADDRESS[] = $000000000; NVMADDRESS[12..11] = $2; PROTECTION[] = $00; PAR = -1; PARWORDCOUNT = 0; PARSIZE = 0; INTEGER IREPEAT_4; FOR IREPEAT_4 = NVMPAGES - 1 TO 0 STEP -1; IF ( ! (PARWORDCOUNT==PARSIZE) ) THEN GOTO Label_129; PARWORDCOUNT = 0; PAR = (PAR+1); NVMADDRESS[34..13] = NVMADDRPRIV_0[(((PAR+1)*22)-1)..(PAR*22)]; NVMADDRESS[20] = 0; PAGEADDRESS = INT(NVMADDRESS[34..21]); PARSIZE = INT(NVMPARSIZEPRIV_0[(((PAR+1)*32)-1)..(PAR*32)]); PROTECTION[4..2] = NVMPROTECTPRIV_0[(((PAR+1)*3)-1)..(PAR*3)]; Label_129: BUFF32[31..0] = BOOL(PAGEADDRESS); NVMADDRESS[34..21] = BUFF32[13..0]; IRSCAN 8, $b8; DRSCAN 35, NVMADDRESS[]; WAIT 3 CYCLES; WAIT 20 USEC, DRPAUSE; FOR NVMPOLL = 0 TO 10000; DRSCAN 35, NVMADDRESS[], CAPTURE BUFF128[34..0],COMPARE $000000000,$400000000 ,PASS; IF ( ! (PASS==1) ) THEN GOTO Label_130; NVMPOLL = 10000; Label_130: IF ( ! (PASS!=1) ) THEN GOTO Label_131; IRSCAN 8, $b8; WAIT DRPAUSE, 100 USEC, DRPAUSE; Label_131: LABEL_SEPARATOR = 0; NEXT NVMPOLL; IF ( ! (PASS==1) ) THEN GOTO VERIFY_ECC_LABEL_PRIV; IF ( ! ( (BUFF128[33]==1)&&(BUFF128[32]==0)) ) THEN GOTO VERIFY_CC_PRIV; PRINT "ERROR: 2 or more errors found on this page, please try reprogramming."; STATUS = -39; IF ( ! (NVMACTIVEARRAY==1) ) THEN GOTO Label_132; UNIQUEEXITCODE = 32897; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT_ACCESS_NVM; Label_132: IF ( ! (NVMACTIVEARRAY==0) ) THEN GOTO Label_133; UNIQUEEXITCODE = 32898; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; Label_133: LABEL_SEPARATOR = 0; VERIFY_CC_PRIV: IF ( ! ( (BUFF128[33]==1)&&(BUFF128[32]==1)) ) THEN GOTO VERIFY_WC_PRIV; PRINT "WARNING: Write count threshold exceeded."; VERIFY_WC_PRIV: LABEL_SEPARATOR = 0; VERIFY_ECC_LABEL_PRIV: IF ( ! (PASS==0) ) THEN GOTO NVMADDRSHIFTOK_0_PRIV; PRINT "Failed to verify system init and boot clients."; STATUS = 11; IF ( ! (NVMACTIVEARRAY==1) ) THEN GOTO Label_134; UNIQUEEXITCODE = 32899; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT_ACCESS_NVM; Label_134: IF ( ! (NVMACTIVEARRAY==0) ) THEN GOTO Label_135; UNIQUEEXITCODE = 32900; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; Label_135: LABEL_SEPARATOR = 0; NVMADDRSHIFTOK_0_PRIV: FOR I = 0 TO 31; BUFF128[34..0] = $000000000; BUFF128[31..0] = NVMDATAPRIV_0[(NVMDATAINDEX+31)..NVMDATAINDEX]; IRSCAN 8, $b7; DRSCAN 35, $000000000; WAIT 3 CYCLES; WAIT 30 USEC, DRPAUSE; FOR NVMPOLL = 0 TO 100; DRSCAN 35, $000000000, CAPTURE NVMCAPTURE[34..0],COMPARE BUFF128[34..0] ,$6ffffffff,PASS; IF ( ! (PASS==1) ) THEN GOTO Label_136; NVMPOLL = 10000; Label_136: IF ( ! (PASS!=1) ) THEN GOTO Label_137; IRSCAN 8, $b7; WAIT DRPAUSE, 50 USEC, DRPAUSE; Label_137: LABEL_SEPARATOR = 0; NEXT NVMPOLL; IF ( ! (PASS==0) ) THEN GOTO CONTCOMPARENVM_PRIV; PRINT "Failed to verify system boot and init clients."; EXPORT "NvmAddress", NVMADDRESS[]; EXPORT "ExpData", BUFF128[31..0]; EXPORT "CapData", NVMCAPTURE[31..0]; EXPORT "CapDataStat", NVMCAPTURE[34..32]; PRINT "Page: ",PAGEADDRESS; PRINT "Page Offset: ",I; PRINT "Word: ",PARWORDCOUNT; STATUS = 11; IF ( ! (NVMACTIVEARRAY==1) ) THEN GOTO Label_138; UNIQUEEXITCODE = 32901; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT_ACCESS_NVM; Label_138: IF ( ! (NVMACTIVEARRAY==0) ) THEN GOTO Label_139; UNIQUEEXITCODE = 32902; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; Label_139: LABEL_SEPARATOR = 0; CONTCOMPARENVM_PRIV: NVMDATAINDEX = (NVMDATAINDEX+32); NEXT I; PAGEADDRESS = (PAGEADDRESS+1); PARWORDCOUNT = (PARWORDCOUNT+32); NVMWORDCOUNT = (NVMWORDCOUNT+32); IF ( ! (((NVMWORDCOUNT/32)%PAGEITERATION)==0) ) THEN GOTO Label_140; PERCENT_UPDATE = ((100*NVMWORDCOUNT)/NVMWORDS); DIFFERENCE = (PERCENT_UPDATE%10); IF ( ! (DIFFERENCE>=5) ) THEN GOTO ROUND_DOWN_VER_NVM_PRIV; PERCENT_UPDATE = (PERCENT_UPDATE+(10-DIFFERENCE)); ROUND_DOWN_VER_NVM_PRIV: IF ( ! (DIFFERENCE<5) ) THEN GOTO ROUND_UP_VER_NVM_PRIV; PERCENT_UPDATE = (PERCENT_UPDATE-DIFFERENCE); ROUND_UP_VER_NVM_PRIV: EXPORT "PERCENT_DONE", PERCENT_UPDATE; Label_140: LABEL_SEPARATOR = 0; NEXT IREPEAT_4; ENDPROC; PROCEDURE DO_PROGRAM_NVM_0 USES NVM_V,GV,DO_EXIT,DO_EXIT_ACCESS_NVM,DO_PROGRAM_NVM_PRIV; CALL DO_PROGRAM_NVM_PRIV; IF ( ! (NVMDATASTREAMSIZE_0>0) ) THEN GOTO SKIP_PGM_NVM_MSG_0; PRINT "Program Embedded Flash Memory Module 0...."; SKIP_PGM_NVM_MSG_0: NVMWORDS = (NVMDATASTREAMSIZE_0/32); NVMPAGES = (NVMWORDS/32); NVMWORDCOUNT = 0; NVMDATAINDEX = 0; NVMADDRESS[] = $000000000; NVMADDRESS[12..11] = $2; PROTECTION[] = $00; PAR = -1; PARWORDCOUNT = 0; PARSIZE = 0; IF ( ! (NVMPAGES>0) ) THEN GOTO SKIP_PGM_NVM_0; INTEGER IREPEAT_5; FOR IREPEAT_5 = NVMPAGES - 1 TO 0 STEP -1; IF ( ! (PARWORDCOUNT==PARSIZE) ) THEN GOTO Label_141; PARWORDCOUNT = 0; PAR = (PAR+1); NVMADDRESS[34..13] = NVMADDR_0[(((PAR+1)*22)-1)..(PAR*22)]; NVMADDRESS[20] = 0; PAGEADDRESS = INT(NVMADDRESS[34..21]); PARSIZE = INT(NVMPARSIZE_0[(((PAR+1)*32)-1)..(PAR*32)]); PROTECTION[4..2] = NVMPROTECT_0[(((PAR+1)*3)-1)..(PAR*3)]; Label_141: BUFF32[31..0] = BOOL(PAGEADDRESS); NVMADDRESS[34..21] = BUFF32[13..0]; IRSCAN 8, $b8; DRSCAN 35, NVMADDRESS[]; WAIT 3 CYCLES; WAIT 20 USEC, DRPAUSE; FOR NVMPOLL = 0 TO 10000; DRSCAN 35, NVMADDRESS[], CAPTURE BUFF128[34..0],COMPARE $000000000,$400000000 ,PASS; IF ( ! (PASS==1) ) THEN GOTO Label_142; NVMPOLL = 10000; Label_142: IF ( ! (PASS!=1) ) THEN GOTO Label_143; IRSCAN 8, $b8; WAIT DRPAUSE, 100 USEC, DRPAUSE; Label_143: LABEL_SEPARATOR = 0; NEXT NVMPOLL; IF ( ! (PASS==0) ) THEN GOTO NVMADDRSHIFTOK_1_0; PRINT "Error programming Embedded Flash Memory Block (EFMB)."; STATUS = 10; IF ( ! (NVMACTIVEARRAY==1) ) THEN GOTO Label_144; UNIQUEEXITCODE = 32873; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT_ACCESS_NVM; Label_144: IF ( ! (NVMACTIVEARRAY==0) ) THEN GOTO Label_145; UNIQUEEXITCODE = 32874; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; Label_145: LABEL_SEPARATOR = 0; NVMADDRSHIFTOK_1_0: FOR I = 1 TO 32; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $b9; DRSCAN 32, NVMDATA_0[(NVMDATAINDEX+31)..NVMDATAINDEX]; WAIT IDLE, 3 CYCLES; WAIT IDLE, 5 USEC; NVMDATAINDEX = (NVMDATAINDEX+32); NEXT I; PAGEADDRESS = (PAGEADDRESS+1); PARWORDCOUNT = (PARWORDCOUNT+32); IRSCAN 8, $ba; DRSCAN 5, PROTECTION[]; WAIT 3 CYCLES; WAIT 100 USEC, DRPAUSE; FOR NVMPOLL = 0 TO 10000; DRSCAN 5, PROTECTION[], CAPTURE BUFF128[4..0],COMPARE $00,$14,PASS; IF ( ! (PASS==1) ) THEN GOTO Label_146; NVMPOLL = 10000; Label_146: IF ( ! (PASS!=1) ) THEN GOTO Label_147; IRSCAN 8, $ba; WAIT DRPAUSE, 100 USEC, DRPAUSE; Label_147: LABEL_SEPARATOR = 0; NEXT NVMPOLL; IF ( ! (PASS==0) ) THEN GOTO CONTPROG_0; PRINT "Error programming Embedded Flash Memory Block (EFMB)."; PRINT "Partition : ",PAR; PRINT "Word: ",PARWORDCOUNT; PRINT "Page Address : ",PAGEADDRESS; EXPORT "BUSY", BUFF128[4..4]; EXPORT "PrgStat", BUFF128[3..2]; EXPORT "NvmStat", BUFF128[1..0]; BUFF32[31..0] = BOOL(PAGEADDRESS); NVMADDRESS[34..21] = BUFF32[]; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $b8; DRSCAN 35, NVMADDRESS[]; WAIT IDLE, 3 CYCLES; WAIT IDLE, 20 USEC; DRSCAN 35, $000000000, CAPTURE BUFF128[34..0]; IF ( ! (BUFF128[0]==1) ) THEN GOTO Label_148; PRINT "Overwrite Protect ON"; Label_148: IF ( ! (BUFF128[1]==1) ) THEN GOTO Label_149; PRINT "Write Protect ON"; Label_149: IF ( ! (BUFF128[2]==1) ) THEN GOTO Label_150; PRINT "Read Protect ON"; Label_150: IF ( ! (BUFF128[0]!=1) ) THEN GOTO Label_151; PRINT "Overwrite Protect OFF"; Label_151: IF ( ! (BUFF128[1]!=1) ) THEN GOTO Label_152; PRINT "Write Protect OFF"; Label_152: IF ( ! (BUFF128[2]!=1) ) THEN GOTO Label_153; PRINT "Read Protect OFF"; Label_153: STATUS = 10; IF ( ! (NVMACTIVEARRAY==1) ) THEN GOTO Label_154; UNIQUEEXITCODE = 32876; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT_ACCESS_NVM; Label_154: IF ( ! (NVMACTIVEARRAY==0) ) THEN GOTO Label_155; UNIQUEEXITCODE = 32877; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; Label_155: LABEL_SEPARATOR = 0; CONTPROG_0: NVMWORDCOUNT = (NVMWORDCOUNT+32); IF ( ! (((NVMWORDCOUNT/32)%PAGEITERATION)==0) ) THEN GOTO Label_156; PERCENT_UPDATE = ((100*NVMWORDCOUNT)/NVMWORDS); DIFFERENCE = (PERCENT_UPDATE%10); IF ( ! (DIFFERENCE>=5) ) THEN GOTO ROUND_DOWN_PGM_NVM_0; PERCENT_UPDATE = (PERCENT_UPDATE+(10-DIFFERENCE)); ROUND_DOWN_PGM_NVM_0: IF ( ! (DIFFERENCE<5) ) THEN GOTO ROUND_UP_PGM_NVM_0; PERCENT_UPDATE = (PERCENT_UPDATE-DIFFERENCE); ROUND_UP_PGM_NVM_0: EXPORT "PERCENT_DONE", PERCENT_UPDATE; Label_156: LABEL_SEPARATOR = 0; NEXT IREPEAT_5; SKIP_PGM_NVM_0: LABEL_SEPARATOR = 0; ENDPROC; PROCEDURE DO_VERIFY_NVM_0 USES NVM_V,GV,DO_EXIT,DO_EXIT_ACCESS_NVM,DO_VERIFY_NVM_PRIV; CALL DO_VERIFY_NVM_PRIV; IF ( ! (NVMDATASTREAMSIZE_0>0) ) THEN GOTO SKIP_VER_NVM_MSG_0; PRINT "Verify Embedded Flash Memory Module 0..."; SKIP_VER_NVM_MSG_0: NVMWORDS = (NVMDATASTREAMSIZE_0/32); NVMPAGES = (NVMWORDS/32); NVMWORDCOUNT = 0; NVMDATAINDEX = 0; NVMADDRESS[] = $000000000; NVMADDRESS[12..11] = $2; PROTECTION[] = $00; PAR = -1; PARWORDCOUNT = 0; PARSIZE = 0; IF ( ! (NVMPAGES>0) ) THEN GOTO SKIP_VERIFY_NVM_0; INTEGER IREPEAT_6; FOR IREPEAT_6 = NVMPAGES - 1 TO 0 STEP -1; IF ( ! (PARWORDCOUNT==PARSIZE) ) THEN GOTO Label_157; PARWORDCOUNT = 0; PAR = (PAR+1); NVMADDRESS[34..13] = NVMADDR_0[(((PAR+1)*22)-1)..(PAR*22)]; NVMADDRESS[20] = 0; PAGEADDRESS = INT(NVMADDRESS[34..21]); PARSIZE = INT(NVMPARSIZE_0[(((PAR+1)*32)-1)..(PAR*32)]); PROTECTION[4..2] = NVMPROTECT_0[(((PAR+1)*3)-1)..(PAR*3)]; Label_157: BUFF32[31..0] = BOOL(PAGEADDRESS); NVMADDRESS[34..21] = BUFF32[13..0]; IRSCAN 8, $b8; DRSCAN 35, NVMADDRESS[]; WAIT 3 CYCLES; WAIT 20 USEC, DRPAUSE; FOR NVMPOLL = 0 TO 10000; DRSCAN 35, NVMADDRESS[], CAPTURE BUFF128[34..0],COMPARE $000000000,$400000000 ,PASS; IF ( ! (PASS==1) ) THEN GOTO Label_158; NVMPOLL = 10000; Label_158: IF ( ! (PASS!=1) ) THEN GOTO Label_159; IRSCAN 8, $b8; WAIT DRPAUSE, 100 USEC, DRPAUSE; Label_159: LABEL_SEPARATOR = 0; NEXT NVMPOLL; IF ( ! (PASS==1) ) THEN GOTO VERIFY_ECC_LABEL_0; IF ( ! ( (BUFF128[33]==1)&&(BUFF128[32]==0)) ) THEN GOTO VERIFY_CC_0; PRINT "ERROR: 2 or more errors found on this page, please try reprogramming."; STATUS = -39; IF ( ! (NVMACTIVEARRAY==1) ) THEN GOTO Label_160; UNIQUEEXITCODE = 32879; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT_ACCESS_NVM; Label_160: IF ( ! (NVMACTIVEARRAY==0) ) THEN GOTO Label_161; UNIQUEEXITCODE = 32880; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; Label_161: LABEL_SEPARATOR = 0; VERIFY_CC_0: IF ( ! ( (BUFF128[33]==1)&&(BUFF128[32]==1)) ) THEN GOTO VERIFY_WC_0; PRINT "WARNING: Write count threshold exceeded."; VERIFY_WC_0: LABEL_SEPARATOR = 0; VERIFY_ECC_LABEL_0: IF ( ! (PASS==0) ) THEN GOTO NVMADDRSHIFTOK_0_0; PRINT "Failed to verify Embedded Flash Memory Block (EFMB)."; STATUS = 11; IF ( ! (NVMACTIVEARRAY==1) ) THEN GOTO Label_162; UNIQUEEXITCODE = 32882; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT_ACCESS_NVM; Label_162: IF ( ! (NVMACTIVEARRAY==0) ) THEN GOTO Label_163; UNIQUEEXITCODE = 32883; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; Label_163: LABEL_SEPARATOR = 0; NVMADDRSHIFTOK_0_0: FOR I = 0 TO 31; BUFF128[34..0] = $000000000; BUFF128[31..0] = NVMDATA_0[(NVMDATAINDEX+31)..NVMDATAINDEX]; IRSCAN 8, $b7; DRSCAN 35, $000000000; WAIT 3 CYCLES; WAIT 30 USEC, DRPAUSE; FOR NVMPOLL = 0 TO 100; DRSCAN 35, $000000000, CAPTURE NVMCAPTURE[34..0],COMPARE BUFF128[34..0] ,$6ffffffff,PASS; IF ( ! (PASS==1) ) THEN GOTO Label_164; NVMPOLL = 10000; Label_164: IF ( ! (PASS!=1) ) THEN GOTO Label_165; IRSCAN 8, $b7; WAIT DRPAUSE, 50 USEC, DRPAUSE; Label_165: LABEL_SEPARATOR = 0; NEXT NVMPOLL; IF ( ! (PASS==0) ) THEN GOTO CONTCOMPARENVM_0; PRINT "Failed to verify Embedded Flash Memory Block (EFMB)."; EXPORT "NvmAddress", NVMADDRESS[]; EXPORT "ExpData", BUFF128[31..0]; EXPORT "CapData", NVMCAPTURE[31..0]; EXPORT "CapDataStat", NVMCAPTURE[34..32]; PRINT "Page: ",PAGEADDRESS; PRINT "Page Offset: ",I; PRINT "Word: ",PARWORDCOUNT; STATUS = 11; IF ( ! (NVMACTIVEARRAY==1) ) THEN GOTO Label_166; UNIQUEEXITCODE = 32885; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT_ACCESS_NVM; Label_166: IF ( ! (NVMACTIVEARRAY==0) ) THEN GOTO Label_167; UNIQUEEXITCODE = 32886; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; Label_167: LABEL_SEPARATOR = 0; CONTCOMPARENVM_0: NVMDATAINDEX = (NVMDATAINDEX+32); NEXT I; PAGEADDRESS = (PAGEADDRESS+1); PARWORDCOUNT = (PARWORDCOUNT+32); NVMWORDCOUNT = (NVMWORDCOUNT+32); IF ( ! (((NVMWORDCOUNT/32)%PAGEITERATION)==0) ) THEN GOTO Label_168; PERCENT_UPDATE = ((100*NVMWORDCOUNT)/NVMWORDS); DIFFERENCE = (PERCENT_UPDATE%10); IF ( ! (DIFFERENCE>=5) ) THEN GOTO ROUND_DOWN_VER_NVM_0; PERCENT_UPDATE = (PERCENT_UPDATE+(10-DIFFERENCE)); ROUND_DOWN_VER_NVM_0: IF ( ! (DIFFERENCE<5) ) THEN GOTO ROUND_UP_VER_NVM_0; PERCENT_UPDATE = (PERCENT_UPDATE-DIFFERENCE); ROUND_UP_VER_NVM_0: EXPORT "PERCENT_DONE", PERCENT_UPDATE; Label_168: LABEL_SEPARATOR = 0; NEXT IREPEAT_6; SKIP_VERIFY_NVM_0: LABEL_SEPARATOR = 0; ENDPROC; CRC BBAF;