NOTE "CREATOR" "FlashPro Version: v10.0 SP2"; NOTE "CAPTURE" "10.0.20.2"; NOTE "DEVICE" "A2F500M3G"; NOTE "PACKAGE" "A2F500M3G-fg484"; NOTE "DATE" "2012/10/15"; NOTE "TIME" "19:19:28"; NOTE "STAPL_VERSION" "JESD71"; NOTE "VENDOR" "Microsemi Corporation"; NOTE "IDCODE" "05B251CF"; NOTE "IDMASK" "0DFFFFFF"; NOTE "DESIGN" "TOP"; NOTE "DESIGN_DIRECTORY" "F:\Webserver_uIPRTOS_SC_DF\DEV_KIT\SF_Webserver_Demo\designer\impl2\"; NOTE "CHECKSUM" "B7BF"; NOTE "SECURITY" "Disable"; NOTE "ALG_VERSION" "20"; NOTE "MAP_VERSION" "1"; NOTE "TOOL_VERSION" "1"; NOTE "MAX_FREQ" "10000000"; NOTE "SILSIG" "00000000"; NOTE "SPEED_GRAD" "STD"; NOTE "TEMP_GRAD" "COM"; NOTE "EXPRESS_CONFIGURATION" "1"; NOTE "PLAYER_VERSION_VARIABLE" "PLAYERVERSIONVARIABLE"; NOTE "PLAYER_VERSION_SW_VARIABLE" "PLAYERVERSIONSWVARIABLE"; 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_ALL, DO_VERIFY_NVM_ALL RECOMMENDED, RESET_M3 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, RESET_M3 RECOMMENDED, 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_ALL, 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, DO_INITIALIZE_ACCESS_NVM, 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_ALL, DO_EXIT; ACTION VERIFY_NVM_ACTIVE_ARRAY = VERIFY_IDCODE, SET_NVM_ACTIVE_ARRAY, NR_INITIALIZE_ACCESS_NVM, DO_VERIFY_NVM_ALL, DO_EXIT_ACCESS_NVM; ACTION PROGRAM_NVM = VERIFY_IDCODE, DO_INITIALIZE_ACCESS_NVM, NW_INITIALIZE, DO_PROGRAM_NVM_ALL, DO_VERIFY_NVM_ALL RECOMMENDED, RESET_M3 RECOMMENDED, DO_EXIT; ACTION PROGRAM_NVM_ACTIVE_ARRAY = VERIFY_IDCODE, SET_NVM_ACTIVE_ARRAY, NW_INITIALIZE_ACCESS_NVM, DO_PROGRAM_NVM_ALL, DO_VERIFY_NVM_ALL RECOMMENDED, DO_EXIT_ACCESS_NVM; ACTION PROGRAM_NVM_ACTIVE_RSTM3 = VERIFY_IDCODE, SET_NVM_ACTIVE_ARRAY, NW_INITIALIZE_ACCESS_NVM, DO_PROGRAM_NVM_ALL, DO_VERIFY_NVM_ALL RECOMMENDED, RESET_M3; ACTION RESET_CORTEXM3 = VERIFY_IDCODE, RESET_M3; DATA CONSTBLOCK; INTEGER IEEE1532=0; INTEGER STAPL=1; INTEGER DIRECTC=2; INTEGER PDB=3; INTEGER SVF=4; INTEGER IAP=5; 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 FP91=15; INTEGER FP100=16; 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]; BOOLEAN VAR[128] = $01010101010101010101010101010101; 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 SULARD = 0; BOOLEAN SULAWE = 0; BOOLEAN SULULR = 0; BOOLEAN SULFLR = 0; BOOLEAN SULUFJ = 0; BOOLEAN SULUFP = 0; BOOLEAN SULUFE = 0; BOOLEAN SULUPC = 0; BOOLEAN SULARE = 0; BOOLEAN SULUWE = 0; BOOLEAN SULOPT[2]; BOOLEAN SULNR0 = 0; BOOLEAN SULNW0 = 0; BOOLEAN SULNC0 = 0; BOOLEAN SULNR1 = 0; BOOLEAN SULNW1 = 0; BOOLEAN SULNC1 = 0; BOOLEAN SULNR2 = 0; BOOLEAN SULNW2 = 0; BOOLEAN SULNC2 = 0; BOOLEAN SULNR3 = 0; BOOLEAN SULNW3 = 0; BOOLEAN SULNC3 = 0; 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] = $010204081020457c85; 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 PLAYERVERSIONSWVARIABLE =0; INTEGER SCULPTORMAJORBASE =5; INTEGER SCULPTORMINORBASE =16; BOOLEAN ACT_UROW_PROGRAM_SW[4]; 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[1233] = $124924924924924924924924924924924924924924924924 924924924924924924924924924924924924924924924924924924924924924924924924 924924924924924924924924924924924924924924924924924924924924924924924924 924924fff924924924924924924924924924924924924924924924924924924924924924 924924924924924924924924924924924924924924924; BOOLEAN SAMPLEMASK[1233] = $000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000; BOOLEAN BSR[1233]; BOOLEAN SAMPLE_DEVICE[1233]; BOOLEAN RLOCK[1248] = $7fffffcffffffbfffffeffffffbfffffefffffffffffffffffff3 fffffcffffff3fffffcffffff3fffffcffffff3fffffdffffff3fffffcffffff3fffffcf fffff3fffffcffffff3fffffdffffff3fffffcffffff3fffffcffffff3fffffcffffff3f ffffdffffff3fffffcffffff3fffffcffffff3fffffcffffff3fffffdfffffffffffffff fffffffffffffffffffffffffffffffffffffffffff; 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 =6; INTEGER NUMBEROFMAPROWS =2916; INTEGER IDREV; INTEGER IDFAB; INTEGER BM7DEVICE =0; INTEGER BM1DEVICE =0; BOOLEAN M1BUFF[128] = $acdd6548ccb488863e291eb18fe95077; BOOLEAN M7BUFF[128] = $e137623a2eeee91126015f3f73664945; BOOLEAN IDCODEVALUE[32] = $05b251cf; 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[3639168] = @m3l10000110040W0W000020G000400108002200000Ww0 rssso0000p@@lF999IjjjQp0000_@x@@IYaatcjj50000y_@@7HIIIORRRR36uXaa49jjTDS YD2000y@V@x99IIkjPRR2000ot@tkXaaaC0000Yaaa8caa8100O0808999099fGhWQe02999 rm189991999L3K1m89HI099I20WQu1aaaa20000200C040999P2C89EeBE0000WaaaaQGEjj jjijjjvGIIYI000GRRhsSRRscba89F000mjPRRfLRRBYaaa00000ssssmsssA899vzGGD0As ORRIsba897000mskWG0BJIIaa1000ia899NYaaSosssfaaaCJIIIC999XjjjPF99Ho999IYa 499ssijXa899IYaa8HII2DRRR9III2rWeC99RmjjjL7999oaa49PII0DRRrsMIYaq0uOMGgZ 0aaa4lE3AM4ahC0999v7aWQ0O0aaa8D00y0G0B0000Waai1000009Hs20O00XqW3gyA8DWWc C2g1Qe4QYQ0b0a00K3S02000IW00548essscJIIIWs1GRRR5899H8000W00GD01rQAWjjjLa aaKws1r0G9Hca49100G21WQ02GOaaK3G01qsMjXjjQxIIaaO@x@@jLRR7hsss4999X_@@Vij jj1RRRpaaa4X@@V@ORRscsski80n@@VD0L_fIIaau@xRljLRRMhsItaQW2qXssgjsscjPRhs sVRsskjQRxkPRRlgjjDcjjjjjjjDjjjjYsssiqssg5RRpsORhscjjQ02inssM345xtsMjDts iaTRrscPps@_j6e0v100080060me6uC240030RiEIm0WV54N8000e6GZI5erZGm10DdwupCC Sc8olQ0VMeZWK7O21208uq@1d_Fuq@1d_l6Wk2Sw@WJ_Fua@3Ev@WJ_Fua@B8O3aaaa8999X IIIYWaa4P999IKIIa4aa89B9HIYaK3G10999HGIIc101GIII4aaa8999H2aaKD0E1IIIgW0A I3uWS2yhWWBwmaWWJ_Fua@3Ev@WJ_FHaY2Ev@WJufQO30999HA008v12G0000Yaaily32JEX pdFeIv3g1Wg22eunH2ITi10004JIAN11J8999n0000Waa4v0000KIIa40000C9HIY0GD0580 000GIIIy34K3W1fhVGD0HLGm4TIVW9999A0000baaQMW0baaa00000HIIMt0Mr0GH11N42W1 0999H100K50140000aaa8300eFW3grWW41IuzW3g1ug22e85V2I3e00baaf1G0YaaaQ0WeJW 8g1ug22SO0W@70u@10_Fm9Np9up10_FWp@3gRU010030eGGI74Kt@13@@00@dMp@n9y@I1z1 400ejW41210awm@995LeE@7_gqA999JLz2baaaDeUHD0H5_Qf0H99HIGIYWiaCqQI3rv@222 vfc5608oS2m84n@p9Oc4H8abaaK11DmaWaCua4p90YGhN8S2E3j_@Gh@Fqw@3j_@10_V0W@3 uy@Gh@V0W@3j_@GhLFWp@3j_@10_Fcv@ZJu@u4_Fmf@3j_@GT_Fqw@3j6kmNT89f@3rv@u4_ Fqw@J4feWJ_CS2EbjjjP0000qsscj0000GRRss0000ajPRx0e6040ijjP300e602kBc0jjjD r0SL11Hmsss6IIIYSRRR6999IejjPBaa89rscjTIYaamsQ0AGijjTD0AGijjLZaaKD0LLG05 ssssSIII2QRRpE999Ijjjd0EWPIIY4tsMjLIIr0GW5IIIaORRt2iGD0HLGm4r0G00000daaa G0000IIIYK0085x30baa8H00uMw3UK_08999TPhGD0ELGW5Iu@@zFaa89v@t@VIYaauV@@l9 IIIuz@@@8999f6W4y899L30189991@@@xXaai60iA8e1Vaaa76GWQRRxNACu@22msssg0000 KRRhM10WQ0KOi22msssMT01sssMg1Gh22Qe60260u@10_V0W@3Sw@Gh@Fqw@3j_@Gh@FWp@3 j_@GT_FEX@ZJu@0d_Fqw@3rv@Gh@Fqw@3j_@yL_FKd@3j_@Gh@Fqw@3j_@Gh@Fqw@70u@10_ FWp@3Sw@Gh@Fqw@3j_@Gh@FWp@3Ev@89@FEX@ZJu@0d_Fqw@3rv@Gh@Fqw@3j_@yL_FKd@3j _@Gh@Fqw@3j_@Gh@Fqw@70u@10_FWp@3Sw@Gh@VGXd0200aEuav4uGer@7Qz@1S_@00@79v@ n9yVS2@7uqsWW0000000G008qw@3rv@Gh@l60388A9HI2IY4abKer@7Qz@XwyVeE@7Qz@XM@ Ver@7Qz@XM@Ver@F0m@30yV0d@7uq@XM@VMZT5K7dXM@Ver@7mv@30yVaa@tMm@n9yVWJ@7Q z@XwyVerd7_Aj99zVeE@7dm@XM@Ver@7Qz@XM@Ver@7Qz@XM@@00@F0m@1EzVAN@7Qz@XM@V D0@7mv@XM@VeE@79v@n9yVWJ@7Qz@XwyVer@7Qz@99zVeE@7gp@XM@Ver@7Qz@XM@Ver@7Qz @XM@@00@F0m@1EzVAN@7Qz@XM@VD0@7mv@XM@VPC@79v@n9yVWJ@7Qz@XwyVer@7Qz@99zV_ A@7gp@XM@Ver@7Qz@XM@Ver@7Qz@RB_@00@F0m@1EzVer@7Qz@XM@Ver@7mv@XM@VeE@7dm@ n9yVWJ@7Qz@XwyVer@7Qz@XM@V11@7gp@XM@Ver@7Qz@XM@Ver@7Qz@30y@00@F0m@1EzVer @7Qz@XM@Ver@7mv@XM@Vaa@7dm@n9yVWJ@7Qz@XwyVer@7Qz@XM@V_A@7gp@XM@Ver@7QzlS 0002jEJYjjjXM@Ver@7Qz@30y@00@7uq@X8_Ver@7Qz@XM@V0d@7Qz@XwyVQD@dlYd30y9G0 0W0d_Fqw@3rv@Gh@Fqw@JIgL0100tLSHD0G5gpr5aqH8Y@7QzhIGIGQ@m2WaWar0GLm9r099 99qw@3jcq22E8qwAB8uWGh@Fqw@3j_@10_V0W@3uy@G4@Fqw@3j_@Gh@FWp@3j_@GT_Fjc@Z Ju@0d_FrX@3j_@Gh@Fqw@3jMz10CZ000GeE@7gp@XMNQY8c1IIIAu4Q3j_@Gh@Fqw@3j_@Gh @V0W@70u@0d_Fbh@3j_@Gh@Fdw@3uy@Gh@FKd@Zay@u4_Fmf@3j_@GT_Fqw@3j_@Gh@FKd@Z Ju@Gh@FHab2j_@Gh@Fqw@3j_@Gh@V0W@70u@0E@Fmf@3j_@Gh@Fqw@3j_@0E@V0W@Zay@u4_ FEX@3Sw@Gh@FKd@3j_@Gh@Fqw@pNv@GT_Fqw@3j_@Gh@Fqw@3j_@Gh@V0W@70u@0E@Fmf@3j _@Gh@Fqw@3j_@Gh@V0W@Zay@u4_FEX@3Sw@Gh@FKd@3j_gKLr8qQ1psMZGh@Fqw@B8mBW000 n9yVer@7Qz@XMBB700WGh@hWW3_Rc19sssHJVGeroLG05TIR0ijjDxaaaHJhGeroLG04XM3n Ip4qJ11XMhN11D4Qz@XM@@00@F0m@1EzV8Y@7Qz@XM@VD0NcEu@POKz00@7py@n9yVS2@7dm @P@yVer@7QDLfHhHer26_AdXXzVGT@73p@XM@Ver@7QTaC0002jcHvsssHJh0rsssGhP4qss cTIIIaQRRJ5SGerIYK00eJQ240004Qz@XM@@00@F0m@1EzV11T18008Ci@3j_@Ww_lWW9W00 04QjfbQdPX7L22008qw@3rv@qQ_Fx7Fp9WYm9_FWpThRGK020030e0G00WsgDCqw@3j_@mNn 3991P1170B999qw89000Cd1FPOur4064821HTGuL2KcJ042100IWWYGT_FqQY1YIIYaWa41P 9Pm97clY5z_TGer@7Qz@XM@Ver@7Qz@30y@00@7Yu@vW_Ver@7QTzjL@VerOdXXf30yVer@7 dm@n9yVer@dzp@DqwHer@7Qz@Pq6ME1Baaq@vhyVeE@7Qz@9YWKm9V6Qz@XM@I1174QDY54G Her8MG04XMBP11D4Qz@XM@@00@F0m@1EzVob@7Qz@XM@VD0@7mv@XM@VeE@7py@n9yVWJ@dw mwXwyVer@7Qz@XM@VeE@7dm@XM@Ver@7Qz@XM@Ver@7Qz@XM@@00@F0m@1EzVAN@7Qz@XM@V D0@7mv@PD_VeE@79v@n9yVWJ@7Qz@XwyVer@7Qz@99zVeE@7dm@XM@Ver@7Qz@XM@Ver@7Qz @XM@@00@F0m@1EzVAN@7Qz@XM@VD0@7mv@XM@VeE@79v@n9yVWJ@7Qz@XwyVer@7Qz@99zVe E@7gp@XM@Ver@7Qz@XM@Ver@7Qz@XM@@00@F0m@1EzVer@7Qz@XM@VD0@7mv@XM@VeE@7dm@ n9yVWJ@7Qz@XwyVer@7Qz@99zV_A@7gp@XM@Ver@7Qz@XM@Ver@7Qz@30y@00@F0m@1EzVer @7Qz@XM@Ver@7mv@XM@VeE@7dm@n9yVWJ@7Qz@XwyVer@7Qz@XM@V_A@7gp@XM@VE1d09999 qwCxufZm9sosssc3000GRRRHJV0500WFTF8qQqA8uYsgTh60NYcs0ORRRM999HkjjPxaa49r sMermLGm4XMh06000maaa8700wac0D0000IIIaC004QDR54CXa_@V@B99Io_@xa61aaaam@@ @zIIIYi@@FqwqA8O2Faaa8300Ycs1kjjjDSJGertLGG3XMFQeE@7Cy@XJyVu4@7Qz@XM@Ver @7mv@PD_VeE@7g3wrDyVg3l7uq@XM@VeE@7Qz@XMJU66_H000eqd@3Sw@Gh@l60609995S2j XJmPRreL3G7XMF1RijjGh7aIIIIerpgaaa42000GIIoEfFG1000Waa49200XMFOqqJubaaij Qf2j_@IV_FdW@70u@K7_FSY@pQywm9cDdw@3uadK7_Fqw@3rv@S2_V0W@JTu@Gh@FKd@3j_@ GhJE9f@3rv@GT_FdWIJ4XpGh5DSYC3jMGRRRRXMF1xijjGh7i6WB2j_@Gh@Fqw@3rv@0d_V0 W@3du@Gh@Fek@3j_@0E@F3Z@70u@GT_V0W@3du@S2_Fqw@3j_@Gh@Fqw@3Ev@10_Fqw@3j_@ GhZ522G2000009G1reG09811000004aW8000K3G28800g10FIG20020W88110030W4yW0003 002QG4001g1815400r0SNGt90QRRpM00G3t4m0000ajjDx00WYmVhWW8Uls0vsssDSh0rssM TIIIHW@M11KORRRp9999ejjDxaaa8rssU2uW8mVhWW9Y0@0daaaHWR0I10W6k9eJQ2Y0Fk22 cG2@@VGt7qmz1C9991@@@xdaaC2SsA8O2Vaaa76GG3t9yV11ORRRL00041EU54qG4u@F0m@3 0yVxKOMGW6v4mv00@dSPEDEAOu4pcwz@nboJg3ScX1d30yVeEL7dm@n9yVWJ@71_@XwyV4u@ 71kk99zVeE@7dm@v4KQ4u@71_FXJaPer@7Qz@XM@Ver@F0m@30yV0d@7Yu@30yVer@7Qz@1S _Ver@F0m@fryVS2@7dm@1EzVer@7gp@XM@Ver@73p@XwyVeE@7Qz@XM@Ver@7Qz@XM@Ver@F 0m@30yVWJ@7Yu@30yVer@7Qz@1S_Ver@F0m@fryVS2@7dm@fEyVer@7gp@XM@Ver@F00U040 00000G020O0020I00alo@XwyVer_J22IYaab481HfQ0801O9Per@7Qz@XM@Ver@7Qz@30y@0 0@7mv@1EzVer@7Qz@XM@Ver@7mv@1dyVCp@7dm@n9yVWJ@7Qz@XwyVer@7Qz@99DU_A@7gp@ XMRVm9n6Qz@XM@2700WGhPi603aORRN3m1XMp8ijjDxaaar0uGerEM3011PGGer@7Qz@30y@ 00@7uq@fSzVer@7Qz@vK@Vg3xcXXj30yVaa@7dm@n9yVWJANtmiXM@Ver@7Qz@XM@V_A@7gp @XM@Ver@7Qz@XMBR11D4QzZ540HerIMGG3XM@Ver5FEq@30y@35@7Qz@30SE800Wq1pCdW82 j_@Q0U1200G0d@7mPs30yVCp@7mv@30G0010Wm9_Fmf@70elGTm4800GeE@7Qjm08993j_@a aOZ0W0GD0WbJG14000gFntDnK8Kd@3jMRGIGIXWSHD09LGG1Waea2EH4H999XM@VerrMGm1X MNP1174Qz@XM@VerzF0m@30yVWJ@7Yu@30WVGTV6Qz@r08T0d@7Qz@XwyVS2@7dm@1EzVer@ 7gp@XM@VerPagQ4XM@VIIRdlo@XwyVerHc8oT1dyPer@7Qz@XM@Ver@7Qz@30y@00@7uq@fS zVer@7Qz@vK@V0d@dru@XwyVaa@7dm@1EzVer@7gp@XM@Ver@7Qz@XwyVS2@7Qz@XM@Ver@7 Qz@XM@Ver@7Qz@30y@00@7uq@fSzVer@7Qz@r0yV0d@dru@XwyVaa@7dm@1EzVer@7gp@XM@ Ver@daq@XwyVS2@7Qz@XMt5aaaaGhpiZdE2j_@Gh@Fqw@3j_@Gh@V0W@70u@0d_Fqw@3j_@G h@Fqw@3uy@Gh@FKd@ZJu@u4_Fmf@3j_@GT_Fqw@3j_@aa4d000GeE@7gp@XM@VD0C0IIIAu4 Q3dWpGh@Fqw@3j_@Gh@V0W@70u@0E@F4n@70u@Gh@Fqw@3uy@Gh@V0W@Jhv@u4_FEX@3Sw@G h@FKd@3j_@Gh@F6c@3rv@GT_FqQBJ41ZGh@Fqw@3j_@Gh@Fqw@70u@10_FWp@3Sw@Gh@Fqw@ 3j_@Gh@FWp@70u@89@FEX@ZJu@0d_Fqw@3rv@Gh@Fqw@3j_@yL_FKd@3j_@Gh@Fqw@3j_@Gh @Fqw@70u@10_FWp@3Sw@Gh@Fqw@3j_@Gh@Fqw@70u@89@FEX@ZJu@0d_Fqw@3rv@Gh@Fqw@3 j_@yL_FKd@3j_@Gh@FqwFORRRp1008qw@A8uW@cPGYjjTqq74QjS54GHdq60RRRpE99PqqA4 QjS540HerGiqC1zKGGerwLGG3XM@Ver@F0m@30WBW00W0d_F4n@70u@Gh@FqwjJ7y@CCgU0W @Zay@u4_FEX@ZJu@iV_Fqw@3j_@Gh@FCCZ70u@G4@Fqw@3j_@Ghh2jjjD300WGh@hWW3MQs0 vsssHJh0rsssGhbhW0Awas0GRRRs999Hgjjz4m1XMBN11G4QD48500wac01000XMZN11D4Qz @XM@@00@3000C0X@3Sw@mm_Fqw@BPShaB@l60fBLO2G0001S_Ver@7Cy@000WYJOpS2uBcv@ Bz1g0d_lK1U2j_@Gh@FqQhacae4_w7P0GGuhp19999qwC5001a82eP8Q0180W1080810GJ6I 01008g3_sQapS2c84n@3jU82999fHV79889IIMIW44bg1W04WbaXM@Ver@7Qz@XM@Ver@F0m @30yV0d@7uq@XM@Verj7mfjvK@V0d@7Qz@XwyVCp@7dm@1EzVer@7gp@XM@VD0F5QD8XlEPI I@7gp@n9yVeruc82ZXM@Ver@7Qz@XM@Ver@F0m@30yV0d@7uq@XM@Ver@7Qz@XM@V0d@F0m@ HI_VS2@7dm@1EzVer@7gp@XM@Ver@7Qz@vhyVeE@7Qz@XM@Ver@7Qz@XM@Ver@F0m@30yV0d @7uq@XM@Ver@7Qz@XM@Ver@F0m@HI_VS2@7dm@1EzVer@7gp@XM@Ver@daKj@4SH_A@7gp@X MVF0IIoWJ8HKIIIerP21008qw@3j_@Gh@Fqw@3j_@10_V0W@3Sw@Kk_Fqw@3j_@Q0_FWp@3j _@GT_FIo@ZJu@0d_Fqw@3rv@Gh@Fqw@JIw@GT_FEX@3j_@4Hg9uaF3dWpGh@Fqw@3j_@Gh@V 0W@70u@0E@F4n@70u@Gh@Fqw@3uy@Gh@V0W@Jhv@u4_FEX@3Sw@Gh@FKd@3j_@Gh@F6c@3rv @GT_Fqw@3j_@Gh@Fqw@3j_@Gh@V0W@70u@0d_F4n@70u@Gh@Fqw@3uy@Gh@V0W@Jhv@u4_FE X@JTu@Gh@FKd@3j_@Gh@F6c@3rv@Gh@FqQWXaaa4QTcTyqHer@7Qz@XM@Ver@7Qz@30y@00@ 7uq@XM@Ver@7Qz@XM@V0d@7Qz@XwyVS2@7dm@1EzVer@7gp@XM@Ver@daq@vhaQl2G6gp@30 i1100WGhp4aaaKm9d0aWaCdWAWWaW4Dm5r0GK11AG1999qQN00000808e6Wjw0G10100XM@V er@7Qz@XM@@00@F0m@1S_V8Y@F0m@XM@Ver@7mv@XM@@00@7py@n9yVS2@7uq@XM@VeE@7Qz @XM@VCC@7gp@XwyV11Sa82d1dyPu4S6Qz@XM@Ver@7Qz@30y@00@7mv@X8_@00@7Qz@XM@V0 d@7Qz@30yVQD@7dm@n9yVWJ@7Qz@XwyVer@7Qz@nmyVeE@7gp@XM@Ver@7Qz@XM@Ver@7Qz@ 30y@00@7uq@X8_@00@7Qz@XM@V0d@7Qz@30yVQD@7dm@n9yVg3@7Qz@XwyVer@7Qz@nmyVeE @7Qz@XM@Ver@7Qz@XM@Ver@7Qz@30y@00@7uq@X8_@00@7Qz@XM@V0d@7Qz@XwyVQD@7dm@1 EzVg3@7Qz@XwyVer@7Qz@nmyVS2@7Qz@XM@Ver@7Qz@XM@Ver@7Qz@30y@00@7uq@X8_Ver@ 7Qz@XM@V0d@dru@XwyVQD@7dm@1EzVg3@7Qz@XM@Ver@7QzmnYCOQ170G0000000180W1080 810G_A@7gp@v4G7GIIo4H04IIII114G22IYaab481HfQ0801O9Per@7Qz@XM@Ver@7Qz@30y @00@7mv@1EzVer@7Qz@XM@Ver@7mv@1dyVCp@7dm@n9yVWJ@7Qz@XwyVer@7Qz@99DU_A@7g p@v4mMY8S6Qz@XM@Ver@7Qz@XM@@00@F0m@1S_VWJ@7Qz@XM@Ver@7Qz@1S_@00@79v@n9yV S2@7uq@XM@VeE@7Qz@XM@Ver@dlo@XwyVer@7Qz@XM@Ver@7Qz@XM@@00@F0m@1S_VWJ@7Qz @XM@Ver@7Qz@XM@@00@79v@n9yVS2@7uq@XM@VeE@7Qz@XM@VIIr_Jm5vhyVeE@7Qzz08993 EX4H999XMd9400WGh@Fqw@3j_@Gh@Fqw@70u@10_Fmf@Jvw@Gh@Fqw@h1u@0E@Fqw@3rv@89 @FEX@3Sw@Gh@FKd@3j_@Gh@F9f@3rv@u4_Fqw@J4fcWJ_CS2E3j_@Gh@Fqw@3j_@10_V0W@3 uy@G4@V0W@3j_@Gh@FWp@3j_@10_Fjc@ZJu@u4_Fmf@3j_@GT_Fqw@3j_@OO_FKd@3rv@Gh@ Fqw@3j_@Gh@Fqw@3j_@10_V0W@3Sw@G4@V0W@3j_@Gh@FWp@3j_@10_Fjc@ZJu@u4_FrX@3j _@GT_Fqw@3j_@OO_FKd@3j_@Gh16IIIIerPsnJ7XM@Ver@7Qz@XM@Ver@F0m@30yVWJ@7Qz@ XM@Ver@7Qz@1S_Ver@7gp@n9yVS2@7uq@54KIOaX5Qz@XwyVer@7Qz@nmyVS2@7QDwWaaa2j stWJmBS2E3j_@Gh@Fqw@3j_@10_V0W@3uy@G4@V0W@3j_@Gh@FWp@3j_@yNtCKd@Z8w@u4_F mf@JTmtGT_Fqw@3j_@Gh@FKd@ZJu@GhpDH4D3j_@Gh@Fqw@3j_@Gh@V0W@70u@Gh@Fmf@3j_ @Gh@Fqw@3j_@0E@V0W@Zay@u4_FEX@3Sw@Gh@FKd@3j_@Gh@Fqw@pNv@GT_Fqw@3j_@M9EHa aa41000GIIIa200IUW04000W899H600K3m10aaa8100K301t5hGD0KLG050000W000C0W2G0 000100C0mR54GXaaa430000IIIa3000G99HI0000ma49920vDZGhp7K3W1Waaa8000K3WK54 CHD040000maaa45000WIIIDBGmwq60Yaaik1ig1WY22k84030IIIY200eA0280000899H600 GV07Kh1192amx17K3mL54GX000Wq0C0G99PQ04W899f608w48YQ0kgW0760u@10_V0W@3Sw@ Gh@Fqw@3j_@Gh@FWp@3j_@GT_FEX@ZJu@0d_Fqw@3rv@Gh@Fqw@3j_@22_FKd@3j_@Gh@Fqw @3j_@Gh@Fqw@70u@10_V0W@3Sw@Gh@Fqw@3j_@Gh@FWp@3j_@89@FEX@ZJu@0d_Fqw@3rv@G h@Fqw@3j_@yL_FKd@3j_@Gh@Fr1L4000m0000300081000500R0G0C000m1000600608D200 0S000W1000C000G2000I0WD0A0aaaa0000WIIIBDJmGnDGIIII000mip7K3GNIE00g1GXrc9 0899vP14aJm3r0iGE12cw0d2000S000aJm5P@Wc100Wm9k0000Gu4NC9k2r0qba10WK7gO0W 40800q0018000W000yUD1v6yGG05CxL7lE0qqxG4d01ARRRr899HWjjLBaa49msMjDIIa4OR rscIYaaQpss69IIIeQ0K0IIICRRRZQ0UWaORRQ04K3mEURRRr999HgjjDQW34III2ORRp220 GJ14W2000O000W1000600h9GG6BoX0000800G117m000uiV28000e10006000u10W@B8G100 060000100POmc0000A000W1000E00aJ01U000G0000E008D0Agz@WWw_Fyr@ZbsoGhBC9W6I TuiIM8833C9G00qV9i01002E9pS288ua@3j_@m_@Fi@@3x@@WJ_V0W@70W785000W00k_Z00 000jwHGaU84So@1dSyAXD4So@1gxRXkJ8A999nN7Waaa4Cy@1g7Rm9@7uq@fEirfrNqzGV20 W0A8WWXXCW040GTV5i5010999J41G899954G09889IIMIW44bg1W04Wbaf1S01G99IIGIa0i ao9W044aav4G00999II2G40aa8911G2GIYaaW4898ei08090GID0H199HHII2W0aaiU4KW0a aGg3U8181eu92AHc000W079M0818XQ0aI00GGD04aF03P1G00110040Gv0G040G000400208 0022KCL1r008; INTEGER CHECKSUM =47039; ENDDATA; DATA NVM_V; BOOLEAN NVMACCESS[5]; BOOLEAN NVMBUSY[5]; BOOLEAN NVMMASK[5]; INTEGER PAGEADDRESS =0; INTEGER MAXATTEMPTNVMACCESS =100; BOOLEAN NVMADDRESS[35]; BOOLEAN PROTECTION[5]; BOOLEAN AESINIT[128]; BOOLEAN NVMCAPTURE[35]; INTEGER NVMACTIVEARRAY =0; INTEGER PARSIZE =0; INTEGER PAR =0; INTEGER PARWORDCOUNT =0; INTEGER OFFSET =0; INTEGER NVMDATAINDEX =0; INTEGER NVMPROTINDEX =0; INTEGER NVMWORDS =0; INTEGER NVMPAGES =0; INTEGER NVMWORDCOUNT =0; INTEGER NUMOFPARTPRIV_ALL =4; BOOLEAN NVMPARSIZEPRIV_ALL[128] = $0000004000000580000000a000000040; INTEGER NVMDATASTREAMSIZEPRIV_ALL =54272; BOOLEAN NVMADDRPRIV_ALL[88] = $20f800811005fec017f900; BOOLEAN NVMDATAPRIV_ALL[54272] = @0g1000W1000I008W0030X06W080I03080a00G0X060 22C41W0a900618W1016I0080003024X9m600Hu2G01G4kWG88C2G41G04E08C3i10G4M2810 82h08G04XLG84461GY080I90463G20G4636mR80010a00000Am51OXMgW1Acm400WXH100W0 5vI54J100e5LmmbUP2000oK0008mb20X2E90c0W8Auc0O30o49C820000Q0m0uWH00W184Y0 00U20WsF20G200000G300Wb0270e8000040000u70089i0Pu0GIiWY8GaaO28Y309H2G2010 K00000GC2E0o08G4K088G00100000AGW00X20000OG010w200000J21Y1503A40G300000IK 80GX12m95241A0gK8G4eW052O0010a2000080520KSW050009WEI344lA8sT580300fVLSZf 1r@504D8GYzVg020120qlw@M140620erytj08000003x@DHW2ij@7GW0WH00jb@l0WG013qr 0IAO01mg1680chk01Wr36G0iWW12Wf8CG0O1D4gOI8HW0O04140sW801mI2680ccm01W1000 0WeW12WfACG0OcL01c2Gr20yEN@lXFI580q22y44W00Bu8G126i0bMGmZW02KOVZFOAuRu3J 5I0laPG0enfV32y14WaG89040O2eN0LB0mxDy@6_KKW0HB8mBG024ilXF1L81yIa13GTe012 8W00stuZV2283u01qByezRy1F1V3Vufmtu3FIa0FBZt0W7m1enG2eE04X0tzDy1d6SOK3mhu v5K14OzYAGbuJ2mC0ELYV9WgWuQ1AG54iUB01O1C38Nbuh5eAmSMXWdnhF7SqlU2U0mG0bu9 u3030KYVEm8@6m9A2U1K00dOWrDa16iEcCmNPO9_84C3GN1s92y3mM0YFGWAY8W2G2KH41K0 KWAY8W2m2KIX30a7C001QCG5wEDyu5kZ0Hj4me8Y50mlYz1CMVZFH800q0D_a20WPW3@c4x1 28FHl_Y3fXGeGyuN0s00mtZzXeN000SgbIOHWH00r7a791ncaP3OF8FB228H00yCQV0011m@ W108LTn5ncF09450Uv32S1E@c4ECe5mXztGl0uHG6eG7bg2R0yDyXU4IWV80Huv5a0V3Vcdn 0h7a82OT26G0a7o00GAU1QmC0J@Y44H0HP1_tmdqHg2EW4VZFGdPWgW40Q0fxyln7aZyDy9S 63iUW6OByiz17vN1MNm140vXD22iUW280v1O4NxyjL2sBDWr3S0RYts119Ws8488e0O6nnEd WK55_Z0YeNo0hB094OzM020U4ywybNo0h7e0M6F30F168Py40y88W1YL0Z4WO3847tK1L15O O14eBe0G5HfEdOa00Y30ymC0I@_4w108K0BSwjbq1@JDsaG0H0O4DdE16fvqPm8DBT46Hpfh WH08500lJ2KHZ02Y1fW2g60m@70_@ULzl1Cw2m1O10gXde70nX8XSORFHFGY3HXSms00_100 1f6Wr160GdE0Ep0mfAI60D10Ng955y11C0SI001WG8AU00_yr7GU4cu180m0KE0gvq1G0WcB iWJ_tWSXJC9I60D10da95LkG1e4V30O0W0WG4YH00lar7eWX2O0GF08mn36nA0KO2Q4CDb07 6ZaZH5ne917buB08Hk8S8j04HWHWRyHu1K_51YWhu3v1eyhau8tu31Am8v6V801sa3OOKE69 rrHG1hh1fn00mpf_Cme7Oq7WBuYweFeWkW38Iknt7OGdm161tux3CGtf3W0GTT9Kmwz15eFz RMw04WYC20WtaHr040mCoJGC1EGn31h3G1Q4V40ui61GZwMw049KZF004G824e0eU2186z1W z90Tj12uIVWu1WgB100Gy1aWEn7100a7H16OX0YX_0SF5WE0W0G8w4V4020mx8z1Y70gk500 0n7m2oo8aO40m3Azlaw6y0AWs06zWHH1GWG410ubH@k460EWo3G0nXWY70180u0e400I06ny ySbGV8Tq124XBeuN24H8kWYVba3Hq2A_bWH4IBeutDvGhRiUjX2WY_5qAu0oO40WF1zB5O0K 0A70H0ugL8UyhSR00uzN_YW89BGID4m8c5ejunJq3WwKbG98DHQgAuB2KAHz1C063vZa22_Y 0W80@9q3KTKL838j6AH2qqqGGC4CI21WP0u40_1801hQWr5c02dE0201qeRy2GX@G@ikg1Ox 5wm@e6G20e1D_G5WWq0030W502y03a9D7IK80GXs8mWUW0m8002041eG0WGW02080z02W130 G0CG0020ZL8W0Oia1WWmR40310Y1040160018m08W02Gm16yQBb4T44EZWaT4C0W1JW45IAq r1G0WA_00Ghh7014DU48W0YF01G0jYA_04mJg7b060HJ080YN008Gy2GWGZN010WKgFQ8W42 I2WU5m830i00F5W1sFQuS40@200gY380coS01WnO00I8D9000ebqXtH22hdW70AG7I00D009 0mZHy1aHon4gn70G_4z00CG06kn3W7Gml00FpolDDXYH00UQeF0mZAzNZJiz4Oq3VZPD_A00 SGcruB10m3PMZly00Kn3CGCB949a3It1W00W6k03T@0K2M3@yWeM41_8WeeEGG0Fm60uex7y 03LfXBOGrFWDF0G07mGXQu36qJ3FX13Um9CuW7_c1MymLOsYl10WA9X0OWXFyS6yx1tpi5_D 00yF30m7Z_mPjda420nQyx34Efa80213XpO_@U0n@@tpM_10ytfl@l73@RD_w30WDW3K3dr0 1z023S6pQut700O03KD0mx8y5aHui6We70WWpO2o8eOq@tJG_z1I1ZcaFW8@sJI20CYXF0GM BW09BW0gMda44O_xyUHty710uPON00oDIA1qaG0981RKIYQS0ehH99g11Wkcaa0Q9w0a_L0W 0dZU190W60W7kW0G008XMK2WQO0eVYU9A1Wqu0enYI0IZ3YMin3gd0C80@0SEAsu1qNvxS00 9b61C190W6H3Wi50XH00F1m7461HlWgMHaa3eHaaK0Q21FWaI1W52J4m80CYexpW00I20fkW 1B99qXI00_hfFGS0Cm008W2c0014W12Q0U0_LD0W04m03OW26ew5008K4G0C4qE0W3JFG0Ox w14030WG0u0GG400dWW0m100v@l@@t00m0O008XuT5icaa0m8020xvO4Q1mmPlK07WG0mXnL Df0F_01mmg780CS011W31m10S09q300JFW0OAPs5Fm1GB5FY0V1i30mFWT42qBwWxZsW7uXe XG77CDCeDMqX34GG7GH7EGaFfXXNJT09_DMqX04W2T4W0H@65y9O70XF1sHw3Goln0V1M18u BWL8wNBWt0W3kZWWE7OwOH72GW0T02@c05OvxbsK7GkpbMMWeZ8_50z9Gy004uEYK21jWaEU W8Ga0A8W0DGG2eW02S7nFJOeMWkV0693Z0XHCeNfbDC012HV10F0X0kZ0XCH74e129059GY6 8a04S75Vf01H8i00aMXF000MHiHIzYF0000mph_X08mC8L0qAGUeIGlm7004UY8I8C_50mNC z10aS0403HQ9Bm1CL@MXF00a1W0Xc8Y91Amiw3GIW206Qbmf0QWo003W02U07KlT1AmZwtQ4 W2qF_0o80E9L31U0w0eg0f27Z00yvZl0qK0PsB_118mUwtAy100@nnHAwzfB1GWmI4nS15eG z18NG1g6VK1G0DGH0W9Nm22J@Mh8SWGI4nk05mDz9er4124WVpQGGI92IBHW@@@10GIIKeD3 WsHe1QyH0WGZF6WK4m@d042Ub8W2bH4uXZOAK6HetV284zeK0521K0XW7AYfGPmW91eE12u4 r9m02fk14G1b5C_e2GAmaHgZW1M6PZeU30281JDgjIK715a0r9O05f_0Aenou0JDfjAW70FD 0eRkDL0V0UOVe36OW4OI4gJW062DXg4KWUH7U30tHnKA007z0W0280y@VldA0W00WZ0e5f3@ 0Q897eaehB012Ly14WMNN03CQy8OW14V0301Q7Ly1CWdKNA2m0Yu0m04l01OWu5m0Y6l0400 gKVq0etq812WfY9G0OBW40GR199GQ6oU@Dd60H9n4GQ2FF15I9W9GQ4U_X8b2W1eq8Z8mkFv X79X1tHp388B1181420Eyq20GYGIJ92Wa@VpKK20TzYGn3En6qCmw5M02YN160YBuvtsiM9w Z0wFmqkk6YZ747uBGX0C0D3n1W22V4ia2WHAF8UqmZNuE20@2WG80yO14u7a00QGZFM100D0 tHWXsUiqECX4qe6_i24E0Y8m3CHe2VO051h3O002Qh0aXW7O3j0OIfX20@0302u70020D1Gf 0GRWqmY3aC44W16UXpHOrXyF76y20yoBNSKRA85Bm04qW2W_aaW0G01UWBIrf3W000U4WF2g XCFWVqneNSgL1D02b40821Fm8IH48901KBu040T0G11eD0AC0QM0NA612Z20MzYEC0g5mp0G 1R1_kYLWL40qBOwD070ji1e11D0Y0W08Cq40O8WcsymzH7ZU1e5G0DLmdW584_4OXsyG_H7Z U1e570DLmdW501Ojn3zZMCz20uB9VnqBhW01mm@@F00ugr6nAWLW0Q7CjA0FhP11_1Od9WJI UeleXhNXCB4mFWT80_4OdayG_H3dU50DIYWa0OWE4SiJ0@2M25m10vB002YWa000uD01L0Dp 1Gz095y9uDY3WmY741OW_2GUL6IIUakeXhN00Vxm7kUZ6m1mWl0sP20Z60XE08W8uJGq0HO6 yDmIK080atWe1EHku3dU7G9IW64GJQyH0u0QU4G4S7XWs10SJ0F0OQWgjbGIHenY703m9r3X 1L4z64AbebWGC9QLY5X61hzb7U2iF446kZ00yd3N_dEFB20tHBa041210GQXX0aPq0cE9X0a GX9U02m@t7k@9304CTIX0S0I4QWS1I04z29XYRT3m0uc6kQ5h_1Y_PrtWrpYD65847F8AG6z LWzpO8H1oNm30ZC7820_MGuBr9Z04IZuMt05GYV1n8fOaT2Y_f900B00O000X0dU3G5vcDSg b2602qnI@0fdiwBew9EUWG0PoWsu1Y1MRQP1oNm30Ye780KY00NA4ybwpO0ZrGShB078vNmO KSCYiWqMGpd9G101WK00SzY1ZYr_o7F1sF25r21AIT8KKjxJUw5m_KK50b58gNGHgTVv3GW0 I1aw808uqB0006QLJi8i4fy0GoIW48Ls8WV0RXDWc1_K042L70W0WAaFQ09BCycfH1C01m03 jK09AII0Wz0vf20JaqJW70f0m8Km865o_It1k80V1irMu0aLS@q0OawF7Cqc0aK8fg080J0a GL0T458200200oKPPAG4oJFH5G6w9EPKIE24Y44L11aXaoGWOaWIY95H40QfbMqoKPPAgAIJ W8qJ040fWa2HWOaWgY9KrIBQfbM00S7100AGI9W60If0810qG0D0DF28w9u186W2oXW00040 0v@xv_@00b0W6m61CZ004@V@Es70u10_0gM0Wd0u2WV1007O4ET0LWzF7004GIm0aLvx_dp4 04000RK106u@xzs@@VF@@zVttulH0OG20M4f9S30y@00@F0m@30y@00@70xF60G0001043e4 400JKK9WRGd2GW00050G080I006DyGG0000f1O003uX67u00A00G0G204C0G1G100006e000 0mAi2BXLOb50806W1A0503e0A0003MJ10X50_v7t2WMb8008Xs0008_FI0Wz@T08NcHmEkW_ QP_@0O0; BOOLEAN NVMPROTECTPRIV_ALL[12] = $000; INTEGER NUMOFPART_ALL =2; BOOLEAN NVMPARSIZE_ALL[64] = $0000d60000010000; INTEGER NVMDATASTREAMSIZE_ALL =3850240; BOOLEAN NVMADDR_ALL[44] = $40000000000; BOOLEAN NVMDATA_ALL[3850240] = @0Wr10000208PA000813000MO000G33000Um000W860WX 8KKN00WA68Z1wmB00GMU100sm000WE6000yn000WGC000Oa1000z3700u43000IP000mA300 0oZR00W6N300qxQ00WCu60089t000bU600873000sP000Grd100_n000WW6000Cq000WYC00 0ue10009D000Of8En0GGJ3000UQ000GK6000Cr000Wg6000Sb1000PD000Oh1000TP000Gh6 000op000mO6000Ks000Wp6000ac1000hD000ej1000lP000GS3000cR000GT6000St000Wy6 000id1000zD000ul10001Q000mW3000AS000mX6000au000W57000qe1000FE0008o1000JQ 000Gb3000kS000Gc6000iv000WE7000yf1000XE000Oq1000bQ000mf3000IT000mgv41600 0yw000WO7000Ch1000rE000us1000vQ000mk3000wT000ml60004y000WX7000Ki10007F00 08v1000BR000Gp3000UU000Gq6000Cz000Wg7000Sj1000PF000Ox1000TR000mt30002V00 0mu6000K_000Wp7000ak1000hF000ez1000lR000Gy3000cV000Gz6000S@000Wy7000aF41 00Pa8008d4100P9H00GU9200oCH00GkI400aTY00WyJ400a15100ve8008B5100vHH00GcA2 00oLH00GsK400alY00WCM400aZ5100Pj8008l5100PQH00GkB200oUH00G_M400a1Z00WSO4 00a56100vn8008J6100vYH00GsC200G390U4QG20KiGqe19qIIQAX8XC0QHA47_5AyHmE11V 2s1_HN6aAB9cf4YnW886IY9fnKIa2XXV32V4iW_Y60060CuRyfJ0F8l1S007z4y00Wd0F01u RyHJy_VU1u@2WP000TuG00O0W0mH009050A_281e0000001q20080000082e0Z108AfI00Gt 40000YyWE5Xb703e1UK8t0026m1kZ0ml09F00GOo300Ges1WsAn28v1m00BF06O0nYvHGeN@ TE0@20GWpH_VE0_5E71mlWeM30VCzR8xP0K2BF00u9q7MG6G430laxh0uvc@30Fby71mJH_w 5T8041mZFSXNj52h@ltS@xay002dx2A00sXYJUYU067Wm7bv44O02@KcZHWD0u@@V04I00X0 uTF@0HUWdgdW0O060b05mT_1Yy8B5Xb70201Ob06eS_1YyeM5Xb705W2Ob06WR_1Yy4J5Xb7 0402O0IUeT50aW8vp680PFqYB0b8ZH6n8X9F070Ov3G00BF0080N2Gb4Wo1G9GoZrhA0yBYl XilQW1azmBEPY2o0jNL0ul3V49VEW08xnOSo45a1Slg0mF6_8I_O12Gs3pu6f981FHFW43Ov h2O0iNL0uT2V4PVE008xHQSZK5i1Ulg0md3_8I__05Gs3suaXHZOKK01X160000Gb1SPK01A 0_JWlJo3204YyuC0dbd03SG8U2UY8bpo30020OQ0c2WN5v3az06EW9V0081uPs_WOa2W5Uz2 mlGeMW8FnJ1WG4cy0C0Wadqab2W1QBm82Wd9xd0GC0UZolJa7W9uiy0OWde70oDCy9C48qB2 g58v1yK0a6S0cbIuqW4mm_8043WNYyxKQG20KkXJ3AmJm3W16eG202SE2WVXVj0HU2A8lX0i Wc1CYZSz0uL1V2U2PnU2qmn890lEwF6Z8WHume4WNPz30KYFQWX6_w58v5EO0JU000_zEW6X eM4OqYo58vzu43eGWiNi10Cv18044FA0G4Z00youVqYDKa0WKe001YU1ayFIY952xG@K9G2W et124IGQJCW21oUH70m12BGY@HBGe1f9na12PuZ96GX0PleY0u0X58l@e58qWFaOo0X7WJj3 eH2Cowv2AyP6604FAAu9uLz0Z4HGGaW2WYHYm80Wtp_3iOf5VC3IKu0HPL1Aa2Vc1mwP@4u1 W1aYFA0M0GWJlLR54_DF0167wdQ1i0SwTWS25OeT15_C33Wid928iy0GWdGlZn9Wz7083vd9 W@1Fq0qU2_UB3K0WiF0X0iyr5KGb_ZPw020mGSOJP3mAaYFcXfxq148WGACk01wT5pp6GG7W 30Hl047X0sJq05G8GGoJ3Hm0D0BV0408vfGO90Uor7WoYWUXeM3PFA8IOv1010nUY2WYm22q 4MU0403G31ufs_DBT02mGsJ2X4MU0804G31u5s_DBT12mGs3ZX4MU0C06G31uXr_DBT22mGs pJIW4yq_DBT32mGs3KIW4Oq_1HUG4IpfZW00MU1808C28vx7GWIr7Gog0iWeN828a1Lslv02 F8azREWm3mO@c38yW7slv02FmWz3Yz8BG018Kc_06Ge08KBimdP0o7G0Wi7IZ8iy080XpIG0 x1GApWF4W1Ov5W080DWalC01OIV09B2zgbqXtJmYFc1y9qx8S0OV4OFGsZf34cy0S0Up08sJ a0M4MX9F020K4b6_00g0WF6u3eHmTh00VBuRGZmrM10lKmFG616Y20_IW@1651W0XWl1C2S4 50yT0VnyJGsZkeAHH20@3O0Ov5G0H1VMW10jGXVL94W4I1c4X891yGuXoz35@6YH0P4awNGi 71fG0a9Oobdt3ka0u@d17F@3En0uzl1G5EY02CaHX58Gpu30mR6V40i0kS0BPGb7Wo4W7xv3 8PN0MzYEyUSW63eGWLpz9mFt06eG4O48X81uha_0Pl4YH8S0iyPJC00m3c_nAsICAOkLKF8J 3jI804rACv1O0SW60Wt8y5azeHg1CgO13eDV09B4zY8xPpCmHBWbF030W9w2DMW7lnI0yQWA K0D5KH2GJfG29Q08I2W32y50my6l6U81GpRyKu130DP5fYe3WCIBBMv20i0Vq0IUghBL0Pmt 20ZDQs4D64V0C09m41_M0i50B0W07lWxeDWs4nA0RibiEVECCoUd3mlWXMYOFRpaEWWuD4eB qI1UX6Rx0241qAGb7WMa2LXe1G460UWugXKW0qA853W6Z2nGuW4CVq0HUgdAs01c1VE00Cys BW0Z4B3YF06yX_CYViF766HlpVYUW240WNVV1Nj3eH1XLphG0ZGuteF4eFeBHsHlI60300yK 3GWaNX0ET8W4aEWLd1u0_5DGidUuAUPWBr78sJVS4m8W9V0105Z00yDqF0GnDH30840MuqBn h04erGs8lIR03y6qBN1u0U5TGa7J024OWxqF8oZP012KGxy30KSAQUVE0MPfez4y47ye014P 2WVCzHGyee01CI0PY2Z00UQpF0GXPeHGy220N2H2mNXzDm80W2FWE8v1400J_00GC6L0HI0U wfFUc58xnES0N2e068I2WFEz1pi1HU21e4W18Ga40FQw30KeHqF1lc5G456ayW60WJ9KWMqF 8o3T0f4KmeyZYShySFl22z5AGAG@KHf3muvF1_b3G85UfpV2U8308AC8v1500N8e0CeVGa7g 0A4e01v70eCUqcxyW8FI0qFG1feFeoz9uzC3a2VK0MGoJRUW3uU_1HUQ38FW28ZV0WInHhgp 3Yyy1GU05iW_WAtdWNqEGAyH1S19Fxv1E0qv74vPFWy0Am8_10Ad6jREF8oZB4v1KGxvZfSV 2UJFm8AC8v1200N7e0pcVGa7a0g3eWKu70eeOqquyd0Vr00a2DmvuKReC2imk0a9h0cDm8AC 8v5TC0d9B1fkFyYbQynBCK3VW11ruZB8mK3AY10GXOyXB843VU1GvS@KXi5OsA8Kfe0T3zJn oQ8d4164n31xirJp@8WHO0D9oUMrtvV00_w1uirpq@00yl3OO03G0mK2VQXG0fS6eF0sGG40 WLaNqFHFDbJG0MI7Gn8G420m3Jz10Ai3jWa7OH0iy28024FK04VW0nbF0G1eez4zT2EG1CAW 18KV0W2sGZIyX2CliYPYcIu75muDUGy00m3p0HXH00ltq70Z4G624@d031nJG08GyG50P491 mBQ_2G42XFjWu9wDbVaYF20756fG800_leF0eOMe3YyK4Gv04WW890USolc21IFQKO40m39z 1G60YFd0JSd3az02088Ymo30040SF1F028K0I9_X68mbHJByP26ilo4W60vX8W0O50Wt01gk LwBQ19F2H6A086zlxBnV0WoWW_9unk0a2Vc0f401avV0WoFqJlNDYzu6H_03y80BGa4Wd_uF 8Z005O5DbmVJ000AK1wXi7HAP4x9E32BF0K0Ov5G248UEDG3nJ04i0V1i00A14K00yg3mLG1 0mhW0B1500V22CWIW8_00WNCIbnQ1y3OXW08Ws0k2K00Ut2O9G10u1GW1ecsb52uV002u6Kq 20WdP0R20173uAG10u9CWb050WNt0Y0yF0WQ08G0r4WR015jBB0W@M032W0K2O9Gfxeh1W0n WN0iH0uDJ_Mxy2w0MdNWEYvS0PFGb@K0801ZW4803aYFc0E1dJ@A00_51uzhWGeXtAp7jWad iK4Imcz30K_XUvxA1XWK04W@H@30A00UW18GsZzu0cy14G_74OEy10A01FR1aKux40U2Uw10 fuZ90e6_y230MvCTJD_m5gAXF00ZtuBn300lO148sZa14MU0O0Ce1Myb0uUM4g@bOu3Cu86V W1JAufaK00yx38KCg4XW0yswVe4RX211ed1Q2jXiKaOu3C8KK8Kp2W0Gy4ycb1IXlJ0Ra61m A01ll1y9mFd3LTGWKCY0nZ209PG00W7Fw30A_XUFvAru3Nee6_031gndNWq66cIZd0F00WOy n5KWK8YndNmuwv01aaSE1nJm28GyuQ0KCA66z@zgbV0W20mBK0V2ymx0Ind9WZtve5Vd0Zah 0EeL2s0iY9X_9m3m285Vd0Rzc34Gynv6eggoO8sJ4GXJGW02f0uJ1lK6V20P1mp0y7Yz4141 2HOo300K6V4081mh@@Z1U0aYVe@7l6WDctSBoP81bX@6E74GOlvMK2G2u2@tx0u0sbX0WlAy Xlv1HUaZeV23880oGa4Wt3ul6pV2UtF0fmd9OigvLQbUWsihWWVf6Vu2rhYUkpb6UX8b@etI lIDyv52epXoyWOyXC843VY104u70UqP5SyRb6XKyv4Cb8QKw01nZh0_@Uym@JWNI0oRWWm78 Gkz30K_XU1uArmdOeeG8em84Wdb_74Ee6V83oIsOJPDj643VSX0nuZCO86V431nmdNOmmvK3 VY1m@tVlyf6V431XC24Z0_H00blZstb74vP40nO4maF00y@zAW@Wa7Z1WI1A501uRc@F1Fr7 WKup4C_nyvioVqpbN1nven14WFC_JmvQ9Tu54Gs3814cy08W9m38sZK0nBHW9W766m0Qu8w9 0FWF8Zed0y0z02Yd35OHqQCs90F230XV7nT70jH_BBSWiic05GSN0P34GW0SeOaUH7U1z@z4 iNG4I4mfNqXNW44FsEW0n320oneO820m3Qy9Gy41G606GPyHXHcS7In7DWH8_W6iUZ3e0crB Gi791Y8W0HW64gb0ZIaW08f8Gide18eG2JU06Wn@ICy1602O4nm7OGW1QK3VSX02mpizf5V0 304w5WVDmY1BDar0Wo2dZ0uN3X8Ce5WLmIqm2VE06neD459ACWYF60M3Z0mAC1Q2M40iG5e1 G5@1zWGheqC1_1Ov2n700B459OH5bM0q90U4GDIIMIbLO5D8mAAC29816yye5uYXI8rWEl32 0A_20O109Y820ayRGY9522@E45bFQB6BGid810azqOWdWd0C08y11u438ei02G1QQ0H21ZG2 IW59_SGYF80ctu9m3H0QWilR1381UI0U1U0uHZ1Zg_S52sG448vjX421G0MnrHZkp7840YF8 W03ZWyv0G5LW6XeL5Fe4V00S0e9iYigi50_04G96j1e3W60iYuWMeOf2U1Od85ocoM2ZY0wK 080sGh2y2O7RARa4QWuzFFbm83Wc8u50QYK8VeFZcl4ZqUq42iX441BEfp7IH5VE06P8018_ W06CCoad3WV1O431OG2JW1B1W039Om0JumC0Wm5NO1W4VG0316nWLa0q0PFa6GuElA0ju31W 3IHWX6ZA2pV5cH00U3rd1YG8y1141024w58x1K02JU0202u11u900a7D4XuGWWA2H4Oa3C2I ZKnk08bfW646XeZ0oU45Wma7W0i0Q0nUWE082E6m84VW0bma7W3W3UG0U2UGFH@4uTN0Y18b z9K03Ue1G3YH_@_RzF0W4C11Sl5v3Cg0X1e0X0KGY04a701k4V00k7mBW7GlhW4a1QZGHbKq a2n1i53jA780qOGAyX0OW1M06XGy12CWme@lNZ@31u300R3z8K4WL0Sq42VGWHqd34ZWz8_U UO0C0Gw5W0XXscq0HCCYWW1inFFP22IgW0hbhkYLIPxOa0W0Z04KqS3GWWI2G04z_iLmFQKY F8WnWLi0qWme@ltM@30GWeN21O001YUz4yFBWm0qxd3K74702yW0y1yWrX6eo2Um4OBMP1NW c@X0y10WbXM4A2WA46QhTUOe5K02O@S0yBCqIOyOW2BY1WiddW1AmsoEDuW4V20C1MdX2yb_ 5YV1nd00N4y8h8L170m32uCGs1ecsbLLmLhO30U@7mY422j19U0nUU6GGSWCPX4kG280EvY5 y2Y3ABhMWJYSb1UAX3DWB23240CG0koF7GsJSNR4OWiupau31WnSFQlN0MdXGaei2OT04XYO 89PZK81aT0aHIPX9VJ2@9063h3WGGKMIWXaa5IXY1m0Pr76wBWr10BVGV6Z7KO8OO098x_mC 6WAabVOml0MFCW9u7c_56G5_3Z@23e2@XvVn0GX9nF4GC9_01W0o1u0JXncaDJX4GsQXZ9br 8nY150IT3C2ca5kZyaz@d0Q1WZMbeaenpX1e6UGYdizRIuh1meW72iE0b8WrP09XAhMb5DO8 O7D8OWeuGHoonVowl0iE1iu3zP4zGa11bboU4GmVP@Nv070UAmWeo2P719048c4_X0C6MF0Z ifiu43H9xa29WiX272AhMOA0zGmwAW1IL4c@Q4ZmHsWWdnmBS3Dmw0OaD9hqOGIP33HJAaWd 781K3s8P9EL4APBjOn0UPXd0M7W06UW0pmfYo8RUW7MmBJE0mw6040bj706W9UB1l1MFL020 D62cFG1cY3D9xYSWpYA7sSMa6WM9n6X22IT1YBeW2u88D02OyvFn_@XpzdFckoG0IXXaaDIX iUsGX31bLwdBD5004ch0001T5008mWMWi7XZ04xPA009F1830HIaWWs@E0109FyXI0beDWb_ GW0nl6XK2SUYU0H610I30r2WQ28bi3c6M8Wz4EIec6W0no0Y2BF04u9m30344V00SQnAB4ZJ iPYe8ZDR86Hi8Oa907S7v9u703XPKF04O4yZ00mTadWFWG0EWzd@4u5WXC0C0yd3WVXeM0PF I8GOv101Y0j0CY0nZ00_@UNvFGid70w8W03Wd8GR2v09_10O1nN2078yYKE3Ztqa3YU1ml3G XXK70W0O2D50WKW0j3O48w68sZ30j1G00GB8oR05KKMX9F04OGX41W30jCC22yY0yM3N8mBS 71WVRHwm@48J28sZa00oUYS0Gs3d14kH63ADX03C0AQ4sS0M6WHQy10Wd0D1Gf6G3azWa4X9 F0482yH1NcX8Kon0n7W2Ag5IXl0WIHZK3qZW8mHCBS8470oUWO0GsZc247WX0O3K448A199G 03n700NA_00u6I7h0OYV6000uzW03G50Wdn02KQ074602C@SW8FzIrH01Y6FamHnogQuAJkH YN504eIuwHkHXN504eAugGkGWdYue2m1azefWW8l1RqW21z1G0Xb70Ba2WM5V001cuB3GEWA KyB0090WKWAGuNW0V0000K02qOYFD0G8SCjimR54yBGs383G4_Q032_5Hud1454GWJX68s3a 1L0G0HF7eM2CG1EY7anhMu30mPLG0mAoTS79_C0OK087mxd7sIq8dNKO408x1MA2BF0I8Nu3 001JH0u3K7EPB_00O2L40mZ1151Y0PFWC8AS42Wn2G0xE70gmCqm5V8060kOCen4_Q01ay0H uh1008bW5DcuR38GGA00l_3C0wGji2W5W8Vz1YWK0Yyb78O490n0azWa44Xl6W0Hyt8h02G0 uCo8EC7XOYlC0c1m@W0YoZ3a2eOB0GX2_X0F0_z9V000ws300GYU000Mn700Wpt0W80QWf9E 24bZ3Pn1Gi7838QWXKJG1IvSSXF4G0WK_3zryQC0401H4cy0O0PW3ea5EG1JACv1e0@VV7sN Ov1m25OJA070@gF5004Yh000H0uz03yA_1UmVq@LU0604Xb70603uAOI@VV1slWD93UI0UG2 00mpX0V2U0eGrMQLy10e0nU89fE12W8_P0KA4nWu72G68UEmWma702oKW034F3Mu9uXY3V3V K6Lfu30mXA4AYF8W0JyX0C6G45n77mW9yJ0S4laYml3mX9_A005nd70W9yN02AY@7W0Jyn0u A2VC07cut00K4VP00cmt18e8_Q02Cnt3Wh8yJ04AY@607NyH00g2VA00kuR08K5VM0Hkm70m jA_00ySnd0GoAy10IuYF0WTKy10iu2V100M0Y9yp0OS0F4U00uDBWg0H0Anqog8y51AAY@8W I250G90145nd0We8y706AYF20GHyT2KA2VJWYguJ2e_@UfqFGaN_fAsf082yGKY399R4AGLy 9105125n700e1WK4V20XYuh0GK5_A055nF0Gf8_E0A5Xl1Gv@xP4@Xl8X7Q9SeA_K0anDOe8 2WHK27Y2ePWZBc3az0o02oPuWW58GLwNWDp0DxYF0W97mglZ0L28km72Og0W0G2utm7zGXoC 0Ljm1m0aLgUW04e8_210X9F09GXuPm2A4F7O0Ad@D_0EK0C2Gs3uKK4_X0JE0CGWHK4_X031 0X0Ze8_G105XVAm4G01CG4542OWu9uPn0AYFL0HHul24K4VGI5W06i2WOvSWIze00dotmdjG Zzu09yD_GBs8o4e0B4l0O8YpzD_G9KWiFE33o601G8YYmF4G8n85xyKGa2We8y514AY@80OP PfW2BvS9W74C41eN5V00110v9u5m24P9WiFGY400YuR38G5_G0h84HRclB_00WW8l1Hax21W AM90V0F0ZVH5_G0CoY6Nu3180G5m0j2020HG4_R0YnEtoycAW0Fy3wNjLVZFl0z9uXo205Bm 1T4OGO24eKy1etL2YA81uQUkmN0m0WB@X_5Sr1HQ09BOI@VFjs@9xz@SOI83Co1PQ0DBOJz0 jvIK44577GbiH12FGGIse0tL_0012z5WzoJMBCdjuB0Wp5V200XAwFwrUhQxy2InVqZ0N1oU 0P006vDuzN22JU0C0Yud1OC4V00v@kNiyZ9W06i4Gi7uKScvu2V906O5HfV9q8hYF006Ly11 mLcTJ1PSG0lL00We9_I003W29GB0KK0qcWeGKSESW47r2G0G4Sa82AmCbFA5Z4VK0kMu08x1 v8_AU4UWe2ACv1O0Cg4AWsZ5fbYn5Nm1oOGiY1W06iHv2TH389IS0q1Bma@VFVt78s39AWL8 X9F08aT01Y1QSXF8W1Nyr00onXXu08s3a1G5VG02guJ3O4cy0OW_9VQA_aziVF00oM51Yw0Y yD2e4cPQ2QkYaRfumHu2QMy10upYF10UKuJ0u65V3AHW0m2az0oWHXl0mANy10a2BF0COKu3 0awpSWOFJ1aw018394Pa369X9D0uVZF8Zr0rxeTyg808VZ2oIyp0ix6F0UOUGRB_80OTXl50 2yYQNqsYF30NNuJ1WWlep5jju30070YVZFeYT851Uqi5V10eKBfPy11WpYF0041RkGy4W1CL 4rHJJy310mQK435Ky71C02uHm39OJXn700c08Z1E01VR6KJy12018141GA8IXSIG3849GadW mg9W0A492oCHPjGaA8J4Wp2OYIS840Y0Wt3080K28I80v4WU1CXHk98p8Wt0FC1er5VO0Ekm 710OOH00Uc644We8y3106ME2cPQ15tv98p0WtFEuhubu1b7T2m42u1n32K631W8vSX0c1n34 Yq1fy3xdYriNGmIe000cj400mZ810044900WC8100qlH000T9200eUH00088U608f22qC_S0 u@ldAw34xvPWcVAmaQW7Dnd30Nmc4h848PtuZ3WDWcW0TFF78W0W42HUSG640OWi7G3m1u3u Xq08mFqV1M18akS804na1u_@UNWl38NQ5Idm0Wh0001j400830JDnN7W74ySi8O7z0mKJyv1 u12F7BYqHF0Cr4VV0UmmpnYmSq80J4n730CWCn4VR0GamF0mX0a82@60t0O68yG4VE01amV0 mX8_F0S4o40f0Zen4VO0H2Y4JyP10O2VDW02Gc0C3I38WPeM7w0aGa9Js1Y4cuV1m70Jkkkd 208PbGa0ITmzp2Gwgr1FE9WPGm8X8X0c38p4mG2O_5z3qV1BR0MtR0WGa90I4n760W8yj0S8 a9Ym@28408m0ECnlA62W14F1U0SG0G20uV008Yl6fYG0mH0I3Tkbm70WJGW0@G@bM5WHeT78 2VDW1Yud1G_@UFkBAG4bOpLm0QiVtmd3Wf9_X0Y8WN0F04uB5GfW80IvFw1nh@x_zsDA05Om _T75W1WP2u5m000UF14Cu11u3uXyM800XS0HG4VP02gm728A8W010Ipf1K0sr72W03Sy@Uly VtuZ3WDdvQYlG0H2m7m3I1w0aP4m3Y7Afta3y7z6PrKGqISW9P@@UIhlbm70OX2YB1U84e6K 483SO8MXWd0CC8y10O_V@D_71G2KX0F1V0401SW8_R00Kn74WWYob0UWy02_L54n0qQ2VJ0c cuV2mL1HEfE3217q8b6IIsWmGEWf20bBsWB88V02aGqM2V007A8w4u5GWKQCGbwNWDr4VZ0Y cmN4W1aymBA1M73W0O7L480404kuJ1GWK8TWDuYL0ZWA_I0aOmh432y3zgJrWalof2uWmo3W 5M5_00k2cqVtRk@AOp@T@txwWHqs78YlCW1Huh18exS50OudpWHG4_P03tEto0_EmFqZaNB0 4eYF4rCG00_@U2hhbr0S03WMpIp80y@009G10mxLW014O0d1Io@xnb@6a904P1efbTfVGGq7 4uFwFbgqYFIWLJul10q4VE0o2nBW5q4_O03Dn@30g9_y0SDXV6GGJyx0m7n1DnN30GA_81sd 0F5B019L4_X0RUC4K531Wg45XF8GHHyt0WAYFD0NHud1mw6VG0BGoZ0n4cy08W@bT2mf8_m0 M5Xl70GHyx04AYFEWHHu@1SEBNXmHroIHyz0KzaBau8Oog8_w0Y8aR0p4401q5VA0Xkup2O1 Yym3bbRIOo300K5VA0hgup2820WgWeQnN0WhAWA5V3wBY00Zo8A5V10Sku3081W8bYVTC4mr Tr4_X000W@7CmRy4u1EQlgWOJ8WXHhByj0O09Fy15L0Wad0d1az8q44Cveu30W5k2C3O00ZG 0m9eJt2O3_J0s1YN08CkY_IV8EFzY69@0W9_0E0G10m3f01oUCDGamlcmY4W07W23_5JZy4y 0010S10mhd0Fm500lQ2KWGa3SuAU0U00mlb07840O210HOy10W82VCW0YuVHr650Hyj0O8Yl D0JNuR1C_6Va8BguZ0Oq5_K0CWadUJXA_C0OkP4FuJWL4cy0C0Kn70WiB_40W082guJ00G4_ P0YCm326X8_O0Y9XV0W7921o4F4Xl3GOIy70ueYF801Hu@0uq4@D02YuR1GqiQW2e04QM9H1 I06DXF6W3HyH0uDZVo64Gdyr4_W0Z1W7UCmRyWwXkXF70xlxhrgOaWW_08oNWOM40X9F02GX 9d0UmOaLZN3EeGc2K8WC@x02WrTG0HYFRWn0hxG0jBH0p1C0h00y07G1i26@AIyl1400FV14 EO0GA00_i18moo0Z4lL54807mtgI14u7wnMg3qgI11qIWUY92mXA_W0MKW80eu7whZh25Y8W h0J_@zM7@2iPRcJJy11820FuNONn3r3ygRW8V1WHY44cy000g_08sJiB0Ga0WtJgZm44cy0u 0ADYP5PdsOOT7w9W0G8mwSW00aYRGBWKW3q2a2C_bIuV3G01Q1iE1C00M63qVfF6vNC6P_v9 4G0G296mv@zKf@@TV8vINyr0uuYF5WmH5z7zQbLSHkODcPc1s1kmKemo3038Zv2iE7OWJuV3 G8W5i5Ddu37Wu4_v0BWa7UPjaw8m5W8l2iH1EDNHuyBwDIOo3G241k00Ngu30mH5_K0CKnN2 0F08LTGG23480GG4_80EDnF307ayCO34XV20Nr01HWGGN36qtW1D8G0qm@9m3m0424OIIW0m i2WM5V00Z@tRQ_Bmc@VFcpL1S60S41EfTELSuBz94@LUUCD4mWrT00GYlRWW0fy7zsvL8XFE W3Iyp14_0dWKt1WWWd0IU5u6S51dVDaHJ07O04LuJ1uG5V90_@tBNTX370BhJEt7mD1S_@UP fB8DMV014Y3HYFe0@V@am5tu1m360w9ndD1Z9yr06SMqVidHNzD_O0G4DN0ZW1ZUYUEY72sV 0CW3S2oy1Cozd3WVHBX42BWy6GMgK484y0Yye16buGuk_8m809F42J4mD0S5fGW1MV85yawA aX0iE3286yB1CLXeYKV03ifi6AsIWtawPTDkpA2@B0694up0Cc2m1WdMSOQPFmA30dnp66y2 tHQ9TyLqtu3N1VYz@F7Sn70WefG00Us18Gs3OJ4cy0O0Widt23BGD8c145KT5G03420ubAW0 nU63fle2WuI828vPJP2BF0A08oZGOM3GLoYY014B_00SW8FQZnoY4cy0CWQnN0030yS5G6b8 Go31meC1A2000mpR0PmY09V80A0T0P4Z09V80AuQ0PWZ09V80A8S0PqZ09V80AGS0Z5_81K9 0CWT0Z5_K1G4140IX4cy04GV6408x9kXm2y4y8GX@3X1YC8y10KWOq1W7PyPm90O4Wa7@HH8 yB1coI90Xu72O84VY03XmV4OG8_a4H512G7Z0U660Ur@FA0221m044l50m0u5_@r2V10kKN2 2Ld0jWemTeG0x920F1lA4G30x8W0bJ81Ytc040Om0nde7Wp1g1j3H44oJeFOsWA_00CIn74W UAw2dEZAuu2aKyn0mz2TyB4JC17431HpYl00FGr103SGT7UmVqpaN1I_S5CGQ024vH8iS5mm VqBbNH2HWL41_z9u1038me@edIl2Ky178WECW8WOKTF4m0uDq@E0UFT40IX_3zFyAKZt34Oa zmE2WZzk068Y1Wtk@ZEW068Yma7W0a2I60Ut_7GsJJEa5G04V2y8m07aXKup0m40mUXE_52M yT0ucNa@el3lo0CHLI0ZF7MuR2ub0G0IUb4my4y6WXUTEiuJ3mDNH@Hl9U53my4y4W1QTEiu J6mDNH@HFDU56my4y8WXLTEiup7mDNH@HlCUb7my4yAW1HTUiupAG4JH@HFHUD0nJ50U2_3m 0cd3MyLg9W2ymh81cdWd1Cyep1uNah000HP52CpWSA90GoZGNE5aZ01g0n2xNZ03y4y0WX04 vWu30WhHiHXeGY5Mu30uSj800FG1IMyP8LX2oEWWMECWp9QIG040OYB20mFa0b5VO0EG11S0 VZ70FO0qSQHJ22e0qN40Wtd09B_a0OWaF803mRy0uX2WcpCwXOF0HdL40WNd0TXZ0b3m1k9M due9n2My10ewM40W@61QvZr0W0dYDMux3eqDU0y01G3My10anM40W7Q0AB_G2IWA2u0v6F0U 81e5B_Ar4W2WTvY00yf3GPn7LW2KJ07a301G0wOXlL0P0A9fQ020xq510uB6W0qIly4aR016 8wgb80j00ufGW_6V7048g51GA00F82atS0C0Z0q20Wd11_HkkoH0y20mJX0zGkM@O5F40X0p DU024jiuJ980GA00l12KtG0EWLG1WM00Uf38GatWpY@X0_WNaqJIyP1mnH30I1o@cCPPUT6m 0s_5WG89_Y0A6B2o@_5zPCU5lk1SGIyv2KKtKH1fHG07B2P@_b_SC_Yh1e0w05o_z9u903Es 2G3C2AazxJmR06Si5W685K8xtdW71CuOB0DmBeGslF1l2OmnM0Me402O03Eg8a@jI220ay7m CWaNQbXSG0548A2OOTcuGCmriD1LHG01MtH64WH8G4OOa1mhz_DW81a9Owm0mZU@q1FP9d5W 3My50aHN42_D0npJ1P3GW@et4lE8_00u0a9ATae11ekVW8l1Wrmg1MLk2wBj0mYl0WTqYy7z sKQ11Au9uT03bxSOnd0WxeYGuNLOqVeFNNrzvm2V1Wrq5HWV38U8LmJWt06y7zDuLfF7iuB0 WfjeM08035y4u3W1@H@iSzupR1G1OKmJWN06y7zuoLUFtH8UBX8uN14F9Au9uD03@X_UTbid 3By50KoM41_DWu1J1F1U2OmVq@BNFzSHX80IvFw9lh0HU4CBvb28l1df3u4cy0S01FN1ETG9 i@y0KI2EP_p5G98u4uFV0bWWJQ@S2Ko1EHzpBG97uapFt0bOWJ8@SkO00WW23008WO000X56 008mn0002H600GWY1002ug58sJ311aGWHGC5hGLs0oUYLYmo3W2MbYF1F00OMr3uV01m10zi r3W@K2qmrRsC88T6j5_00imAgUHhIZc3HD9KyHhWuv0054FB2uVtxW@UYU0mN1npY0CW854F G0eKuJ1mC0_EqFGoNpY1j0GGDB4WY_DW809VA060LCC0yCql2Y741OW8Gn830l1zhMyv0mfl edeFOZjQWA5VJ0SA52E4V2yg80q7q68A2WSTGuqxJm30141WmrBWi7uuRA0wCc14HK8i6zMG Kb6ffGeAw2Yd51KWuv00zYES0w@xDSl0uNufL4m7W320Q1aJYa5WK46qFn_@f3mo302M833F FG80WHeIiG2V00sGuDWrPO4RAxJH_IWY0ARi6BbAg1enmw0e0sm34up0e8OT5G2faTZCC1z0 w7E_rco6WPO8U2mm7qdH_5MHf8R6Yd05mAPB13KM43M703m0qsb6010sWrn0BVGV6vtO4DHR 09WIXO0qLYl00k0TnmwAWbFw1u144l0f2SWgn_8n21_O0a1ik0Z44W2oU849Byy2kZOaHBO4 tF70@YJjeme2o7l0ZbX0KGbgW5S004SwD602GWHLme@lNW@Bck0UU7CYc4A0e508ueNMoGOu 1CPHG3OyR0H1KWSG91PV3Eo95W9R2O3cSIci1iE0W0Oo2tHW1dSa2mog_il95W54ayCO2Xb7 0301Q104SO4HmdW5G0D41V2M810A4ay88YXa71YH4y9OXGcFW0O16G031021ST5JWMI7U7Da yGeiouamo3W2AGyYG0JZd17GX82q84P4861WGC0y8plSCI0Y0YHC0_zjVkSG0HAGya003WlU xlFQY1FBX@0WpIy50mmX7juWGuJ0u84@20Cen9yuAGyEO0z1h0nRX2jgGW0WU84jFOo0U8y0 2GZfb_6UOWdimJJu1kS2LEn8t9o11HWo9O0l0UGKpToS84@60v0GZea0098Wl0028oZI0PiM W0G8UKS0GGo0ufx_VG@3n71YuZay1960@ist0IyawOO40EfXH2e8_A0c0b57Ye8yN0GAYF2W JHyb0Gp0f@ldC@d3ZeG4pWa1WVC_5ay8KdG1c5V00C2nZY4OGy1uWHn70W@X_I4@YCoJgZZK UYwOeYLd38oZI00P43XV10R6v8W8q973nVWIXAWXuB0GD4V40v7Go0uHt_4G4EIY78P0uVRV K4Y24P3ay@zypVWa781WWH4nek08068jYvURE60@NsV8vX0OYmeAIgx42O0yNPVWa7TZ9Cv1 O0QW62Yt14w1W0KnXma700yX_8A_dWt@om1mw5TmV41WNuSXH4004EY00Wu3R004UO3001Y8 008Ym600X5s00GCn600Y3i10G0I400aMI7_5H0Z08UES01YNZ0O7I4G42Yd85S9y50GNY@00 r0ujk_e8tuGIA690HC0UbhF6cD8vnW52JU0Cm1npW08G4gXa1WdXzx1W0eXa1W@Wz5ayC0YK vW0Y8SO15uVz3L7ZXKQB4GVzHpUG0F1U08mBAWnzJ0yBCe81E0C6HWu99WU18Wjw30KcEQpe N1MfTi5WeI1@HWNgr000wr600GQi100KVD00WTi10040R000ij75W7Y740q5eaQa3JA1WHYm 824F7OGWuXm128U6AW0n31248UK0GGmdWTWXC30Ccn70mC7mM0Cx0sA0R4mC1Op0C00fW02i sUJ0_0UmjGhYyMBFfctGKN0NWUU1HT7O1GgpWGMY3G0202Pcmy@zBo@24XCoHgph4VD0k7WF W7mIqg2F0K1dHN9y70uGw8mbHhgufG1AiE2Gv3zX8_uAUAUWZPZYyg4V50Ubmt0Wvaw08arp 3Jg70H6IT2u2gYd24WmwE80201Co5ZmqxSLYV356JW1c0Q24ICaJkpXIUhLHG10m5rh8e02f E30P8E0G8H0aP2p@tR4@7O4p870v5KWXa7804iy010u1cAvrNm10fIyT0u1HT0OXJgpWHqY3 04Y40Hcmy@zhm@02HCoHapX8200Y3Y00GIVW0K410XEL0L8f06T9i08adGlbo5r11UNV3S20 cu9u933F1F1Iu9m702qneqbXXuJ58F5S6122nF00I8_I0O30@4wx9u5X2cAdNom1c0GBvDIW 2YN71GW8i1430V1wp8x1lyg2GW8w043WN@vNWuT9048YB0n0uTV_Zfaf0HDZ40HU3Uzj0Xml TOH8_k302ntxGH8yX764YVy0XGynEKN2VvXGa210ul9G582XmNUGGGypBW5CYDWC0y3O1Qn1 LuWWu5m2B8_0IG2n707S8U1m03YF00K47lXZ0gKVSGXBVZ3JKPVuGYBz67Heo_u04N_6EUeI znX3kiXAHm91e66gqJmnWC1IUeKWma7W24GCB8oAn7006WOK8I14J2YSGy50WBX34c42Pk6y 28674P0YnW8D5SAXZfuGbuB00pY3549XmF00L9_30GcuGOSqCyf2G34P0YHW8LHc4Wo5nN0G 00IU2UpiGYmF0Ov8_10E6nN00H4u28JE02IWZ2C1H811k9maEX44ua0JF1F2Su8u4HcF1_0O 0Jm11CF8441t3my9uzFE11E7mqEX08y30SDWPGWZ1CT4SB8JcWZ2OoWG82E9WPGW31CvK811 k3oKWu70WD0J34oHWJGy50W32@00K1QA8y30G4i9NWR0C54S2GphWpAu55EM2ELYV0079EA5 W0LYl0WK8E88_10oeu0wuj4EU2U6aWMu09uC8_10ohWJAu50PY2kk080KS08y30ShYNGz1KW 10N9S0bH44@00kWuJ0010_1iaWu80u7mI9001Q6X1mf8_A0cXCYYuB0O8o8XO4A4Hn_jB010 33ZC0U1dVH41fGy4y10WWaFJ5383Sm2kuXhK52aYHFHTES13n7W2C4V40kXml0Wr1WHe4TCI ToPWuP006YF20q0ubD_wme@3X1n310C0URcF52H1H0ZH@xUmutJmZW20IUW4WICgavoJX08P 4Pcp0u9C_Ane@39r22KO_0bco1u0DXOK0q00GU2zh67E0xYue8mJ30lM_zDm@6009kOPk0dW Gyb7S44lv3uOc3ml1PGWln72Y68iK8U4G00Xaa11Am8GOa1mZhyDm9aDY0C18o3I06JEXJwZ 0nJ20qn85XF2WnCuE5S60l1n@Dm@t06LE0q20mhP01YyW00TCIOo300A8UZ4G1nJb3C0y0XF 8YDWwgAmJmJW5A8UwW0Ga7504aHQ55G1C0UnW@GoZ0s2YyqCHT14GOv1031P4FWJB6n8_00C 54F50m0uZ2_54FN2GB6fGyO0030lIuhcI6Z8J5Y10n6Zy6ywB15XF_GHHyt7CAYlwXKHuRF4 K4@x1YYuBVmK4_w305ndVmU9_e0G5KFWrHHyx7Wvr72ndTWe8_y72SrtgPGHy@70wt75n70X y4y_@cX8F2abC51_0EQC20c4y0188UIm01n3578Gyfa0Y6X0nxG1f4GGM84mHy10O9YF00JH u70C6QaO2W8XI08010Y2ZC0U@YVGHwiW@3X1hZW3DwGWY6PKpXq8M7EGgqX0giYSYOa2XV10 RDv8W844FF0eGuB0WA4V20g1mxJyfG8A82KCwVtJs_GO4382Go3a0056ZC7pcJOo3G0A0_Zz @@Xan71C0U5XFGot_W1o0DGOqk69WrH01wOKz364lG1UQ0u1ZlZvatWtRBG8y90M4YFxWxDu rd3JHaQ8XYuNFmL4Vs3YYm@Uue8_u385nd_Wf8yp7CA4@_6WkpfYD0048g5auN2O8Q5B4zG9 JV06mZ1n608Wet@T@u_34ZWGl@Vldw70W0Hl0uNyLB0npX2K7ULYF10_GTGXE4OT6OIE6n0H 8WH50lt_78o3I0CG4SQ@f044l6Ee0uLs@vm8249_02K0yVvVWalo8222m050@L_F5zOhiBnZ LaB2140k_04s310m2u5m342VH0HC6XXV5iA28o@kVQzBG01TWc1YNa04GDWme4bD982q1O30 UPx70WWlUXeM04l34W0Z0DUJ2FAm10hFWGIKsE18W0YqaH_@U_gF8obIy92myAU4U8VA20Hl WmeUH740zlxhyN0yBSgb0ZIhWWmA801nxX08GaC88G1mFD@nDM39F11jTW9oD5yzVAz1G0uw LDyzlAqFwAXl40Ztu@t3r7jAnV2WxRy_@1u5DA65Q01IQa@TFXw30KGNqhf73Mf1G7nAC0w0 iIuHtE01LWH0K@5aA0EmF@2I5070qTRHwuN43Av8P0ay0n0X9F0687ZKXH4Oa2WFO_7ZHKn8 SOK1mZN@9GyMe02Yt1180888UEW0onH5ZYYH4S22Y740K0yQr@WOaE6XWuD1050lJzF66fYH Woe20le_Nl01qn8WgNu0QwFGrBb0GCYASeI8TBPW1Wl1z308byG08gT8zHWH2Ob0gIeWQ4KW 91G0HA0U8vF0GH_e3K01b_B0_LWzWWA14Z01EQezOmA30Q0M1_H@lxfwN@VlsvZK0ZidSGa8 i0M_00G1mBo@DYzO0I606On@1YyvHcXi755Daz89eXOFC018vHcK09FKdIOo301jsGWXid6A DazgveXOF89P8xPnI09FyCJu2lC8Bt2Q6l0LAiy0G1X35sWOQ9m244f3Wi0IQma9AG0GD20b 40bCoU406modE01YwVZOFEWa1W1MwVZOFRWa1W1AwVZOFeWa1W1_vVZOFrWa1W1ovVZo381p yV0uS8xn0K0HUy2hWW34G0YG0udG@3BhHW30h0Fqc1l0GPCh0Hy10Kz078WM6hK7qWP5V0jH sZCW0kGW28n@6nUw0A303mm@pwSZi7Smy4u3WXI08GYu30eM4V00S1W@V@L0d0845Co2612q 00UcwlHi7IOI3m0oxlHidOOo0m0ixlHi7VOo0m0cxlcm70000Ab9wXi7D2z4u3mXU48WWu30 m3yS3afYm70eW0Q96CW1WY0ujw@2m8Zi72mi0Z0M__08mn_J0DX0D40@dn0K0EWPXO0Emk_V 0E11D40@an0K0QWPXO0Emh_R4xX266PFNY1Ov5000J_0200mN5zPwS6PF30w9u9G0F1_08e6 02Y7W09YF00QHy10450UAzdHsZI_17mH@DYzG1KX0EW6zDmc042CGJ16jWH00_LuF9d30ujc _XSE0_T8o3m08M_0Cmqu3H8GYyW26b72Oo70066V4120mRxS1mluKBWa7LLDaz0X8X9F05a7 11084KWsJsxVvMWH00Fdv@Vtxz@61F0ioyGB@pHGj00Y22H0mtm@20a24Y0mBX@582W2Km@3 41G12uV2Y0e0zxV1090Z80yvpV309402Kl@741G1Yt@Xw8u0F1lgaPOyX888eN1G14rw0i1I U89Wma7018mw0O2DoZHsJAc0MU1m07mN0OgqWW2L8Wmp3e140Ummm0MdR1GWAr3xZa7lp0Cv 3O0JXl80Y0uPE_4nUG2J0x30uXTVq3F4nvLW6CY06H0yU6@0W2FGBbf50Ac4jKC246H0y0HV 20lq@R8x1IG2BF0201WbYHj0GWMqd0mly@6oUUCamo3W1me5W3WX_40UW@7Go3W08MUW4H1W NOyDazmKUB1402mWJlfa4G18DV20lh@d4W1qBe20FiuR8xHfHW3I2m0@VFZ_d0uXv@3nUI2A T03WJlueM2WN1wN0Z8me41802w7GK05Wq@1XH40lzplG2HWHaFwsTE0@c0216oUMS40Zqq11 6oUIiqEm18vPft32GqGs3aW6g_Z5y8i2dum16o_Qe4Go3Oh6YzeaKw77qt71nVa01ga0KAiy rVK0368oyF8G1GQ09FOI9mwJWF04qbHN2V00d0QQ4xvA6IXlB9JS01o70X03QrGWWWt@Iu30 isD_0y00mxH0NZq4ef1o40Z0bHw6VA0x4mHNZM0S7Oain700S8_00G20F4_R1ZCYzK741C2u 4SBG1m@j_DoUe74mT0K00WdQuJay024W9@3000uX4_eW62W@UzlWHCoUyB3O16tlHb1iWTnd eo0ImTulDy10040Vtf1K06YIWq0I0hzRKQ0B8Ky9ADW4q5_08a241Cej0Z00URjV0Gn0eDaz rqpW1m30K4QqyoehCYu6fdptDU2ymVe@kNHmc3GpdW70BOK_67OGy1eb524WWu3001cy1000 WNEuBayW0E00FCuxWDpYHOW6jCQB610yAZViS_0Q2WHCYzS0LS04O2u0cy14GP048W910yOX VQ06m2y30c6ef0CQ1611QKm800lIyZWDr0U3PFQ6IOo3m0a8t1XF0mYcp10yiZlOE70@A8i2 0o0ivAnA0DZY714f0m40eaVq40MuSqGsZeXCYz49LQ040Ov3W06PFOu2Oo703q4id0@@o0YQ 76_40SEP4807U2y2m0Dch0oWXH68a1XF0WRGy50mQK7kWZRmnrSuYEEH7tq90u5Z@89FF73O o7m04Od_5T0qWCMiNqGqRo044C01m2iC1666PWG20yEvByh58oJyL6oUMG4GoZ53AYyMLLfC 74H31CeOvLLL08a5C2Eez4x@NE00Ffq74ygGW03nHXsV06mmwCHWDr0so22u61lQ48WLuF20 _@UC@VvE7WV1HjEHU0eWpo302UYU02dO21CmW0820Udvl102KD@FXU0cJ2WC6m4B420FnuF1 GIrX020Vou5WVJpW032R@klwyxxXWK78Gpun8yS0FFXNHKd0LSaw68bdKd6Z4W9VITPi2Ga7 70gnW0BfU2IfRyH0i70F8nN10Q4yA4F4Z7amd0W1azyA4Wi7mWi4rLGbuQG82220ayyPCWa7 @I9SCN6G0Gnd0W2Ay10IXYl0Wz9uzFCxo81nN10E8yB0GN0dLWhIuGDS22V20620_1uy2ET2 7tWRGyH0m3KGL1u@_HfB0@2_QDYz425Wa754a8izGGGV24e0unq_ZW7WN15GRazW6AWxVf0F klHi7zg0iy1e0pnZHspFe21FYXter9G000mI50FWsV0N92UZ1lpnZHspWm85lI580C610A3u I50l9u75Z4ZH@xUF_N2m2lU13FeYoqYEKy0GAGBQnnZ3gqieDoUe2bHidtgQbv05K0yoQVcT UBf3_YQLz8tc0XD0WC0yaQV10FNy34w30S01lH1O0mRj_1AW01WtU_3ayWxC@TFqztX510G4 XZ7n07e0Scm8T06Q692Zu271JbnuOMrZyR2eAy5TGoZcAOYy@Q6ci@Nw9iy0e0W9VB60OvLZ 20G2qD20Wy@z4AV10lTzR5yWMy100S_50W40DeL86zB0W00u300BaB0GvTH@4y_NcdGFoX18 Z40yF@lTG386b57o1i@TVLxhIy10mS7l0407@2W8eg86zB0YG0u3W00e2fZ_Vthq@Qe_8qN3 r3msw5wmNOer5mUQ80GspKP58u0Wa7oR14xHg03PFDG28xHSA36h211gGGkA401Xb709SWwT KFcO430N0GKC_00q_ld9vF241O5D5j@klRyX9_000io50XyKLA5KJ2100ULa@@tJh@@tzowF WidOW8iy000W8lGX5O0140Uvy@0UWYkp5_C0Xde70WD2W28o_TFuuBWD7aGp0TB0408xD001 4f_ltwK0AGFGB0GU1CzVVxm74410A_2Q@l7ru34x964nW80TRM01W7P@@4y0G0P0e0WaJW1m 6@HW80h8Meztz@YVL06auU14H0uDx@F1U02GC0Egp304zVFnm76410AF3Q@ltgu34x96aG1C GC8A0u@y@I1CGmdxlxFUVnW80IXNeZC0X818mZ@@4u1W1cYF006sp1Gy88WdWt@o0WH48G11 Mm0BWmC0Omv80_50ZCWmWx80yxGG3Xme5QB2Cb0ZMe59mo2C2WMG0RAEI2m0BWuJi@VvCfGG WM4_b0ff0e18U88000NAqG5Qq2V00kOt2KqzIRAqGGOP2cb0BAWD0QK4i0Cp0W5HB142j0Xs 0f9Im24QA16jGJG2f1QGuti0M0w0WG2GOQ06uE2ErIWH20Umb@ei1WLkGtWf6KZb0nJI1C0y HncMU00L45PDqjmKBBnYYH00U5iF0eOUe10y_fVE088UkV2y@7ZG9B0mpS_20UVbFOi10KkG tYa6LZb0n3H1C0ymm6IU00K03PDqjHIRh41A0ww3GY05WBz3B7W3I4e0o86PXbHW0W7Lv2Nj 8me6OK0mxoy73Rp6l@@X2G7ARYD_@zJ3GB0upK_ZkcHoDbIK90000Fau7acpEGd@20H4bCkV E001CoS_v04T21AwGOrA_E0a7CY0JI0Z005_1D0I10uDAW0O4FCI0J60uHBVYk61Yda2qGyG 0X6Yd3A4WD1G5z4Tlmt10o2e0h86q20UnaF0mZzy30yIbFmOJKi1Ry_@74yhPaHsu@tF8yBJ 9B0mBL_0oeeO40m3lz10AR5j0Wt7vFwQv2G0ZoF0P2GAq9QHW60gu8ex5_E0Hz1482_1XH@V Fa_70mxB@00bJ0T0Za50189VHjM0R20L26qZW6pHRAnA2R03jOXHW29Sm8nlPOam1376H0yO @V1a90f0de1rQZW6XyGKZDHk00UYbFOW9aq0GA25j0Wt1v70821y00lzuBWHesvWOa@ll2@3 0yMa@0CIpd38Z00yIcFCF@9mZ200S_8We@dB0uL7_WX60WFSv70yY7@N33e0zxF0WVE_1087 4l21AC0850ya3@0mqzdF6rC7C0iIpW65Z00yBGV0G1oG70u76V5V_0O3WLy3zPvrdWlL04GG yG000WN_v70KiDQiVEEgT0sGWHp8t2G30jW2e5TDHnHe63dU9OkQm80H31mJe@35DWmcOGR1 CCfGZ2itdc8e9Am4Tja0CW661Cq80Upzl8OBSq8bGW0jfmmW2DEmwMQZX6cmGqr0EOHr4G10 2D00VMvhCmYE8w4WOi0G5KWM_n_K9170rrKtQGAa5c60Zy4y0000DV4823ZmHlF1VO18G3ZG XH@VlL@Vra9A04Gd5EIbC1C2wEN0s0WAS3wdWFA04g0G1hfs2oDWHSzv5aFH18CV0WozGBWH 61OEVUu45u83XDS22qWHOo82C20eW6e185v1D0TJSWOmFKh9_Q88U8aGa2XWNR8SY2SpqzsD H123Q0iIJGB0uN1_00lQnF0ml1_2ZjHBleWk98ed02wcm0RWFETJKWWq70euJq20_3WVehPy r4Ga1Cf0Wl1uBWc20J19K6Gtv01imV00FZx7C1100UwzVehHyr2mcHAaZb646bYH4oe@TFC@ 3Cr00Ao4D0WFU@708y0yUXl3G09Z00y0hVV04u__10yjjF0GnRH30yQ_@0Cosd37Z00ymXlM F@fC4I8A02CU@00_is70WOGQ44uG1W40mhi@50JtV_0O3WL88qFL3n2X9G0snF0eOSq00UIz @mdd_81Qm83O48vs4W2O2400FA@Nd01e7Q3iV1t3FE00yWyFG03OnEd7AO@1800Xu9u@tC7d XG7JSWDAP05inG61n320E3OcFcI8xVt7L@D3GW@ll9z3YHmlNGO40mZU@XEAf2mWH08a@ltn @ZWO9SCGqxJX3a00_58oZtSPaL0q4YZ8K8m061cO1IU0A7Ga7Kmw0x0041Q40nC0cc02kZUg EW40ayi47G12G4DoPf009FDH2S0uE28oJoSP0O0WY58oZNSjPL0q005CyR00H0GoMn00WI8W MOrC4RQIeEWM1TW2Z_@Ukq@OO38vXfOZJCXb70241q6EU50mY428vHQO2JU02m0hF860PG1i EZ085ZWulJ0iUHly42WElmfN0_DK0288i005FW6GoJZw4MU0K0AGRSr8iQJIe9a6GoJApe8a ef8G0xFWnK1DGhcOI3uuLG0QI8C_rAe5Y1vuNRhsu4p0e90im5Zm26f3COK0Jw@x97@eWMA1 4OOr4cy08Wn5B2ejeGz3G0A010xF0O28J10Rle7H018bN8KxmeHGOv6Q0m2PWc0nZX0Wme08 v@tZO_1A0X44Gc00bKYc8T0HD05uM_1YyOEMze6GSr0Yyao6552H@g1O9kI0A090P2m_40u@ TFUy38vf9FM28G4e1SrMcQOA4Q_50W40840M8wAO109FXHQMGqj4myp18r120dmo30060Qja EuF20hiMq0IUGLcmo3W2M1YSn1HbL50c2Y08bq0DGo3824cy0GWHGiMu30m0IUG9s7wZnupC mk2Wrq0HUGihUx2Ws0e1WL62qmWcXHRQup0eY0HTXF1mGHPdaGnXDWa7Jd1ay85DX3zo08u0 u0IUGo7u0PZMqmd1Gf2Yw2V2Wn7wB8@dh8PXj2YdW4WaH@xUSudsuZ2GK8UO0W2Yz@x53@u0 Djn7BWa4Z4K84_BGa7JmgAg0hB83GyN1062hZH0_tzpllPGB3e1GASEwd0@@yWKy10mzYEuF 48optSLJOWWu8ZKp9mX09FGcJuM5A02e1I4A9aa01G8EXJJd0en0Q1NG0E0JOo3W0G0i8W6I S02mu0QYW6ro5eG4EeO04yaz@RkuEt80sBqX@GOW6Gz0GGr14WWfHpc8E209xSGKB1nJKWYW 60fu3q28I00FmzBWCVYz@FdOn700pPHO1QW8FWmrXW141DD94Go3qn4cy0C04_LK8Q0qc5V0 0ke8w3zTa@oLaEoUMu30u11KWrTmXK080z59Cv1O0Hazim70m10QVGV7zdphp064Z8A0O6G4 4m4AW0W40WNbz32Z40MGqR081@ppQX2GKB0W@k_R701SW80Wdl_HgiWm88wDi35e1Q0HUG33 a0ACv18WG38028A8PfK8ICDGa74vYCi0eb1Q88c@TVGx38v1goC2Ivj0aM4Y_b303Cb088dm D1aGRf6WbTXJjDO4OZ58oJ3TT9GWGG33ny@zcOVHW64Tu@xtn_09V816834H360ARW660tVV Aba524W0G7BG12qW0s74eH0C_@_Di@Jsx@vwaGF0Ta08034L16GARa06WoVVAIW442Q0HUSW hNr24Jlet301YMN0on81uKx0GRcO1ayiq2H12G4506EzQ@xz1_09Vx06G4q0YyeCNm04e4q2 1QIZFa0VQu30mQ1j4i6php1684HDA4Xn790Z1O8AxHWcHs3hm0YyqK7CM3Oo7G0eG4X9F05W 0u5p_0WYNY6ecFEW6eH1G0OV24FGadKnAJW0GX5WoD3q0GAg0QCCI0W70qYPMPWM0o93ma1Q 1Oz0PWKup28085p3z6j1KW149Ae9GyGm1aW6KW1kYGml0XcXH31@25O61CSqBAe95qeHCwVl n@FPd32Q21DQ4Z_thx@fj1Y52WX04O40M30ur__WKBR100Uq3nb0F1aymZEX30X0eDIkX1i0 uxYVXW6Iy04mS2Q0ublY6Go3J92700Lm2q09F2938oZPP0IUIf6GoZ6y4kJs3wYy08y4ye8X F0EGoZGp4cy0O0uHpOePGym0034F1Bu@xxX_OPa@lN7wFlQK1j4i@0WQIXGqlh0ciCwVtJW_ m6V001ygLS21Gvt0SI8e1WKuMq09F_eJuW2AmcnM2Z80S@Vlaw75q8a7g0iGG30fSle1I_4Q C00Ye1m2W400V_sF1m5mBp3QWaF603m1Q1W5uXkA3200@WmeUH7_F2WVR9zu380da14vP0ly 2E0209Fyi38o3ZU0IUIRIXWWW98p02KGe6POZ40ulWc0Uf4OF2Q0Oby1TCe19EW1OOZF0WxV txr@0u5u1D0mpuzt6_C0YhH37Ty@zOEVjXF0G09FK6_00Win70meb7I6V0020m3uznXH@VlT _@5e5mBoER00Ffxpwp18Ym3WeHKmeCD23UsWFx6Vu0wWC20K00y_3G2S11P@KCGDWZzB87W2 ODWwAU0U00mJD016Vm0ge0eqG0bH40_Is7Ah50U0OT4oGGC22Hy4y001MwG1nJ30O1U7e01W du_1YH52@X0axYv6o_@U9bV1Y730y@z59VZZN13iY1B6V81OB2hDn0bHPn8bC20mdFzX0U7y 0A0Z0eB8G174RF030u1r_0HUOcBE44G3UNXZF0hG12wRW00aYEW68vHoT2JU0EWEefYSn6V0 0mmKpJX08yG2GWa7fg9Cv1G109FXXXKWrL32e1ayeBk1xqfWYT8e3m3804ef1q2GD3AKpE5G a60Z0xF0G3n8@V@ym70urn_v0jGYDR02iiQUIe8mM0WCGEw50Py10KRWMo048WLK8X04QBk0 6VE0WtTz508gxSXb70AS5ZK8Uab0ECYYRy@zx2@dAI_H34vPQly_80Go3cy4MU0a0MCw@xvA _8bY51m78vRr11bYFGad1uo0m0VYFGjYSW@lFJu3ay09EW8F2m5dC2v3GWWn7WG09m10ZF0W qGd70EOzSH104690910yxel0qKG6XoO00b@GF9ls9618H@d0@@mOpp1YyagMZ14qK01Oxydo xe159V2030IOazG9C2Xr861Cv10WcH8mJq30v0WI1Gf0eS0Az@zQp@0Gn06T0e79tofM0iGq B0WFEu70A6m8v5zJm73W10IUI47Go3Kn4ESX3i0OK0GzldnzJ0Ox5zQG8m9w2WVXhM09FkrR KWIGpGmsB_G1C0qI7GRW8R5_G0Y2WS7ngXHGne1aA0Zu@x9M_60BuwD0J_@zAO@0iP0e8YVr WHWW6PCQ0fwnl01j1aw46v@xfN_iVEKCIzONA8M0400yhG@HGp6nsBqX3800VCq58v1fT2JU 0C0GoJQWJ506Zytzg@FKCoVtV_@0IU497GoZtv4Eds3e08C84B0J7Wzlx@IVW0MtE7WV1Gj5 2s@l7q@34vn5kkTCmsn_4u1W15PVOWn8xnMOF1U1S8E14CcHFXU05Jpu30mR6V40Spm71WrC _C0u@lNE_ZWOB0M0qxJvBiGG76OGZ_tzQnFWadnmG802uYF0WHG6DeG4yNW8FYt5z01U2U0a m7O30HM6_002Kn70W2bHjKO0Qn73W3YHCOT7mm7wZH_fLHoOaaCQ96DJs0IU4Bqe0aYF10ca maYHO0D@lda@l3q0IU8A7613H01WDMSZc9GKRqOhiK3jIwe1120w@WmemK3Y71kq205I3zEP 1iG4w408vvDPg3i0O18480pou308ozSDZF0Wy@xbn@005eZkr05WJjHI82CIW02YmC0RHh10 MSHPXfGM0x001Ezg9XOvN0KI0A9JXGpl0ea2WN050WMaFwk2G06e5YEy@U_yFAC2dU1ayys_ p1f0G0Q_70WWJlLJH0Wa7HwX8i0IUSpSWWyWBG3npX48uLQZF0WX3qGTy1W0S_50a00Mk3Q0 Ko@kNuyZsW0DzVtmd309WHuAU0U0GmF9094U10GbHUc00GfFGFWa_@UKnlsu30W47QKZ6Gwm Vtdn@2Fj1eP0fuAe1XHbf6KF296z@zIvV0P40Y06qoXHJO4@lNG@30A66Q3m99nAiqYGiWq1 @l@V_JGd4ebL0z0je4e1GBf7jUnd2W4oYcm8eWHWoI8Z0XH@VFv_F0eqTq4JDGO4a7Pyq2mA N7DGMiNuJ1CIn8XXXao24ZMXH0Kf@lFE_30AKEwdIWR100VGmFuprB_K0YG640fG3eHOT1m0 8Cw3znOy2neXCo@tRa@bzSRZM7GiLPHuvWOnLmGco22ZMn8@VlE_F0KuPq1n8LC286D4ZQ6V 00u@kN8@10AKsBm2KLZ89BCen@xnd@@VFJu70eaOq00U3XlXdx@x@0@3UUoFG0eO@tzNaFGC Q0mB4@PCP06u52z2mlv0GW@lNXQ0AGFyJ0Z_@U0mF3Y54Z0Hlwx_XtF4A303j4uZH_mJm3ew 02V4m5Hmd0EC4_OW504nGuJ0M027mmBSE2WVPmIP0D4G3ie3l70SU9WuJb2U0dWl1E0tHev0 00o0810q00Q0EF4GKCs2mt0uN4qE0Wp9x1nKEBF0602ro1Q0IUC90Hq3F0m0OPWMW4488un3 HS068GZ8sFDN2MUnm0hx3WGSYyKGW5J0BUuiy0W0d8F4208v9o0W06db702SG8P@K0IY0CS0 s@kFv@ZBm0EPF113KWdW7GIf1O5rfGS044R73X0i0Fq0CQaxJz5SGi14uzvJ0WCi4DG34f3@ 3W0iMaE20r802_@_pf@JmN5W1w5T40K6e5WW2f7O04grf22QeE05mJ_FL7m1GeN0yBCro8xH KO0Bl02O1eDazuYe2JYX04CmamBa6X@30O0L1XH4C20A10L20yWbVGO40mxGzB0imqR29588 Zi7ZZ1Cv3O00iEW0GOCK9U3nUk8YXmUCka4V40eLmJIyD0u2JU08mRm@360n8DYV4W2lGCWg AO40AHZut0uQ4VF0MZmV2mr8_K0u6nN502WAR4VC0SZmt1Wr8_G0u6nd4030ulZ@o18WJwRG S948G0_DCg2W7Anw@x1s@KWl0U00eaVqPBG0uhD0h7O028_GGmHo3JP80y@xGZq4eGOT0yFS 02DQ8sp5Ha4z100mpxWI4cy0G03S8OpVm84GrZeU15G08Z4WCfk1Om8gxX795GW4W2FXOm85 5GW50lHut0mn7G0Qu7aWDBG1m2Vs05m8xnpO72Ry158_@vX0i_Wb94TF00lYVW70WyW8mlH7 7mlX0m80L4010WWJ0W9sJs@a50b0JqX5Or@7YzS14y212Z8YH9qMWA10U5m@GidBWw0e0mdT _118XwtVeW0IGovFKG0Heyz7A8W4aR_354G4gU@X2281fc@G114XYtVeW0IGcvFKG0Hesz7A 8W4aO_354G4AT@X2281vb@G11K0HC2Yst988W2Kv_354G2IB@X24825k@G11aWioVeW0YGTx FKG098fy7A8W8Ks_354G2o9@X2282Lj@G11aWKoVeW0YGHxFKG098Zy7A8W8Kp_354G2I8@X 2282bi@G11aWynVeW0E84028YH0eI0WN5xFKG098Ty3WDsBBua5N2ztzitr30ByzIWJ2W9jR E1En76fkv2u4VOqvc3WJyXHcRE0_L0f0Nj8meK0z0f03e3GA40Day8OoAGAC8RuqB26v@xvb @ZW7nmhCeXXHYme@T@V_7L91WpVGiNle7A71gmN4Oq@tJL@B3QXX7GmxVt@c@11G0myVKu9E UA5DoTE26v@xti3W3YAY0mNRYWTWMTay8Q6MDAs22ymo6nUwC3heVGDH4mWRGhG32gpW08uA hm70O0YHu9434XHuJW_00UUWlAC2lGum80e4GCgx02uf_Wm80WNTuJ0G_@UgvFU2H6ZGm8WK 3G1YKVGO40m3DyJXH10Y@lt4_d0iWltXOFN3bV21mK8X8F03mPv9m0mJhEMp9o305m1wYGFW MLek10u6FC6nu3muwmQ29Vor40028cy1S0Ybd4aK2z0qgd0V4CmZnEIO466GnN20JOQ0O410 V07eeq6WS2FF0Du4W9yy0IW0SomZvqmCNOY1c00ROXDWO6IiX9s0ZPen04_u0ZX1R0aboSWd NuSKHq3WoSEjT3SK7ZLE01uODX8F0508v1m1aGF0CZOo3G18MU2SoJmp12ymO55c33Z82Qyv W4VS0J0hOVeX4_u0GQB40YQ5IQ4O48oJGms8_E0WEX@1m0XTmrA08le1yReF1y6AWd1mp0K0 W2X00Xe1uvG0wGk0yS80TuT0Uk0W6CF0FN0G3s7WdB0e1k4mpX0q012uvG0Qm91ySP0FK0WB wBWd31e1n5mp11qYq2uvG0QWK1yS80jud06ZQXec552OmZDW6Hl1i20mxU0f4_G0CEWF0F04 yi7GGbM0ZOWm0084YFS0OPnEQQg0yn23u0038jmN2W508C0_F60c0z0zPCU9bWJa7W9ArX0W 4pGmF40CQQ08ai1ZauJ0WR4V70i0W5YUDQQ104i2pydFYr2O508lW0Sqq0G8P2irFtef9WG2 044YFEW0ZmG_vI2V406Oh5Er4Y31WF00U4_8sOJ0_0U00m7Pv06846Wt704Ov04GUeIeSW40 pGu3480m80822n77W8MQ0O5X1zfd3WH8G8Z3cn6B4oDQQmzS9XF20BSr4pQ1WF1064hD574o Z99qOZ1hf7LQ002C1JCfTwv0Oan8sefPqp7LQKYF2060XaLO44V40iegPqq2pO3ZF029CY9M QeyyEX@10ZtuHr3S1jmK3Sfj47W0@00iWu31W3XQZ96byOI2zoq6DD08YOYHJm4JQzTkHqZ0 hS3qL7GGm14ekp7dQh4R5148ir60_10CnIRKf508m4iqSU8hPirGa73A41cEKf108G4C9xAe 01W@006Sq4mCCOT04nOZ9Em6DDYbsKEVqq8MQGvSmJJMS01y70uy18mef56n4BD6TkeIBWHC HOxvymM3uh58XE1QZm60M1OebeiWJDCF2AxEgq2GaM280kdN0G0O4W8tu0hppDQQ18ai2JeY XYpf5@G7EG082a7qdHpdL2XEu006HVcFEQC8aG8tOYnop7LQ002nI3JW9vv0uNqO48mxW0Qa H1KRcB8u@xNW@E9VV06u9w1aG3ZF03fNe70GAq8uS40@6603058X33e0ptlJX1a00aPum0QG 0mBeV30U4_RBI7_W88i4meEn78Gv0Zkm8OQq@kF_@5m8YAjIep8oLXz084c1sv2ZOy12WXIi m43XuZ3OcAC5CBjmN2mvay0e27Wt76CBWUGVEQ@JKtAEuiy0e06Y7O64DmA2Vc0JOIp9v1W4 98Fdb702q8yF022XFBWH0OrBwmBe@ldm@66530UV8m3qFG_D9GFHTku8fT220aWS28mJq3Wf M2C002SH5GG304a0m1fvH0WfJu8KBG56v1ZYAN3PF3H1I00UYUX5q0410uXO_1OaH0h504aY Hom80Wd8u33ZWhN8KBGaduvwQq0A6xxc716516Cg81cM6W11ZGeN79Fea1Ov5W000a02H6Zy lxL_V_VkHa70PgvY0Q0svE7WVDazCOAXbFE62qIwmh04WsGsJEc4MU0m0OAI0erBwmh0uEo2 UWXV3O40e231_J0u3O00iYyW6Iyf0WG3V0050be9yf0O8fE3GW3u1o302V50q8G@0L89RGSY JwY0q4m878_@vX9mn0r7m05i_0OefCihGHGQRYbxS9WHsL8c073YF06aWqkZh0cX9mvEk2Oc K0CW0CKlfBp8Ih10K1werxvA8sBC2sdF1ZaM3sV_GP5a0ueDXg2Mm0G3WHmm8mnBSP5CXuXc 0e19_K0uHqtGgZ16c0y1y00nN10REq0OaIWNpKX0qCaUKYFA0E0pmawCm0D94b@2WIO0y1K0 3b30juUqe_S0yB2rsEW2C0wXOFv1rm71GK800D2zQ0qqWU20l7OWNnpm3k7x08gKuZ5uhcQ0 0WtK300qiQH0OWXL3W80AGkg1G405a00411GW1J30hSDqmyegT_mf1WLa6qOU44wT0g1mAqF QcT_Gg1WLiNq8VU_1Cu0e7AYW440qmXNuE2ne10Mq7Q3a60MvUe50QG2V50c2z94rPW1I0F8 X7K0XIJ5Gtf6UebNaD4bWKCC1U1CY0af0n@FFML87wPe025M6aseOH9_10O16H0oiAX24V00 iG2x1fH1_30u0af3024mC29CAmt007WP2GcW0GmxJFWqqK8_6TGG3WHCGO13V2X1kd3WMSEQ qVE0nTqGR56u@xpo@E9Vq79GiXnFw3CGEG276G12wVdY_GXm0U0_rI0ZQm8MOK0Wdo_pH01S AaGv7T0CMRAG3ayWK0X9F0208w14SE9F0Yu2eviy080CCsJq30m26_060DM38o3G00IU000n oBW08cyW02He7Goz4yMW1DCM8W1Cm85_80C06P1nrMikT@wLV5m3X7CHqjaWQh7G@GWqKLsl elWyx2540uF1l0O00d4W8Co_kL2muZpG0m80BF0Am1YyGS99G0WndJnumSKGEWXF4oe4n6bS Z4cn1RCXDUO6Din86_zgb42GDMVEWadncE9G0E9F0au1e14y040d9F02u9w1KOOC6Xn7GHWn QU2U0548m3G1qmOF1F21w9mhW015G0H2yLd3ml6uD8KB16PkO50QHYc8W78F40qE0yHy64f1 pZ41QJYc9W78FSFqWeN1W6ae12u1o3v7jnLBKgjeG6OQwTEeg1JXYNsHa6nKBQKDkQ41j0Cp uYr4W1Y7woT_0e1YQpWQ4Oa8WN0FeXHCAQCe64mBW7A0qXY60IHAG708m6CDOq6gP2uXm3@4 D8K32m3o308Q8qB86v@xjr@YW60294X1jQ2NDW0F33OQnc4QJGF0@h1HFIQ07j19q4I3Kq66 NJ56GIR8SCIOv0OWuXUKl1080Ni94BOgLN0109ae164zQyq0LQ3A43a6CfDCNcACmbsGSOym msvJY6qF@VtFu@61D18YsWH3ZYDf@2it@ZGj9Y5Og5UW050YGY6OpUEnUJBXbwvvIu0OXIuS 9AmZ@xK65AGgXnFZ2CG3K276G1kxVdoeGXm0kGUrI4v1O04BF06WBqSay8m8Wa7orHAP1MU1 OWma7W2G1y3u1EY65mpW7s0Q1CYDmV2WL5_Z04IK7348WOXy80mYxYs9vB681oDC_53GWy0g G61tHeWUWya6H3WH8tvK0FOU80GBm8__SA0FmFWWef0z0zd1Wc0ZSzv6OagTE5q3et88502y LvGpWHQsv5CYbF@0ZayvjOeWZa73C14z0K8d8F0G0UQreSG2mWpo3000m81G2DvW7uF04u1V 10J0mxZ360yVK0Aq@0tJX_AeU78x6oAh4iJ2Jo1mi1Cn0qA02VJ07GuB4eANq29Vj06GZr41 z024C63_49Bm7eyfVFIUOD4maFW1C5_W0cC03S7z1KWWMSWzHa7ZW2Ia0nWF40E0Im0yVG0A 1gAW50o3wZnuX0QE9F0c08mZ00IA1dRba0WD4_2188mBS7b8G2X1KWPm7207W8O0_FGW4wZ0 wbW_00VjK6O8v1W0E9F0cWOo7W012G0mYHOu38092W0Wa703GiyCOafXFU6OQynY90W3C_D0 WeGi02U100Go3018cy682fndAMaGi02U20mGo3W08cy04W5MROp7uC4O54yBGm320G0q3iI5 0403060q1iI5040100AMW4GY9A8MWW7800Kd09W3BIGi01FW00eE1AW1X4Dynm6B4BGW7G0Q 3G1GOY2Y58w18S0r6G2OmY44BGq30u0gDW4WWDBa401038vR3010OY291G0mWx839F0rJK0D L3D691z0y74yBJsxSf09cY2Wml0J_04GCrYWVrKCY0j4WF00G0qSOf00H6hb0CoOCI0FGUOZ e34W0CP@vYYOv1m00J_02GcYXcO7oUiCcma7W14080HUsZBf42ijRA0j9520GZfZw5Tn0KXC 2kZI2013Kl4egCqoNWW618G0rGCv1GW818GPW14u500HAMtE7WVngO00aXi7BY9Cv1G0IZFR u0EQ5GzH0k12GcO9WwbOAH0FWUI0er9QiX3E1J4q3ed40QOZcHumRm41z0uD1WM7fn6Eu8CH GF0_JWeXLQ6X3l2J4q3e@48QTc6RuWpm41y0w11W6sfP4EyEi6K8W0Gt1rOZ3S8M4WNW780q UHjuuGMYDKtT500201RIZFsOhJgnjQ01_@m4Bqpl00syB14Wo81POGzYWli96cYv9rP07F1F 06Y9uB0Ca6Vsm0Go3W122710l10GOup63rBGW04POuJW9rxGG6380kQd6_COaXid5bHTy9uQ Gw7400Jg6_inZ1gF2nLmw2O200E0aG3q0WAAiDcY53e10z6G8PLFG@XUe@tzqzl0i9Td3ZHX EHW@llQ@FazjAOWfndDC0GzYGE94GqO1WK6msHZbWdl10XGl0044qB0@sj01HBGGN048os4c y0CGdD402Q9cy60YPntC0beiUo_@97qu3B32bGO_B049OhJ034Z88ah0hJG2430SwcXid5W9 gG1dG08aMKQ8ePmqDc8@FILGA1020Y9V9oGqz10mZYFpW08901lWx808YWcfzp7YziCcci7I 01NjX3G0WbFWaC8W1OQ6Yb7068RR0IU0KmeupCG8cy6K20811WpLkA6V22Ka0@30AGutt0V1 48MrY0z0@2vZ6461NlP283QCwVtJu@P2m0mVG_C1A8oP2CaziWCXb7048Yy0IU0FmkW5Ox1m 8F1U02Y4mB01i9ItC9GWVI0TJd68rYe7W00aJk1I389EYiqHaZaa2aGB1ecy4ux411SvJWdp 48kUK2V3WL1II9yF0Kwew9qZIyb0uL9Z892a4PfCe4VA0S2m7QU11680VePb1u3D_A0VGpU1 wKQC00_GZv1mCr0280_GZh0qK2O8Scj40a9n730_bzySFTltam72mD9_H0O3WHWu300V2EE4 NJYBGyX0u12@40c1pmWO4K8epz@kdk@RGW0@VlI_78v1W0DnU81A412I1XWY48G0dOZKZHC2 ZFDi3KpCRR0e4IndPmS0mBBNt2s@k@U@hHu05ChQ6UU1m5lnpW7YNq@Vlb_73n_4y_t72XV1 WB2a6A592Qhu0142n9FJ0n66VqOnmmd0BWYHx4RT10m43aA3dGBHmHanQaSiC1ZW08Ae42Oo JmB046mb189tE70@YdI004uHxGsZbn4gLT2CWso9WyqGUPA78nV00B1y4uX1XV20BGyoWSGY l00UGuV0m20lC571GRIy130G0l0UG0G3Fl_@_IyxauJBmwcUSgd9nF10ZXUoEFDbd5mBW764 _b1b1ndC0D8_63u1XlO0OGy3343YFm0XSHF9_e2i1X@NGr4W1y2e1XVN0RGyv203YljWOGuh 58cEw9XlJWPGypg8W3W5G32@h0sWuR5064VL1nWmdAG8SqJ2Va0pWuFLH07GAW64_H1i1n7A 0C8_U2Y1XlJW8sed4_21c1nlfY0E0J0D8yN2O3YlI0OGyb4432Va01eHF9yv1C3Y@H51S0Z0 QGuN4m64VY0mWuR8864_21Y7ZUIuR3O64@WA2u001qWm@7WD8__0W1nNFGC8yv14@HlVUTIy 13O32@TWA903e3G32@S0sWuZ3064Vt0nWmt6Gy7zivr9ndAmP1Zk0_Y08GDGD8yf183Y@C0U Gy93032@OWmWu33mqm8@HFMUTIyH2C22@NWguC288_k081nNB0B8yP102Y@AWGGyf2O@XUZU ra@98yJ1gY0C0A098yF1O2Yl90GGyL2422VI0pVqNZNdmF2Y@851S0H0IGu72m44VG0Gqtno x_3zcyg9vhAtD1y2u1ASdWuR3WXaTHP7BixFqhnhcOlgLt4mBW7eKT2YlA062r5DTiak@Gl3 loYvg2TKG71n@103vSYQk2SE_rY2ZAWHFOa@ldCzJRy_@72yxGsZ5p4cy0O06Wc7xEazP0OW Xa700GhP8MU00mWjnKyD3C002hndDCpGzYmF3ik3HG1q6YziC60KHucu9WsGbRa04Ke21ohV e5V000dV108dVEWZ50WWVlqBa0iF1yZ9xRcHCRFcDoKxp0453W0XHO8o3m0arCY9F038psC5 _c11cFN1e9yyQ886y1foYNXA1s3iE6W00r3nKsaDk5x6PO2y3GpXvXMoe0u7Gp20_00W269m OHHiJWl0w80wK0_2eZ40z4uBW648302qm4uBWsB0_1qkwZ_Vtd8@0n8yrR1u0@U1mljaEyBY 06vWHgm80e2GmRL07YziSMjy40dt0G01dXend9y0mA0MUE1OmP00H26_Gn2ToR8spoOa0U2y Wmo3W1_mlQyc1MN0JCD_WY5X0FWY1ZV76_Gn2SUx0h3m4c6Vem1GoZTe22y0BKB048dtCaGu yBOCw0h7m4X1G0B6QOu35Rk6VmmXEl98u1mS24lYPuOu36FEOT64nIe1yO916KWl0wA8Ui16 60@0qb2690u3G116hMYb2u7GpKoZ1WV0DB1ef0_1q11qP0u7G7j0GGA04e_ernR7iE1eWQup 4F0If9Iwf0KjMOu8gnC1z0wD1W6bh56EYSCJGF0_J0eHzQXXZe7BwB2C0qs896GJ0qm0mc0_ QU80bi56EYaCKnMEURuvDy0R8Zf8p1h70AU2U0C4nmd9UapR05A41uO8v1m01842WN04GCvD Gas680Fd9Cyfn2P2MlG7@21GA@WUoU50WqBqnlGo6@@jIOGk25e2erZ82il2md9styHOsUcT qfx3186A7W34C23HU06GkcHSQI4ejJndPWC4v1014BF0G0WGy4y1G1SU301CiC6eU4963aP2 q0mABJR0I1pHNhu@@78ZF20jUez@z0XV0G15@2WGU3U54mvEdLn008iJC00n3eqYqX@86OaY C20vv9W35vp1m8lx00GmJW0qL6P4dg0GQngmwA8W24@@y82y3GJ34F60GC6n0_00860V04Gi O9HkHWl0QE0w80_00u8g0810eoyYs1N07tnX9jrJOPeauc4VA0Cko8GyH0mUHlYuWpmX1z6O T5L0AcJxye5DA1k9nd10R6DKm8m_X0mtWb1yy0n0KxWe255eTFMJY@20MGyL0mJ2V50cWuJ0 Wd4V90iWmV0WD9_80O0n730F9yF0O54F30GGy50mJ2V30cWu30W38UC8We4I6ep3W0HOaWz1 yHT0880yDmoJYl50Emm0E8h0223W01Y@0X1S090UIuV0mO0c0XV00BpyYKSC83H5YPHtBwW@ e@T@5ycf419AH0LoR5692y400K470Xequ120QvX1nV9GCb76K81X@IGu_e1WBb3D321A610y gn@d0V0800uFW08eF1Y7OpNy1sBZ9XF30pWu@NE1fE680M5nnSI0_0amH6HXuD01AhjSZ70F C1qC84GO40mx2@10y7C04qVWu0A0UP8Wz4u41fk08uMXGmSA8U68miQRGK05O0@10y7m04qd Xe08m0Rb1Ds3KT4aw4WX1Z6W0X00yclV0Y4G12CL614GW0k90t4awO006Gpj21ZvqssDUE0_ 57_008GeM00VJxB0K00q8qB0W7Ax34y2004oylWCi9m@t@k@X0U1y01CAWeZmd0@V@Ps7aO3 q21G5t@kFdzDWHWK2010JOv10039EWalrd382np3e066_4OYXn7BMCC_8naXXFDcafl1LOJW @lN8x@@zqOVW23u040V00Wuv1K04RU0B01mZ1166VKPrmm7F3w3W0OeY5m_Rq90yEfYAgO00 2CK5LC0G1mfYA60e0D0mG9fT05MJ8q3KHQOCWoTk06K2nc7e9G0y2W1Yd7WHGiv1624FFG8f OyXX153VIi1JgF80A6VSOHnmd1Z00yZJ@06HnuJ0RA6VqOJljRN0@_TeGpE06h12w1o9EHF0 2AZn4zv3bBG10e0Lic8q38cO2z024K6puM08efj3C2z0H856Jld3G0i4ufZa7s5D8O1IU0G0 maFW2Giy6Wa1CIbeF00Q5V40H021089YHX0C8GJ0emFe1IUiRdma70383Q3b8r1U2U0mWucX Gy90m4Yl20cKuR6m84@50CXuJ1W94_90C2n710J8_E0O2Xl10Zqur20YOahyGGuN6mqpZd0F 0EGGXE4_b1kwZkF8zD_8GMG5FGCeBZCZH5YlvBlGuBVv0IUv9LKUG9FA0_10k2mN0W3WAkFw 2KllbXWQgbGi7juIwRuJTaYx9YXFRiG0niWHAIccCI8YfCP46CcXF0WGGn26_032b8JGWfOP 4ECbLcGWHXo4cOAL6X2JHc9OOKsC14c2cH8oKYPAU616JPd9yOKuCXCcIdHmn44PYQc2nVTb L8_KlCW8lwIHWu@dFE4l@bf0ux0OSbA0eYzHhWwvLPCKZU5QTH@D_mAqX8F05GXwznPAKFVH ZOo3G1U2U0OqJqpNtGmD84F2GWOuJ5B4vCYXFMie4m86_Cn2Yn7AiGC_8Z5YXFQiWOyv2B4Z FmOXPu30O26VY0Umu39OTGP1ZFg0FOuZ5eSmiWXFPWBOyH3WEScWndEW@uPSwDZ0F0snfpgH I307YndASIC_8Z3gXFOirU72C2U007nu3C6KGPkWc00n4qpdLS1Cb5cIWn5q_mAcGFmCn5Wv 2QC1U_OWBW9Oy1o2ksctKt2EzcwSm8NLMmu33J_WI1ZFgCeOuZ1mKHiWXFG7e5i7G900lqol 4nz@zOo@EXl0WeJy30CTYl2WgJuJ0uw4@10Sdu30m0Yye3Nf6480q4XSZ7700nKnLkS84V50 EXuB1W@tzEqVq6A4h11HRGW1Wjtsi80yMaFdF7WexA0BY10GmJ9002Z820GmfI004Gz10W09 e004mJBG5@TGTe5O41XbmuZaa56V4bS5CoCZmXH53VWII0K6WFdu55WT0qyAE4mb1Gp9KH_P NCy1AjO0eG0p0YL8FQdeqX0m2yS0yyXWw3G1qZ7mAIU2O0HK7W10GA8utde7m61KoZ4u4F6g 6E2y4yGWXde702n3Z2e40ZFGT3GWDdO55WT0sCWP4ma1Op9MH_PB3XOuN0CI061OyHKE03VW oA90A852yA_0OG3G7ju3O0uyB06H0LGnl0qkx1a6QWXFIvvvp50impBuEYLY108WfM04oWmw @x@p@08Ik3802ZU2z0m4ACA0b4C_H4OXend9viGi0IT60GmutGW52G68eoJgZB6wMq09F060 0YGiyCOaXXFGf8093GcJaIM04GBE283W2aVs30MOw5Cro0Z64M14o@kNd@1G80bn02e70cWW H1e4Xn7G94083Opc1W07gJW7OutI48WmuJaS46V0bL0D1CX0Y12fyawuYXjp8W010W897GWW n7eC280cJWIS340AE28EW2o8m0uNR4U20IyazzpE101FmzlxRxV1vnYaD0Q808pI8obb2D1X iv1E@VlO_N8F0fimIe4osOSmDP1X5e7zJW@VUK8_00u@11_zY2ymltW5800W0XQVYU04q@kt n@108FXUAZIle31W_@U7_B0_5dQ108@xUV_7Gq3feIKsC080V@30I0IUdNJ00v@x9p@1W60X 780mAXO_tY38m4g3b9aFQuqB0_5XQ32W0YyFmc7G0YfX08Kh40v@xfn@3m88e70WXXV90aid 807@24u5000BB2w5YQHWH40a@lN2@J1u5u10HFyYBHPDGqXWUWb344406e0U4ym0YE4w1QSB WWCO01WqRG15ucV1ml2WY2m68op@SL9L0kWxeKi90GoZ464MU0m03M7W9eHU0HUy6W498Sqa 4OT110iuB0Wd1VY033sF0u1x_p3UuE20@2Vi64O0Ybd0300Hc6V83rmm7PGC9_aG2Wa7yo9C v1G01FVG8W2uC9_aG0Wa7I40iv3o2M1tamdAvoUX07FVGOGGy90mJ2VgaepT24yy112eXpau J8nEIUK0bncFe3SHSJ2V2b8WF24yy1n2hYpauJBvW0VC0sncFe04PSJ2VQbpHo3kWEUU1Tnr YRIyHkS0J_02mnp7a3kGkE08G0k41yP067FVGuGGyb0m_1Q1SXLG30J4flq3804uB0W5MU0C 0lYFW7u1SAYhmW6lnBW761w0Q80buJ2G64V10CWuIHk40Aj0Q1GH2G30G0I__C8W01W9u26V 835yu5kZ8mw2H0Wa7AX8HC058ACY4_40SB@48TeFtv2iUE05m4920noB03iC3oad4WFW7ySq KcBG3YEQ1ikG108v1184BF10G11416Y4V40CZmB0000y10WYFV0hFq00IUK8o61WOv5W0QYX 9oR2m7m3uCQHICe2T6j0j3K0GCHYs1GWU22l0OW1m703eyy1i_G2a301r0GW92GJPOXUC4_0 o1W06Ktv0uNW8FI24s014OT0CX6vv8vf3K0Bl00OGSzawaWZ@joBG38vn302BF00u8oJqK0O T610moBW1q4N0XeGhtFX1ayWdlFaZmo306u0_20YZa72J1m_2WVW9V030Jk0Yy1E00sd1nZi yGOW1jV00x8v9rK0Bl0608OCJ_a0aaTHmh3yHm46mTKm080WrPq0QX8WaF0S8m_28UW9F4CW rz3089e10MFA3Wj2Wx84Kx@tBr@HYyV450M7G2050AM_r5Hex3WHm628qRE04Op@VYyLDbdj @VpDmwzPGGA04ey@DYydn60M7O0OiyCZD6jF0ZGuB4swZ5WGhdSmD0EjUI0uEA0m0ii4054z B0WaWH3a8Q43k011KFm4RAy9200W18e70FXHL05a6b1o7@UJre0vvB0_zzv11Wmv80_5Wp31 4Xx80yBSE2WVrIwmxWZa7hNL8O1MU1SWRCwIqz0062z70enN4q9RPYj2W73C4iv3G3D4F4I0 8v1J8QYD6MN20mDsCMU84G2MNn3qDRG1V8O52eHiv9W519@pcGuv586LWU0_ApT202ymH8Wb NeJbWrHq0OyxJKd96efGN1V8OaLu31_s1Q0PF76mOvXm0S0DYaNGvGCxfA9CL4EW_8x1q00J __c0GoJ910IUCQ0Ga7o20ay4Y0Wa7Y004vnC0pk@zoNOv1W02JU0CmixhFz5MU0Kmis7VyZx WWe68mixplx5MU04Wnm70GLC_00GYn70GU0mM0CJ0M1fyGW3Wx8EPFBWpOv5003qu61Ysup1 az0f0Zb725e2q0IU04Z8W@FXwwW0AAKkoMsw1mF7GwWa7BcPCvHm0pW60MPsevwvogUW_ngI 74xP5C6BF2D2K0KZUKd33j6m85O40fO7e10U79FUfAO350y_d1W9V04WAyP1KHvXtW@F0Lew 00W00V058WGKaGbajoYToWr9G80gE6Ae0m@F3H1G055gGg318k8x9WV00BWO0i6W5A1WWS08 85064GCA66G1E7ROmBS7v9u@7CwVU0rAaUC1Qq8dBjs0240j66V65I0ycqB11181048WW0u0 y0ANG0U00v28G0F8M0q68G711y10bAW01y88WF0eG148W711qX0490qEC_WCa0w1eWW5aW0Y 4GG0TW0H288WEWW8144G7WGa022e3W8I011q1W49WW0w0WY4GG0Tu9w1CuX2A20X09c88WF2 WmW01s88WF2WmW01s88WF2WmW01s88WF0eC148W711yHn2E48m411y10b8W01y88W648y088 1070@E8u1O8mKxJKF82yaw3f0ALN1FWWVXKT2ym7_bAr103LHT1OmVgJ6k_JTbn50WNS0zaw KXAgNNLLXhVRJ8CqDB82Gr9W01Iz16WWg3006KT140WX0S0RQ1H@2JlY0U0yqJgBWOU2z0o1 cKF2n80q0IemiUG1O2u1mJFfk1cX9gFnC40Qf8qOhRe1eaw5y00W@K0IQy2WWg5F8EeXj5W_ EmFHql0o3862AU04m0wp1v1463fl2cFB1v0uADUGKW3n3472WA3eF7u75@o4y4WXXeV1p3OC YowZ7d0W705TGrjwH0kZ70Cutw000tiU018sw1q7RCjOh70VmmqI2XleEC0u9rv1344l08u9 gJaKaeU0z0WmJJ0vLy0y44_zBg353WAU00GGhZWe2Yw540OwzBgp430AeWiU0182w1q7a6l0 88TH79y0u12yR0610GYb_1EF4_54pCQyMOWP5F82W1jPWC8qD1Yd2C8SyOGW0eF3mB4z5GyC 0E1Yd22Wzl4EUGmG0wJWu1X_CmFk@D8gpG0W48ofXe@AWr9GKfC4OwzDgJ01_W7EeD3qm1k9 GyKG0YZ7420Y_80_0el0p38r700XeF2cl8gFG0WfNY5F34q3W140_0eF1pt301In8OqR8wZ0 uJXHmqBAX70FC8z0S23yRWq3m820D1q3dE@FgJ6Nmut@eUPS95efCyX4K0qKHT0O01@c1ZWm 8mqRaKVW7unl08400f_02G5N58QW0GI1XYV32U044CwbYw181yut0g7WH0ZU30U0KKHWt@W4 4zm9WdW7000ZU@JTanb6H2KGo04WZVNWH2O4eKF0qOmlaIz1KJagRW722z042Ow50@29y1AG 0021E71JjUYU0H61nJ62U2y0KWdW7010rv11O18W705Xql0Ied0F01mdp1ml21WdKNS1yawY 9Wdek0mvZVb0y@Da9X@FF58y0BAuSaam3W7emlJ2l@U2k41A0Oq50u1e8X0F022ap1mlGHz0 402@2ND040U0AW2W3L80982u1GH2KTN56KF02_Iz8nrFqZRNV2y38WlKdRCWnl6GclY0u02i Et4Guu1o00G@1uFZ13CW@0HT70ez12G1H1pS0_5Wm30W40S0yRWW7WW840VutlKNG389r7u1 @fk8OxFrD2Rg1wdKd4Y9jrdOC1@hqm88WW4G118S@rM2bXLGyNmT44W7Wd04z000GWtV0XXV 1IeQD8GGq3W021U@546_D9Xg4W0@0jeYF014a_3WV8M730Ciu1P01e@0Y70u1mG2ewa42Oh3 40WjU0ym4c6su1uV6OQWG8D128Gy1G0@LHKI7hu1u90jkmW2XV12y100WKt000dZI200jE00 02w1m3YA_04GxH3Bz1aVi6F2OGsrnW00GV6Wdg@2Wr56AI9466YtV1DGOO8uEgR1248z0803 _5Wq3002G61iJjE@9r5q0@HTHOhS22C2RX0Q9Lt0FG0eb4U0y02_51Z0tHGIz0U07@20GWx8 I0@VUYWe140euNWW7001dZa8U087F_5Ww100mv80W703D4uz7e4480S7z7r5HCMyB2CwFrDo O1m8X4W1@_5r3QaA180Gq380Wx8F1F06W0m1mlG0U06AB22ybw0W14_5S7D4ujS81OqJW700 m1uGbzm1P1G0507WC8IG4m3WX4eww7CmNg7064uN4QK0C20GC4ysQ84_ren3ef6jU0C0lqdH vXWEZQTXd24R70z5WVZH40qN0_9SyWG0UZ70F12z5GU3jk000XVxKW0mTa0Y741Q2WWW080K gpKB444402KdRuQPg0CmXwWMAFyB7gBwfaawCyW9Ld1Fy6qqW80fU0C081m8u024Y7Gx9u1m O3fEeWO8g7L40T@0433m30WYLz0y0V_D904awcEkj00GgB004Jy@9W_Lf3OFRyfEm0uE2Im3 m3O0U0m42@A91OYwG12WKFAWydE4_Nf5@@308r56KmTKl244Y012Gdkmj4nBZ7usl00V534G uu1W011Gc54KO01L7GWlKF600Ky00WfeEJ3qO02fEG00W70C9ml0208GF0F80To7q0fE60OI m3m320U0ma0@A90Y8602iJ_GdU21UyS6wEu0OyxaKdX7e0qm0U0O26@63u1W9O7DWKF00w7m Wu28m5@29u1u98OKaW7W749y0u9AWEE024Gq2HW7YEF02CGqBH0C_526XGS0908uzlBY3g0m 0010SHBSXqWMKhFW0LBGWa4u9g348k1wd0FWJP8rZG43fE8cW1m30GMK8SyxM0GeuxZ0FHF0 OOH2HolsI3WeE30OsrZo3ayhHNFA30awu2WPjUaFq101YS0WeEd0OsrZk3W24z00HTk1m61W XV@ITSm1uYkVLyZzGvr55gc16QPWWI68mVo8S73LucpbCNXNKvvCKSm1G8QX8mVqhlNdawCy W@e7ElYWHixy9fE3FWWeNY0@GFcU516vsvnBe0bZ66m3WG_ZUkyQCm3WX_3zyyglE70@2NjE oUWOqHs3eY0cy1OGCk4mkDi5460D08fAuJ2C2W6CTaf29ViFYz0LaZid861iy2e0W9V06mkD S0yajVK0I0kU1YySEW0CIuw690Q50FDn5eG0M00m30SR9Tm@K0YV12O1B32M3CoBO3WHWW4C A4B_D3ZC4y1800I1CH33Z00UYmFjgd@@uYqFHTgT0Go3fA4MU0KG1MtP1CDQJI80Wd12g5q6 8U8KGsG36Z82y3W1DHpO4n5qK4C41V088Qmm5O00U2u7A6DG2h5W4uF01Z@Gn0CmPePm80KY P0hTd@bweo52yxJgZQ7UYwE30WW7I02ayP3O0KmOOeXfGC8w60E0g0GvVJWRZ6C5w0Gd5Q21 _14W2Ru1LcNtE4VPk48070YyGUHWu4uWuHG0BYcC521@g7QC1QjWc8mR068swC8W7K10pJPW 0Gba1MYW1Gvp4WyMF0_3GmNMWUITknmJmB05q3Q7iEc1u9gpA3KGV6mFsW1QyH0WCfE14GFW DC_G0GaXF3mOGmU2y1mWdKtL3mW_6WVAL40oJG0be@X2u2y3mXdK7JCuWu9mXI080_GVWrTE 1oR4oC2Ryn0COge3Y6QX30L0KUu5usG3pY00yY9GiG38mF004O3FeYywk3ZyH6J3V606Hm70 7g2V8y4CCINe84y1GWXn71WpCyH084ZF30_HmyCOw1iS1J_W10urQVKTklYdW7uvlFHTAzW3 nZJR25uFxBph_6FAUWJ@wGysoXdA1e0SzglYdg7Y2W0KuZ3YtD7Q1m0HzglgNr@Q1W0KxZ3Y @E7Q1m06zAGadgfuPHLsA01Sw9wn7SE8U_SmJmx77mytY08GDdFWrPGWk780C6D5q62U1CmK 030uHn_Euyhn720YDy906Z0@0IWurbW0Cf8A@DiK2yWAOxtXWlTM200yX2GWi70BKDyHW42B F0MORy10CGOcDoe5U2O0q3eU@6p7pC2wzRCZ0@7683Z0ZH1OI0Wt6x7WDXDU@@ZWC20uHFW8 Oz42GW210vP7GRZF10HJC4LHB3V2010mNa0h6V8G5Ga7I8I7aW6u902@2CyHWK30jK8AADiC _402DWt1503ZkuN57F2Au9w1OLgYe2g7WLD5Yse0RqGxq85Z00ycJVOZt@@00uP9GAlE028f C44y18Wjn71W04x1O07ZF20LOv1m0g23SBgS02eC_40YBWMkn@W70IUV3OgYdX0KG9X0_320 2h700U8552MH03RyH0000_00GGg300G6V4000adL01jH0nU06msupIJ14O055osu338GyNQB 6Gi7W1A1m08_h66JGmn56Q2jiH3C6PMh65GHmC2y1CWe1RCW10y0JVjOE2hZW142y18Gl640 6ZG6_4044Y715e5Os5C00FKwJ9pVYwS922KXAPJXA0G_41uMou9r562eIKC680RyH000La1Y _DW38Q0i820jGeH4u7W0KMaxd6Qup0m66V60CcWHFq66OCZF4WHHc@H6Wn8Y0V04uPmu2O34 F4AGtIAAmZWfN25703zbWvA4l0KG3mFm3_2w14F288Hp7Gy88WfHJJ2XmlS8U1umFqp6NVNv TOaCmGRe1ZHg2V4y3JePIm82y1G0j1Z9W10ykF@uL_JgZJ9m9gW2ewvugeVeN4lUTc4604HW t02G9Xeyt898W4RyGb49u7wvphmO40A10mVT_YkS44F21q51180ULuV0Rc701q2jaS_JmB05 k6_4089XWG6fW_4GUaQye0DUELKX4izawSG6tafS024tv1O4eDYouJ0OC_SAPa7WVW7CXHE8 _@znCGF5yH85QAKzWUFqIzW0SMqFitHNnRy0uXVedYko1r7u1d0jrCo1p9RzgwlAmsJgpDPk JcG18GIdZW20e10WoVetMNh8W0BHqGWFW1WC_4060EN0X0WIgsS09FLWIGXqGsFXU_mZVY4Z pt3DZeE36OFmiyvFHTcOW2nJ05U_SFfEd4YFP25W0XSE0_T0L03j5m86CI9P74r1O0J0@0Ue 2eX2UK2V006O5vXe3G70CY1078y4mCHsK91q1iYGHqe3Zmn00gGle10aAA901ej0quK844D1 qX0OGGC3G5xnkJ020WASBQtF7ph300O@ya18eVK2i0sw8M06H4uF0W10V30S0cPIXWVqzsqP 14436Oq06P0mf0_1mX1mF0SC0y6mWCO4f69WP20D0uYvZc3mF016p84yRmhJ06G3qb94YZd0 AmmwAuWPOqJgJP5u2_50cdKdO8Kb6G0yhWF1Fn4Z8W_AGlaKd04mCK8O6kWn0jm4zHG_b6F2 AW1hFW1QdR0CY0WBUk27L1CZCo8I2b@quzyfWFGC98y12JJXFUOA8up3Jc2VSmKGu37cc2_q maWmd6CD5_WXfWWFCCPAyP1J1XFMOQAuZ2J22VKmqKuZ4c22_amafm74C54_0XffWF7C98yv 0JJXFCOA8uZ1Jc2VAmKGuZ2cc2_GmaWm72CD5_OWfWWF3CPAyH0J1XF4OQAuJ0J22V2m476f 1Z0oC053UZ@7FmQy0Y1RnT86P5Zeo6F0kem72SD4_WWheWF3SP8yP0NHXF4uQ8uZ0NY2V2mr GuZ0kU0BDO4EDA0n3H068U8C0fn322A7tClE1200ZC0uO7BcW@00XWPyI63aY1Md144Qy880 wnzVd7o01IMMOGx1OJaO1m81JL534O@eX1lmT40MN0CCWH20y1IOm04eXH2O60mozHx9u3mC 2lE68O0x7my_0SXWFGyG8yv1F2XFSuH8uJ3F42VOmZGuZ5U42_em3Xmd4y84_0X7XWF7yG8y n0F2XFAuH8u31F42V6mZGu31U42_4mZAC28oy3B8DUWGGsSJ5ZAswCGW30Nea0Y04oy0M8DU GGGy91OW220yO08056H0P6ebC78mzS70m90V1i1PAQ@f1wv0aSR190GW7e58opv0bdG08gb3 e98i89sHbs4v24Z80y6lFGCg0iIWc6ne0XM0KA0uzI@20RQk4W0OXpH0yB7e52rIWH64MC4x WfPXS90ylkFGCo0iMWcT1WWZwVWk0Am0m2dZmfM69F_DpG02Am88O406P4mm@zveVOZt@@00 enfNZW60MPVej2OueN6eDZ020Vj2JU0603Uq9OBm8UW6AsUaN9YcxKG31IbXVHgH48_@vnJq B0@AeIjYF40@9uzlFD3VC0M0LsAyb0SDZF30UZB10yrs7J1GORA4R0R20Hq0ST0hUH7U090i Wxe5DoCWP_pNq8F1l@XP6W9@v0uN4GByrY2Fu4i6Oa6Cw4RBoh2HpTg6O50gFiL3q0EWjNe3 FG20Mug68130sJW@VO8@vEaRG1WfME1x7i6S01Ame0aALuZWLU2y@p3CGx9qBmSQ5V80p86f WA3Gbl1F0AgLuB1mCeo1Kv6K20uRY_1iPl0806W68WX2m0jBm88g5dmw1M38L5CvJeN0_w4W 01CvJW@@PqA_I0cHCo6K_6u1W8jYF40s0AD0b00ULqlH0501G20MuEgr22aHia0y1mpqn60O W0U3yG_YU0qCQy1G6HKt03C1u1y784DKmdWVA1W1s3z0mRZO11_1u70Mf133C0U0O5RWMc2X Fe30c418WzHF0q2IT1KoeYF0PKaw5e8HKt0281u1y7R4TXKVW1o4W130T40N2u1uFEqC02ef GrDW0aGz16Wen70Uc0U0_3BKN01qEq30lDoL1W31y3u7J4Rc4I@eDyv00aWF70@28r3G04Qa 4WVW7yKqH0_1UWCHt4y9e9H0F1U8AyHmEB0wHZN0oefXa0U0_31_b9yHmEH1V2sX5H3WVZ2V 4iqev0a0IZF0oiGq11G0H7IYi0A8A02m4_4O9rXs86n0y3O7J0@@Uu9rDp8uBwkm71B1dZY0 U1yW1WE2y5mAC0@0M10gWGWU5GW7_5qnWF1MH2m@@3iuNMWl0hWHy108IGl@UQMH3tHT1eWy Z6E71ml01_1404mR000My00Gu040Wu903FfEcPuDm3W0uuNHeF3oRYXU2y1m0cKd1imawOWf HjE32KfG1KdP9AAm0403zWU2uz@3Vut0Wn4q@dd206JG@VU0ZV50Cmv80_5CqE1Z0G531TGK 701AIW0b4z0MX0ZqWHz8R1GJ2ef8Xo9Q4i3Dr9IWO2HT28W4W7mVq0qi0SHGJAe9gu306AA4 8KN00SIq4O7HW64m3eV_8Q4G31gPWLuEsWmeKCoynI0y2O7HYF00ciYyGqBAM2ZL0x00H40S Z5BNYDWTG86D2Z0a1PuL9y30OaL4zWcvrH0000S009B22w3W0WVE9mhIy10mCRT200zd7KZE 7WYV1m81CY1KXI@2m860_0C0Cq2WLK1q4Oa5GRKn70FOHz1m07m3mVA8E724p0gW8y9mEnZj HCINns0Uume0e31uBWjgIi2C3zYD2u7mNb0GW1mF0S5mC0ebw5jAn2WHoWHXJLSBAO0Z4tvm Lh1CY165Mi0e400U5613Z2XH@VlxyN06D47005x5DA61kUx5wm1a@llD_2mlniHW2XLI6nWH 60I8Xs5e10K00y12edW709i0QQo80q2LGpKqgbGmQ4V_536vYHGr8UCDe922wXqR8yBCCo6G BMQ29D1ikGBOBD6Gy1mW5MVRxnAHUIzrimu5HBZunlZR4jC22q3uRk1w8Oq0OAW9@tzyZl0s 40ei3qqmeGaM0JI08@tztlFHJC0RsD_G0OHGFaYH8u1a0Y6Oq04OurNW0Cik10GKWHC_W0OG 06nuZ2O5YH9P42W73zBAQ61DBjXfWHRyH083HaH0hAReC_G0g_5xru308x3Q8SZHFV0O6maA 0_5eV0RYGZ00AM7j1mC4fH0yUA@1e93ZaM21c0C0CYe9sn4142UW8Wou31O4LW20EKCIPuJ0 KXXNW7X2CwVUBI7_dKCiEm8DDI56b0890U@l@iIS2u1u300jDWq0GFZq0O510FZ0iXuHN2po 8cC20Y0191O4O8v5aK39rWajGrCc4AoqWulV0M8v1c4WHqC_S3IScKEJk2ycDUb806_D0H0m ACuN04X0m7014OMkOa5mFWVeX7Out04H9hmGC0700LcNqtj14_j66z0qE3CSiPEQAWPA1OId X3M97IYpaoZR4GJ3Og6Z0M6D0fPm30h00ykvG04oJm301Q6_e0gruW1H_4y_7d6X@3XGHZK3 Uh0YdW74Cq574DUGC0Mh00vpWWVZk9WF52SX0kGWQQ0eW20G0F2W41kG08Bmp4u21yk0sN0G 4P1mG108u91Ga0N8G204K0W12MWB8m52mz1ke4W4Cv0NGWB4Gh3SHV0Juu1ms08AG104OX1m k8W2ym0NGWC6GA3uZ1OS0N8GM6u21Gu0NGWB4Ww0a0Cpo8tew@kVK@10Ay9QcCIVdZXC3850 DlK8C2D5m8Z1CSsa8Wb3D3O6uCP0avWLaZa0OUBB42q4GD054301s0p0Y1e0W06Ec4WvrNX8 W68m40Y0WHo8J60Vom70K04y3eGCoK4Rg4F43CPn1EsC4maJc1O6ScaYOSGd05u52H0DQe9D mKCWvZgP3e09muWU0AmJ1IWuHO0Q0F1U00uPLWC8p5qaZQ00N0QUG584Sv8xHy5OxNWbN070 avzUGGG2maFW3qGyS3Xkn79WE0mXm7Gu2GcNw1n5OuGpSoK0oy1mW867eIEYSWuXm0uGotx6 K6b5Z4o8@V@9yV9Z00Ad3QlCoi9s0Cd0U0z06_z9uzFCD0o6mKHmsBqX@HQ0F8Uu8xX080J_ 0005IU1810U3Be2oSvEC2y7OW1Y722e09dET0ScLK@W0YcW018Y6KNW704yyYG169WN2q8_F 82SZ70FWgVL1U0g0kY7W7Wnl2bHH100Um4O0h00uf1X2i20W@24QHcQ6VM0O4Hw9rj62Ffkh P09gV4UC0_30mP6n8ZW1CMfk3480u7G3UFQD0V0FeRyP1WH49WWVR4QncsI37Cf3RgPyf2W3 L4S@T86jmaw4@74p4nQXC3GCB49DWN02CXa40w5if0pOX9r0y4209W47HpGcLAOWPw6Y85M0 8T@4uX0XA08W0W31VWm5OqDnmd00ZUm0d064HFK02Y714WpaUlx4YZe0CPq@ktm_RJZ0VzA4 y12NOEtc1CSsq9Wf5EoPJu8vcou0Lapa0O_x742qq9yV86p5R0nHKWXKT0o82OjIu0W641qC ncMBM1A2uWW0GW0oSGG05Gd1H0DIW90H10mBhWg0J7ifnQ00NSHtGuYJV2P@_4yW0X1mz6Wd MWAOfV0WoVqhWNX8jWCukW8W6De7W@14upGGEaP4qCCmwfG1IXn1M979ztznor4miF33GG@0 0b@eNtkg1u9u1BPqVeNLNbpcD0p5q43Pg8XOzN0Y1Gme181mA01UF540ZqDyH1KuC9JCAqoH Xa0G50W71560GQ4Vq2oJW7W0qYgB0o6nt3H419T0I04I5YyZpZJWWw08034gWCNn8DY@32M5 yeGa2hS5oaIm705K1FhOa2YStofmcAGpDGJ4T0WLOOI0BliAK5yY1W0lMk2f1OW0K1FA49gA N9u1X2KGIDW78F00uFCGAWvm9MWW0K8o4B800kSdu1000BlT6qArTG0F1_06eq232im2@HFe S5WL04ybBGDWN0F00u3FGmCIZmVROqog10aJcX3G6X9drSQ0F2UW2910y@QG5miR06u5QV0j Ci44NY3ZYn850VkmV0ZYoX0JI8EC20H0m8nme2WNj_30K02ULGOdm@XOC087nU_bmHsZl8M0 IKW9maFW00iy1G0LW7WAS4Km_NAOq029291W8E8oAaqWchWCL2U8eWA18KWNAN1Pg2UK2U2e mA6HX8HHvhOa9mF0heYA00_dPeen3c0IGA8_hdW70801s4ecd0F08e2y30B8iE4HO565GD2O TaWWend401cFRaeEwuf3ZI8TX20e2gaBG12eSH5FC100JMXH6iE3DO2u7mA2OTZOWen3c0wW H9aYvpc1MsXHWdS0yBrv900K2y0f05oa6dh2UOJ500F646901WGXLOa2HoRoreZX2CoWA8p6 qq2e11ZUITW7d2qSuq1G028U2KmZah1u1PW258mn0gWDrk30CY8W@018Gy8005Waqf3Gx8B0 voLWc7PF40H1PYt8LbKW9j0D44JZmlXOe4y2G1O6XCUWXV3G4DYF3Yn6Zy4y0uWBWa0ZeW8R jSAi95ay9u1W0OeZ6nt3Xi1qK0IHC90M10urKXuAU0UG4O2CvLfG04YGCY0ufC_3qqG1Shm8 Wv6QmX97IH0DF19iPuZ3W084KeEwuLr015cGWAY4Obh1y0v1A894GdM012O4ITk2PI9u1fEX 3G6vA5HH2SFQD0F4F08ufYWQ0FWU00m3bWK0p0CI0TGX8D0YouHP14qLW1ogSDA5e07PFva0 Ov5W0NGo@eNFjgHU05e51r8FW2aYWA8J5wW2Iw04jneq08GDbJ19304AevJW7W0i0aE0o9G3 1oq8yV82A8PBKjHyHBCHGocClL03y7zvnLDWFJ02qUWQa9G1IFG5WP0TGX8XL_006RCw9gR_ TWpSbQB013y7zovLD0F4200u@YWAe98wG1GQ1QT5m01Ad2RMsA_xUjmA4OcXZ1A0_XqF0e00 u37W1CYn037QUaz8P4W9V03O4monc183SaC0pSWAoPIizB1n3X10myVA8Xq43OAeG6ORD0V0 Fu7w@3hRaf04HBWXZco0iSaP0o07938pc20myhRG4c16QQ5F0m5@TFRO52N0wJ0P_q344aqW uv6X4SGGu1oL2ENqN219uGWIrVf4SA0VaRXC1G4E8P4YqQoBY11@TFIQ52NeuJ8tioCoJV0W oVqJAMXePbCWOW8WcBAdNWX3D@0iA4CmyOS0LoPI@TFOQD1CpLn0MfF0Gv7wTLhjWy4mi403 qa_00bVedMjI2or0U1ymVeNrL39I1HaP0T4KWG037J_tzYUr4I3u0peF0GvFwn0hCne@ltnx cGB0705z10A@Hl0Ob96XGvf0W0Fq70ey7zkVLcOajad202eGV0WoVqhzLPYHyIEXs40h0qyo EGCavY21OvVJWHePECIKv02qTGXm96OY4D00B0DlD342iWpJ0Q_55Opu37GXW9gQKJ348XE7 0uGm38O18ppNWH8GGK3K05ZoAgX24T_B5rG1_@UKjh5OgRyv2m3Oa8WC69O0yUGWWe_1n1d4 u0_2027Cw06PbwE8W1WV0j0_ejWcHC9frm1I_@zQVN0CI2YGMXcpw700Bsq7@sC_O1GGP476 H3fXXHvO45410ZK0yKYVOOKE61WH4Gymm054X0u7GpA0UWml16v1ZI08042O5AN1X_q6n8YO KtuZ50rY7mOZ8aS0u70RiOpDfX3Jw@xvrk0yRu94qc02oBV02WW0hoaH_@_@jB6Oo8F0WB@T F4M52kmvJXIGZeo70ey7zKPL82b8Xm0CWaPSGXN5ulxpcg6SEAm46Xe4y4GX08Y0ZeHyPG4D Yl62uVtdpkKGp9qX5eHX9j9qZ2okn0@QlYOrEXSsw7vWM6fO92q8_F866_DK524m8@x_Hsb2 RYXEy0DA0fDnUKW@ldX61IG0Z8Jv7Bu@xJ8LY4uF_00b@etrgoK164Gt4mi503CF_00b@e7p go4Z_@UWfBCG10uPfWHGJO6X0u7WUiOJH8vc5AKWDsDXm0Emsu30K_ZUqgAJCw@xTukUL3H2 ICZ3eIEH279@nz1lA4cvVt7dk9@GGmF4u@xnLkQ0F8U00mtSWK0p6a90nZ0560QP0c@llDvg WcckZHwtn00e0azxWWV8N3m3q000_K5e2PQ2ZK8Fb2QDm1UgR4qSCmWJcYqR11Y1d8DD678b Sc40pB61HW61CYGySCmQ0Z1uC9snNK0G0B7I2myCIGXeP4P23CTK6U0c0r8BWbJcKK3Saf4O 8793GCu4f3Iv7t3sg56G08qjA6rD_m1KkIE819an197K00c@F2YmC9eOW_JTZ4KgmFttJZ05 ezSRn8DYl7YvVtZ_k9AWWSm70ey7zaGrbOaLb7J11vhGYv2K8QgIkm0JCah6m7F012ErDoNv 2e582cH8EHcG0W5WctX121Myy90DFe242JoNvWKFA0c1wL_ATm@xFt@BPKg76mtSpncUPKIo 4GtKJemW2u@zOx@@ltivgGVE5GDyM37A4f@llOuYZHYn84C91mx5_Hmc0W2WWF01YRyrPJ04 Y@08u0qeGppe25@Ma81EI54YNk0Z4BkY7W7WmlF1_0GmC6f3ZQETwCYIe7Gzipc0O5Wbd222 WHgOIKafPIXYVR3W06b22j1K09c40h00yKCm1CIpuZ50NGcESf7i40Jc0cwET7CI0HIeK5Ga 1bg1Y48fIGa40U5WF5QIsuFp0OyRx04WXV18cn241ahqeG1GutkXF01J3eZmcBW99oS0h303 I9sDW7Ch00uX6W2j9E92dsdEGpu32WB0UkcVtm74WxoX0p5Opm7WWH1cH8ppGfqW3W22@cJ0 12UT6406H6K01KAGXef4nRW7SWa2iD8B2GolKWeOJ1i35Jo1Df0cJv1Xc40hq8_m70W9Vq1Q 5HQ4_v3Y4M10pBMW_9LOCJZuRVOWn8DYFzXn7hYXcMM3Caf6JABC2WAE49WcdP1w0c206709 8g3yuMGaLiPr04eV0Rn800Io44e28@tzGbB6sSB2nma_@Udfh3Q20Gw4_F43HKNSoL1aMGo@ TFGv68a1C0DP2re1sZh6W7e7SnlAGJ5oK3OAWu9G1Hyx4GBWuHW2B0j6q45@Y10r0C_VVb_D 1C3Wu0_30A_Z_OXwI6P1oJ0c052@lV0u33OW9C0W20mhn01o8p56@l@iqLA89B2GW87nU029 9B6Kna7LaL1PPHGJM4qK01S8o@TFyuMC02ErV0WoVq3GKNYH2QUA08eJ@10A@HFxGT96vevv Cu0mnlxS6AmVqFYNNGJ27V06Ge9vnv947m12qV0WoVqJBKNYHOef8mKhwBA06W50Pm0Ju8P2 n_GW8@vUcbA2cv@xP1k08aAYa@tBf_x4VF438K7Svu0aBGo@l7fuoL6G58AEoXcu499ou0fa ZaUcR4CZrdpYCZ0c8e17WyVtd8kmDU3y0D@A8ZCG87PFE41Oo7W02HzmDd3HA29Nma@VlnoD XG2EGE_3G0840rbCoEadGA07u5@10A@HF4GT96zQvf0WWIy70eu7zy@LcO4bb7Q51TMHWAWi Pup2Wz4GW@lFBuw0cH5S0uM0I@VVKmb2DLcAKKIH1AI54oD@0o0D2YFW1ima2O4qC75OM6K4 hRKefPKXZV9qcEOotW66QwWDrK8Rnj6WFW704y12mHKtumTMM348odD7GRofYmyNSQqViFHN 1Z830@0M1d51a9r7R1QU255S0gx70eu7zQzrbOqTb7J014O6ROkHoxCsQGyt30ZbtCinu_68 4jTXmhBK14mw26WHNF81CXHW9c4e20uBWEW7tmC3Xy8Ro20_2WZ3iva21pVRGyw7W@idGkAW HQ8_zDG0WJ2y3m63Wl0u836T0c2O689azOhEpR1864F0Cg2GAVv4AJ74vLcpXCn0c0a2j@r1 QASy4OW0Co6OuiG6XwZB77ca2HkWaQpSXW90em18nHtu6F0UuWa2B01@2IV65u7w@YhEe9p0 X2GE576Y87Cv8gRyuMGaKPE7qyCZGna2G678f8gJSuM0aBPkM4PB2r8_o74MOk2PI3yY6_00 82YH1HYRy0u1SJPa0uu@zEoNDg5eWm78m2J_3wbnLgOEkY7W7uGqQ0_0Um2H70HMGIE8f9CF 1CZ9j0nqGa60C@Tl6@2Xu5m0c1Iz04mX9f0aB4fACVIe1Hjeme9axKW13ZWGl20la@70ZC6O 65C8qB0@6LA1QjUNrsWmo1ZgWHQQa0DQ0mdQ_00jE0Pkn3W780qPZFCW10h00yqAmZOFMZa9 31yK84yRsuZ0mW0q7PV0R5K2m1G0i30zHs3pH0k4W4m0Os2V60s7wpevdWU0yL2Yc9w10Non DJnF50382z0GAvCp4mZW720U1CeCI30L40yzJm1Wd63eWL00UW3804H29fXa0O4EaK3rp9oY GI4GJ6aiXwHgOROI2aH3r3fnGH63C361fU0cAgPu3LDQ6VgKpAuLXA4aPsNOq5uNag5kTz2W 02@g7Ze0q4ZF20iRu3LDw6VgKI0pe4mEmA2HKg07e4yu62q41Cxn80HK4WS7y0mAy1wrumJm @lRM1aOK98EL3yGaD2@xAHpup2GL3FA4PNPfc035yReF1ymK0290X2WK18i0W5qg0wI025Gm 2eC18K0dB0y504HM0CK0028O0JC0X2a00150O0r6WG2Ge02a02B281KG0X4WG1y214s7m4UY WoGW93K001cRWoA2e0vD0X4em1Ov0jQ0580X2mi18K0qF0X4WG10C0DeUK53I653ZOG6@V@t y7hSJOW04GpUElRyHLD0ObWWda12WHQ6VGLpiIS2u1q320wdWt@m418Z0JV1R3g7mso4b0sc l3W1WLylzRurRK3BmB06i6Ve0U3gtHoqA_8YO6eXjux0WLn8JP4ICA4ZyHhD3VEf30dqCyPa ADZFVew9w1OPD3VI9Nhuh8YR6VGILpmdIwqC_4Yg@l7g_30KY0I9iT8C29Z80yHQ@8o4k2XH O648c8YKluZ8Qc0U0z0lWUs4D4y0PWP3qjdZ4Z40UkpVeCN1CTaz8W5WbN0CO19X0UWyGpmd CW10ykPm5oCtK5iWaJBT0MbMgl01KOpOiCm4214uNpmSJHmTL0WN4zNTZFA0c5u183D3VK06 0lWHmf9m323mA00FlBK0h00y2kGCav4Hw9rr62FfkjP09gl4UK0_30mu6HOZW1CQfk548WSJ BeI02CHaSaaI1OqGCW9GQ028x4_tL38qy2NghGmzNTO43IQYOPWc1836aK1Rg0cc0U1CG5Jo ZVx6_m0C6YN0CqC_W1O80FX0W28RIqFa96qyHQ0mBGgR8yoHs35KmEvK2W0CTt001QeUKjsG 6v9uXW2eQa5Yd1BqXH40S8y34lmZk96_40Qw5CaH61XNGG7P4ax01Mlx6KFdar011qo82Gp@ tRx_10A@HF3U52@0nB0dxLOKH61JZE3OTZFegXOu30WqYZkXFLrePyXI9RdX3Kfve88myAMO 7g4ukQsi3r2g2W0DKlh4x0P82OTdEG1D3GGdM4qE010OURH82qeYDtC6r2o20148Z8P1iGHg 4a5W1UbG4GJtu3AWvLy0_00WtE3UncWGpFf10lOekXmBVZF6Nq5TFaHr7G0KDw9m3X2n7uZl w70ey7zKqL8YF8Y21Ce@02gLcW4188G020my2rJG1G1OEQLj0TA84mSYC16OTN6G221C9Wn1 ha501PSPGg16Op1LGcH0F2UeAG@WcDFG0cNN070mBSgR8ITO1kqDmfEO0r4o8GG2gCIXunW2 LKRm1weRkI6W0bqD_egY08J7Wrm51Q6VgKn0nNC01Wg4srDI696ZaYH@VFxvl1rpvO8O60Wo Vqp3NXmFGyYmvM56LaHWqelA4e03ZF00iRyHLD1Gccn7KbiFCEGbG78m2TtGB8BWQ_10A@Hl @RjRuJLDY0J6ev3P60B2Y0I0i2GmJe1RGzSIM2i4W5G90DDZFeg16bRXa0GbVGVtjgXw95O1 CYdW70CG0COOo6XF9beHylJnJ098c40XSHaEqyEX@Tra801Mfm5QTj0tLiAmRX8DLvB8J5si W82emahm8Lmp2HgaoN8JBeP2GxX85H7FKyL10yGLWtA6PX8xHvBaPT05e0Lmp2HQJT07WW1K eEW3qIvhKaw120_c1eentVA12G_R0e0r0WJg0_1mY3M@G7iYHveIWZEGqSKFmHgVkxwm8HK_ 2oS5ZeWc21U05W2Ig2yM8I7KkeY7c0QLb0hO42M7H4AIrWKLDe8L3qC_y0mEC2zahWDjGI31 F46GX9xXeWGKBGN1kGOiBOX8dMw0iATZ70FiNy0G0W9@c4IBrNm0F1VGj8WtoL0cM898W71F 00yQdm52Cn1uJ0Wc6V00QpuZD0R6_81AeCA86D0y0i@1pCj0PM8K1NLWWCY0mpt_PgHW5AiJ uVNDEoU_5nHs3V9ieIh4y4y3WXZG1s@61Zc8IAaPpm76W52y0AWcn7G0hW8V2U0mGpmdBW5R vBKgG1GO05ALu04Ik2oC8u1K0A8o5o4FdhI0i5eg2NGcAif5YSeq3AmA697oLGJI0F8U00u9 8XB0p8qq0e1H3i5O1D7k1s3u1vMGI5qa4m3Y100Ul3u2Hmo06Q6Vi0iq9jO00OutE48GCbl0 CnBaC58W5HE0qEoU80IZmlkA0J8D2Vwg0JmB06M8psVCe9M2efHF1U0M01nqCyH1OP0f06PX 89HvBOJBai4M4SN9R0j5Wq4J2WL00U6R80UP2C1iyFoG02XE690u5k@GODGz6E1CtG3GCvk4 2evvRXGuI02n9gVkxw4VtL33kyY8TIvTNH01aa3u1o3Z0w5mK0Z8iE41_y2AG0B4PT17G06_ jk02GDvA8pLCIGm3IO254e01_@Uojh2R6414sEQ5iv4mNT81gUm5WP0ZGWEMWa1W65y03@6W 8Kqed0F0BuLoL0cM8PNi4KR311EGWCayFqB9hn1O0WWN33gWca0UWy00mhY1Nmc34F2OePup 2mc5V00gq65801AaSBYLY0XjWcU2_0mmJm3008GCDZFO0UY4PBmT5i09d8oy78GZuJYQUnyY 3KmVqFANLGJI0F4U08u5lWAaCm1ONm5I6G1v30easedekwxnIpLGcM8fWW721eGazEOW@eF2 lgGcY0U8800mZg1NWc24VQ0682qK8tW544vMGpoK1GpZY0b0pyA8m6PI0ufG@A68Wl16GJC6 eaZiFvG4ABHXe39ei42gE41REOtm7kIe1c2I82skT02wEa09rQ04HBm2JP1O6GCXfO0C0hPu 3L90O_lK82pGZCVY70yY@kN6j2nB_6VQK8GpJT15gM62e6g612IKeVb2C0uGu78U1GphD1v2 i0MumwTZK0B7m6zR8Wb34Eq@x_ksrUvgGB15O1eRGzaA6O6X0oq8_MgcJ8J0ZO29Xma@Vlvt 53O2G8W8o90v@thzTV0cCafZq00lytz8aL8yotu3K2TfxcbWU_00b@et4h2HpFfG71H0D_Gk 9oSi_3AG8WrT025a401M6Z3I2u09L82ef3D5m8T3Vught73I0YYm6Gm85E1Cx6VmLonoG3Cz 1O1IZi0BL02ee6T3VegW4OqSS048ccn7KLSWK0QUo8O3jqiW4p7WCHB8O13O5vDa3m2sBV0W oFqZMM@tzagBDoC0fmKtj4XG516O2C38YW302OD7vJ1aDG4GJ0Za403w8p0I2u0X0Mp91K09 341q81czKWWYn70e04yw8GDiv4OIBF4hEW2447XaYW1P7K05nuW01C0t8G3Esi1rpgOu0JH0 sOWbCW2_@Uujh2QI2u3m3k6j9qCW02E8C1AqTtD4Sm2M8V0WoVqp6LR8hh20zvDa3m2w7V0W oVq35LR87W2y@zmQt6gl705uE_00b@eN6gsGF07WdTR80C6w1e0AeQ3z0SWXsjRu3NDr0JW_ 3K3PkeG_t_0yw4QACmwkfW722cWM7OGA4sDyXh8QW9991NWP342iyD_8FGWCVd1MgH2EHXuB ruWKHBGZ1_Lf6deHyReKZ5GRkOGpCmq46D19L0UF8mJKNZ84awB8kdKt6S88kKq8ZRaMKV16 I3c0l7D6mSY91i6G0o@lNGwc0H0O4ILqSMV10qD_W1mFak@N2WhHVm8eCIM6f0H0O440FCm7 WHw0WWqWL01mR2yJG40CYWCQHZo3e03S_qsneZO4e6X3ZGGy@335Y76AC1aG0@0mA6PA1DWG a@Vl6qjXS5MGCu30K_ZUSbQ3vAS0qqLZoHEGyk2XN_6V43eJvUa1VwcuSFQX@thl@10bW480 9vQ1CX9aCN8eEO3won0DYVTAePyX2m@xU3pr2O6WE60DB4fcHiKW@lVkI0OWwgld@llLxkYH LO1Y@klHksgvmHl02bR1_V@j_70Ky7zY3r6gFz020cvDa3m2IzV0WoVqZQKR87W20avm050W 7x2E1CXP40WV0w1ZCD1a9qeG1KBt6Q3O1E_F0GvFwbBgDqem1mFNj5F0AOjrNo2jCIs34eHy lJDCyRsn8OZSN8Iu2ItX0gWhAnNjGq46qV51IEZ3gceWc98mFtxiMHO6@VFCqL1C11y0P00W Nx1kGZm5O19Z5_00ATZ702Wnl2G4fpIu0dZh2sS2uxmX0C7u29lNW5Y4se0cmqugGkF7Wq0N 0cHaPZn8m@xvqlBWPAKDKxq3_@_8ihA65N01bpmGS144AC1n5W00cNT2YmCXtWWeJDWmRwmF tlLp15etSRn8DYlxgvVtBlk9Bm0kz70ey7zE0r6gLvW0UOnX1sDyXh4wah6qKbShDoWI280Y f6G1FV8l0HmCTZFugxF21mBbXKWN_6VGP8GcNw0Ju13278NbXK2@ldE_tGzbXW0@lVJ@kGcM Z35efGm341KWagXd5YqVtpnl5QH01WFU@30A02_@1ujnx@V00yH98BmyiaUVm4n2WNGuN1SI 3gVLmCaHIn85o4mf3WHw6VSLJGe7mueGa0O5Wb7P22WGk8IMWfPv1S0ZG1Xy0A04J2WL00UH 78lCQWHqC_m0q6gdhXrCyf1G8P40cKW8rGziAikJ73ZmWOQ6V40y0YiXwrQOD3VI061H20uB UVMePtmd4Wx8M2J0vCoLXDD1y14IS1GhMB0z4O2YC1mwCiWOYTWEYBWs0sDyXh6RI4KfWTW1 W7js_BWm1sSO04Gp9miMP80ywB00DWCAP3qD_mfY8Yt0F0X85ORFA4Wadn0PXc2G7Ba44PQ1 DNo3DZFSg1WLq8_Wf4Wb7D2k2HQ4VXLI2M1WvPRWDeUM53CpG0PQ4VZL3C6fHy9MDDeUM7Z6 OgXCdM3OW17cCWK01a0PU8444O60OW0oKL903HU1C10500lR2ibH0G8D2@xgn5HwlxfxNGev JW706gtYWAY9eaC2mWa_x_p_DYA3SnlB0p5qiK334nl30D1Y71AC1qY0JKyR6043mu@ziht5 qq4TiW9Z0D1CY2XJj0@lF1@k0c9R91@llV_Uazf3NWHi8pkB88QB2C08795i@b66D19LGJC0 f8W7G1qC_S1M5ainn20f@t3aVR8GZ5mJ@005@etPkwlx5ptO0O0Cz30KyZURvQ3TKK0rClXS 0MW8z30KyZUDvQ3v0KWyC7gk6Ee022C0yFY@kn7903GTF4uLcZN03qCyXh6LS_3qKAXyWa@x _3njI06qF@005@e7AksGb05u@xdCtZ6uE@005@eN6ksGF05GZCd0cP1MZ68qQC1q0pcXFKb4 RC1PQGWVkt8hYmCy@UKzB0XuY8xtzbaVv14KRC1W0I68f@tZKVL9LbGyBt8O6bF76QEXCZI3 G4f@kNGVp8W000VIo70Ku7zOhLRnl9M3u@zsZN3U1A@QWJEoUS42maFW0SYwdJE8kq4Ho09z @Ue@R3D6iW5v70eu7zijr6IEu08lR3z0i0_u70eu7zEjr6w1u0EhR3z0iWsu70eu7zmir6Aa v0fgB4ky4rT_TN0I6kit02u@zvmNBoKPfGH5o647_10O5Z0z1nB064m8XOEBsiChONtiGJpe 27@ch11WOI00@W0IZDX0c3A4tuMX6MA0Gmx801HTWBtP6X19PnaHoS0EH76vlxJdNGaPdm@k Q4YwXBE6Ya@tJ0Vx6VeLpcA2pVjfH@n_SSDAP3iPHD3VqgH_O3JH4D82_10A_HFUQjXM3A02 bpBZ4O6RN_1k9toJJk0r3PO686ZRJs0Wez54UTGRJc00Cww02W9O4Cm81L20_1qGRo409Fqc i1Wl0Ov0REeGKBx6KFhZPWP20uHWl0MP0u70BqmekXF70BWPOKHrZjICl5YWGy00fB89cbhR yXJ1G0f1C72RgHc0O5jzB4O2uu5m01CYjmuCY0na6HznDd5IYX9xWvTZFuA00e01aYfxFgEx 0E0D4mqiGOHa3XZjpeAW2873IA1pX0cd52BYCWyFCWSC890CV1Pg1UU0D24p2H2WNmjwL2SZ @t3AULe7h2QNk0pnma_X_srQvbNgi12haaL_TvcVY1K8wd0V0CaP711sH0jBl1rpgO4GcYLk 0tmiGEfHY2OHaCGIdBFe8201j0HUE9Wmo302Oq8JOK0CICZ02QGWN@ltRx2WVXhM09FdAGOv 1G16m86C2Ae1XO7CD0iYDW_8xBHs0SA4EP8d0E5Ae6aJ0d2HWVN1DSZceIC2ZCfiJ0U4U066 XXV59Dp0j6cT2u5G070wnI30X4AmsI8Z6cGY50G0NlJ0U1U02@6cq25C0eYzYUq4D1y0w1vX ENN20Nl10_4plS05OSqh0DkGJqdF0w19EnMF0_pQe1ZHXme0Wt@yFg459DFV_AGZJq8yvJ0U 8UmtGF1u9u18yh8Ix2e5sQH9M2Y7H3a9X60QmOK0Wdyy9QYGIM06nOZ9YqUoUR77ma7W00m8 0Gz02mOW5g051C11F26Oq0jficwyMI7_FDWqS8D2QKYCoJX0my32GvvG0nJX208UKGG0yHI0 i86I0Z1Y718a5qW2D14Z0WVJ@TWH00bSW60Zm9Zqm8fZ5umw3z5e@FHz8MIWowWzFmPHXn2s @0_nmwUWfFqdZ_xir380VeFZa@9rn1J2RT84AB028mwXG8dKd015Ee8O6IGHMo0nYijqoe35 MdW3a5qIBNSAK2aMBy928I8s20d6efXS9O71u3d4A@ffC_G0iaC2K650uXkV0W2Bs6WH4mDS o8rn2uO59PbW1VeFWoNur1XG1Rz42GO49Wr3H89ARG93SWdKN4CfL6Wi8qR6u4uOKlG7@710 8zs001HQN0ZKBKmIWHWqeCPKBT20N00yZG8PGJGn6cQDKG0xG346j0Qi2CbWM66X1z5WyQ2c 0WFN_FcQ0G4D0Mkn303mns0CYL038o3m0EsUuDd66n0r7m0JAaBW60Y0m80oeaOKpfpW470y McF0G95Gp2c2O4Nav0W1WK00yG3eyM2BUuYcc0iG0Rle3_7P1c29l7cR0WXRy0u100Vb0w8x f280Bl00m5P2GAQ7QXXtmS00LE7q04F46WSdR2y0me0CIi6P5m4svWOakJt0ZuHg08oFaQ0H A0uxb@6FF5gQG61GBy3wkbk11eqwzJTVyf3w94m@tG6XUuCmGmple0m81HFm383J2ay0O008 oms3@vstzVlld6TQf3m840UivlJZM101s@_hjVpf3X0GXHxVFFwVfU0EGo_B0ZMm8TdE22O@ xTy_DBT42m0mdby1G40CY1j0KW1WN5v3KiWnezTF1zhxqHm830FCo70v6WFimbjaT0Z0Z93m Ftkk2KG8@gSy0GXcXFFWw9u1W21GD04v1I2WB0M_uCei41WHkWbLC9LsC1h86sAO5WC@T6I5 C1m94W3LWK5Pke76O508Vt3cpD1AT0iDGr3Wu1C1y@P4Je7E60WB_ZUoywHs39G0cy100nE@ 3Vwncs7Z1KlXZfJE0HBS@hYZ740WW_00U4qj7xeuu1Y0MeF1a75wFmy4Iz10m_thJ_BLz6Mc 04P0zaXa2DUy57Sdx8x9fW13S_Hs3WPwMw64GX74OWrDs0JdUNJ4mMy10A01FG643GIvv0ut mCqRZvq3bsFpYCmM45AQyFsFlF1r44PwVAXU10006v9m@FC_me04YAJA28jGa80fLciCg1m8 M3CGOKQe90uRL@Zf6K0R3e1na0u500@M120N0oygGOx04m0uVW00Bl06e6HCmw4UWA0F4FOw q1G0DdE6200mVkWEoUiZ98150@3Au9uD02JBT46X0m3Y@RETI4GlYz8xXzDTBT661mo7W3g0 U1y04CA3ZS0qNBT0612n70440UYtl0CQ1ZWmDj1YtZMpfpWHwEz408W4180u@t@c1806P2WK 00UU38Ga7W1qTwC8004nms3lvU2U0Km0Wt6yXGiF1_0A02Q20Le_N0KI1WFW20GB00_Z1K4R 2WL0QUr38G1JK0Ybday0AW0mlg_RETC402YF004d7I8ozltyxBGc45a301wiVWw2u0SCm_kN JzrD_41O0DIen3byiOpyg8Gh3U4x1O609F0T7K000P0hpy06sUm5NpuZ1WdIw2C21WtK_BaH Mo88qv_tBFz1aH9QKi04O0uN0_7Oazlttg1Im_th6zF8UmCGpIdX00aH50@0sHI6rjqPO420 FxTXLW9448o3G0b0G000POs3VSs@Ufel06P1Z0YH9P41WNR@tD_O0O0W2Gmxy1vLy1y0WcNG 0sC_G3s0SIpu3EGxWbcPakJd1ho0bW0SWAPXW21EGCwB4ZMo820Vd53KWZ7yM21eyMaGW8F0 3qA0159OW0gH0mlH@b9eGX14KMO1W7Y_jeH2o81Wdf@J0Zs@UPjFCeH0ZiWHGneiCo_tJ0zX GJBP4rgI8Z4mD2oe5DY0mlc@bo8RP40GnNerD_e1M6uagX34Zs@U_iVt97K0rv7ec5MmvvZ0 D3DUGL7WCALZ0WA01Us5Cw15GiyKOWzl7rvB4ZMnei48W0mpLV15G915AIX2KGy0O81W7D@3 0K02UL7OtItW4vnclHz1EmJgVjxSm5C@B0Ev0u5m10u50Wtj0k2CFoU0C3maFW1WGc3OTZ7W mF0WKO_tE@D8q23GG00G5WW7e1AGr29ut_XGd20FM_NG6j@z_M@kbE1ZG0uN4@2OKG06O@xF K_A4FO6e0u7mEGGp0e2W69HZa2q09VV28G0uh3@08206fPfRG040_hvF0e08uNNWGWfdWF08 qC_O1sHPqXSu1Bx6_W0fkJt05f0u40_k23e04OK3v3GGO05mv0xMw4C2GCA56XGyPPG0xwt7 690y6tV1Pq_tpIzxkaW284@2me5CA902i@z_8V04X2n336E0V1mS0k9uYw8WWC280qHN3Zuo 8Fu9WCgRyn2i9o8XCoI61KY15uay1aH9QKe24WW0MYH20l6z7CvsTw880XwYe0yvF0G10u1P WQ0_0U00mpe0X8J00U7Cg2y50BhnZSK1GmVc1NK8s7D4o4cH4WDnGa5W34Rg1uamIo2k5q40 L04yV3mA_q3To091e5K@B069WHgfcWA08ePE2iKigg8Q@rK6j2ZU0J3lk2KeTD0i6F0oAo40 fmXkjGpMy9Gw22WNaeRCafEC24Z40yzgVjC23G22ZO8J10@puFBZCWHWme1cK0mNZz7OJRQK 5sKxD04yHOm029B02aL@60oBm40eKWkD8JWOq5qC0uvP@60ILoK0f0avL8G0So5vWG0u3JG1 CoK8Q2uzn001UL247Zy0Dra8jZXqmu19x0d05qTMCI3Zw4W0wm@WCItu1m35eR3oaK612Z20 Unml1W43C3QW0f8eAm4XC90AK7SG1bIKGl15q521O8G0a2GmZH0BW86a94s44650ykeV309M 6nWC30yWcF0GnFT3Hd2m60SItu36GZn85Wl0sn0P2YH20Ucflkn7m31g6mTQaZ0ZSLHryXGR 140Q0ZAXW2ah_ImIGCIM650ufLVIevKu00He2Si0JNois73GTWkGJ8mK5W91oX04xVVTutOm O4O62C30Z1616n_@UIlx3mCEX0W8L8I0tm5I_08LaS04I0y1Z897vTBT36nJmB04QETICI8A N5C50A0PUs442QM1Cdo3OA4ma7B1Ti68OJ0M1g@_WE1MUp9u3q44Z4G8QY8fnm3I60uxaVC0 92E7XDDNk0rWn1eOWkbE11G0uXlVa38N@005rW60YO09PGIhi90v7K0l722T6uv084B4vAO2 0K0oyV6eLmC0651aG0ooe60YuYKK3O09lL5a0Zi502Gc14F500HXoNs8i9r0p1hmul5VOWE9 F0YOXaMPpvXH4JABE0GA8@B4Y4SSxGA11W04YCHa7m8iOIdTE0Ym29LtvF1l@d10d408YOIB 092JQbBr3vu6F0UuFqBlhI1_@AAg00ioVeVTNBL219e_060WLy3zYpr7qa2n7052u418p3aS RpJrmWID8W4MYZp1046093WaYpbZHWme0WNwvhYp7EUWC01M1evHbWF8J2sfN22aC6F8odDd 5P2WK00Un480QfWknGcg46G1EOV6090l08uLNWTZFO052T6m8G0_0003VA28VGbTO46iq0PY bH_@UjeVE616OM0aOPa0WtFuRGcao83w3e0if@mG3GZ0mAz0wdWN094KA050ryLHcPfk02O0 H7XcXQGWr340k0iyyCGLefC3PWeZeqc2SPWvcD11ctv0zGcBGp0mN0hWWDV8ITA40WNu0Zhr WA18mkxVbYon83Q45WM1HA1e0r40yYT@e22e07O48CA0ufw_2oeMF7M654Z20UoWVWCgtp1Y HAG406fA02mv_7m81DYddBHs940ui8NT21WM02U14OtItW0ocm0C4038@8x1GC2n8WbN01i4 Z2OTC7Gpmd1W1HdH9T12W0m7jyRETQ4Gt5mKWou@06j@zm0@5Oa06L201q@UYv@1ndfZ19QG GEE4qY31I1we32e0oQ44yaZA5m9bn8GDAd56SQ_D7AG1wXV2Oa_t3_@Xfqc2A5m0RwFzgAWR ygGcBQEwK0@O5Z8o8ARKxoevqnG00rLr10Vkkbk61G@xHiYg3g4W0EmFynNGW0wETQC200PO x1USwxUxyF8050__00bVe7hik2Zwm8JWV0Q16LeFqTmS8mq@t34Tx6@eS8W4U2XCXgyYG800 m@e@105@QFqQDBZgKu0mZl_i8p0upW6rA21o8m8e92I2uoD0c3a60MVG3WHQ00UIyFmn3a1g Kv14Y8Y41HkIa_@_7iB4TAMZimdgQakn730YWd40y00VrwRGZ2YHOPa@ld6v7GDr2GWiC2WI Y90_70i0k146vhGOdxkXFCWo9Z0m9DZFM0EB65W85FGWRpt0PEeH00_XyF0euXkX82c7m8WB 61J1YPa0Op2mHpo7GqBW98WF0FeUqT7m07BFB6LXcT2G0hrVG6XIvA0_7CmHs30P0cy18G74 4GWr7Esg280yO3@MY02@_KF47u7wxdg7PVZK6a201LIXXUnNWAfQm@t7ETh8JNevMq8PC8D6 L8oBa4ebdLO55mIz7aHeJkCo40fS4qzSHWA_S0pyGdkiy08ZqogJox6_e1hkn7EWsXdOWp@T @qxwXC1m88Wf6quGbdRy0uX7q93UwXkpA6X3iI_64ZG1krV0WoHTRXCpHAn0j0YP1HkWcA0@ 0iI5bB0Pq0SIKE6q44655Q00UzzF3RQWuPG0Qa61aHI0KWHO0czTliydt312Ga00V1vJGZ2W vViPRE4Ouujn0FLUs04edpNmcFqfSMX1UI0qM0pXmH1uBWTI7vvCI4040YCvnvBWfPCw1Tc3 AOmJw1D0h8Wk30CB0f5oi0u7m6icyTZOu0t2TiE7WHmGcWm854H0mFjyZOJ8C93W4KoXGcEq aI2_@UzbxFqBGMvmCvHk0EvVthOkM8jMaEy1X1Z0aH0iYuW6Yw2B0UGVKaW90XVn6_4048W_ e03Je402W0G7qOu2b0G060QK9gXia0U4yGDHJCq62z0CcH340guLtCND0uIHGRJPd0z0A5C_ jCjb5qT3I0bY60Z0aH2HDLO4i7fGXmHqXceda@Vp9IQ0MU0CG0gRW10G8X1c9e7GV5sQ6DGH 066@gioomi44VCX4G0e1YH00FCp70W0sOw5Tu5e9fnsOB1Qc0cMtG2mFm3Outna60ZOKmK0u oOaLCwKg1aH2HDST40e0urBG16G42w60j8FtbyH0u3SK9_4y_7cX0FG3Oq0x5wm780WNTuFu v43jniMhQ0WLU5qZmcsrWLdB2R0GbEnTvdBWH0YHXe6OF2Mn@@FAm810ze9oSrqqvOZF0Wf3 hODq6DnXY4811O4AY58vnv02JU0606ezapFoUyEXJaFwGIXr00406G30uDxk0uNuEA107008 mv8001S714vvS0E9VN2IOv1m0076m1AUN0yBGo7301oA8XZ1O1vkB0_z9x5SS0d061WNsTp6 WWe1806eDlpXeM4O406XBO4QWPm8n342YC2m63CZ2sOCRamCMOZAizlNCy@4x348FPVH2w9x rXGFn_A62mo3000M_up80020Cv1O0W9Me4JSnCoOaGC8wDvI2WM9Eme2sN0rNWuP80xVVHmd 0ZWKi08U6600XO4mKn8OOK80RKmi@z5WVGC2Sz2WVFo_C2C0Srs1qCm8hc60MH5eXTDh1DMH J0xCWg11SeHJ0sf3gHR_C040K1_H3WIU2U@FJPCZWun50ZBmKCoJm7W1A1CZ6824fKmK6Ob8 io2JfXjlxlUVbJMP6hqnKAPWm8uw5AeXYOBm8LVEAC20un0_GxSOC21XylxNzVe060GH_enm 84meP0Zwd3dQDCD4Oa1Y5kUvayHQe0Afs020C_O3i153mupDm06VW3MX2x@xXw@W1CGCo@tJ g@15i8080e@B3Z884ZO4u03Cqy@zPvVLC2eebWG6n8@V@K_V4Z0EQI8414Hle37WMwSuNBGa 7IAY1b0FOK1CQ@xz__Z2DlGZ9mF03CeU_Ds3cvxDyp21udV6mjr3elEOR042ACQ@xD1@Z2jv nmW2H0eHn8xVFss70GWVlvH8KCo_tR0_XDU@@34WMKq0az4a8H1iV3Z0V0605Zi2OQWchtu3 Wj@z0U@002_zM9W1SV@HXcmQu1LqMt09FCf28sJG0L4G0Xb70184y2G0IW60R01mq2OBVU0b 58e2C2361WK00U82u_kVpzHQy8G0Wa7aGO5q4MU00W9WFW10D_80uen0Z5z4qE1U3S00WlI0 P1y1mWd0pNG30JOE3aX65WFW7OGqRB30SXUGp8qI6DC2Mu0R8u5G0J3ge030kSaedjU0ytMc EB5GGAUwtdKtaSmWunX1FfEp80biHHASwt0YtMCy4rPc0XaDL11KW9uX1nx63b0G0CoEMrhw Vf0GWfvX1nV73f0G07o68oJ5N2heAh4W0Cz4zuZE64FVCu9uz33O_RG04WWC25QXAa1YcCWd 8QOK820DIe14u7003AaxdUPeDDOY4Cb1ccW15Zw5wm7azl@4xI5_GW904F2CGYDsG6KY6oAw 8GBD_O0OcXF20XOyP0mGUUT74OR4U2y1m0ZG30hFS0s426e@0pBQmO4Q6fk16O8WH9O47C51 crdZHqumJyAa0ZUQGD4y2O0n1ceWPAme4OK3caFVVOO1y2uX34DLu31EaY6RX1gHBIe5AOO6 CW8FdHHGm4cy04WXWF0005OK0j99aiJ38x1m0eOKm3483q_tzTxlKFF0cqqv2m4YWsJgZL6M WH6eF6ud8gp0182CCTE0@2p0008jaEuVQIeL8iWq86Oq0G2WL83q8ceFq7Gwh1yGu100Fe0Q Xq0mA00FE1K3mBm2m6V0057@MU91ko8R4j6mB05wmlSRaiDwB6PbHaAQJCBWowKqW0z0y70W @H0whGsr801@f024qkXHpQ4jCAA610ygKVHXs8e9MZks6d2cRCQB4D2Om6V40Johp03K6HVl 1an71mzoi0DH0uYsHhQy10ekX64gXQdND_00qtW62rusw1qRqyhTCw9q3uOaoe1W90l8UeDb QXe6OF20e88H0Uz3S0GpZT0n6_803Cq0PuZ0000bo5D0We0Ox5wm@egn70G_4y0WXtW62r0W Nk7qy6VIQ4eM07JQxM4Q_LR6fhHC5DGWc8fnpCWaGK_RN@4GsYeEul3oeZ0k2ecA2Ov98WcI DbCg3z2WP8g1sZw6_40C3y08p7BWsTT3i00mpG0n6_80ZO9wNRuv6G6V4060k0vexrv3WfGC oVth1@blH0g14qS5A0Md32qor8Za6cT3GWH2O4tA4BDjjWE1SCfvfG06U61ufgLT01LpGW3y eFTdhHExS8GFal1XV11Q@GFhULCf5IQ61D1ikG9OBDImwPdd1YF0CGBHUIzqaGu5H9ZunlXR 4bC22q3uRTGJW8CQ0OAmaq@UBrl0Rso71o4GDOK8fHW930axVF8nNK9AmcT6G0He7IY94y0K 0H5umhB11Omw30GU34GKm86_G0CG0ZOuJ1aquSfOKI6nAZQ6_40C0WlLvBAQ61jTjk1BGvr5 W0TZF20UA49AO61i@GlUl6V01_@U_jF2xYRZapv8P452H7610yqAV0WoIG3Wu3m2F1l0O8Ph lm2uvyaOaC65AW1AC@HWM86P0CtK6Z0c@ltRxtD_80O0WoFqxfN7jLd5Gnvoq9H1SBVHXs8e v6Zaq6nQaDpGKWD2OksyeOaE610u3J_ZWM014OxC61O@VFTt70ey3zKsLkT_0OIW910yQvF1 saG610AOCwGas0Ow@xzK@3a966P1WnyvE8_0Y9e0oR_0oC1HI7G1A0se2CRpDWcCOa90Jkd3 WVR9TuNq1CIHZy@z8X@BY7s6WWVXr8O0zJW704K7Qq2j0wn3KJhyP06B5Bjot1O4YHumePZt @@80eX_88fE0G0DQ4GFlhQRG30kWke@@UgmFGT_IW21ut8L8W16X8Z_@UUmFsi1XVTZHL0Q0 E9K03q0rqAV6WnEnIhyT06WOqiY@@V40q0xe36AJ024Vrs0D0SXwH@lx9W@QW90y12WVFoUu E2mXzK0uE2081tHuLl0000851W1Whs2Oa36X2ZaJi7PFWZ0YsqAG0mB1ynAN7PFmWW5nAZb0 k76Swz8x1C40J_000SzQ4xP9CWO4maFW000y_xV0GXwG30GWhtuW8W269SiI4m8CGpqdle4X lMCOacaDIO91y2uX2CIGH7hyT020a26sE0L50yu9V0GH4RBWD7WUmDqig7WlGnl0ua0Enir3 Wd02QZcuJe7GpgTo0B0_eIKJP91y0wXXe70ZnWVVYU0Q6GC1WJCQWemeOCY_tR3_XBMXceJa FIXw4Y0W4MGW7m0OMOgIiG348WzdSZ0MmtxeIS2w1mVvBwXWd03Cg098U7Dm82R4m4m8Z9it F7A6HhyT0210@Ho70KWEqZAnXWN03Cg07@SFPV76ISrAyX0QAqjYMq4J6X0UOq8AJ8rDm0ZA mWF74mFW7IMMGGB4W60Ly2q30l55YAG70TA0S0e2AWU0y4WEBI8HWM0m01u7u1r7z0K9Yi5a w1W4YK714D0q8KT3CmeYF0UmYw3OW9W7W@CWe9G740p0K9UifLi30l55Y1G70Ta9MGWV0_90 TieGvBQ8ujh92i@v0uN452Z617QBm8KOa3oUHCWfGBGQXYbmhF062m8Jv17mV0GeCL1O7zb6 Sy2dZUG59WD0O9Ve1m8S0@10XwK5WP6L8v7TyEF8r1m0J0_1U0yHJPkB4meIG3hn316w0CbX MN0hKqq9Ob3D8eHtW1XPuDUFy0ym62TyawIW36YN05mirPWFj4W0Md1B4mw5WXYom0kG3ZSE R0C2Nz2G0e8O6ohn0K1ViHWFp21jummhFeva40KIa1MVG2qA6xwS0_b0CC0ZaW0o6B00P2uz tJ18Q4Wn62C1uXx914D1WPZ0C1y0vf0Yc0mi900O53iz4W7mdG0q106uEo0401GC@SW02SEQ 0q8WHJ0_30G2GF1u3u1X4z4WNW78IqR2110n4W1dZoKM9ax6O02GC1y@xX0Y62mi15c0UFyG 0v2GW4c0U3yG0v2G04c0U1yW0YUB4o5WWs0880B2o5W0RXG0D2KW1CI1f1GQWWM0fH4HZ0P6 GyKm091OJOa868862CpKuZ0c8mEHXF2OX0vGfG68QELKzJto01mvtd0@@m8@f308tVUkZ8KA 616DUeC70hGWkpWH002uEQB2jH5cO57qD5xmZL6Gt1C2021361tH2GaX5@730WGaW_3CV804 u9w1W8002fqV0n3tHnVG02I30nJX1Um82G3KuZ4e0mw4I0GD256z@zowV5W2mn3a1s1OKmDJ 52Onlm0kHQgWF1S8RWAX_3mlAWX9mxtKA4eXGFu388rBW0GOaCCgNe3VWCL8GCD0XO1S4ml5 1F@cI16D4z0V0u1Dj2L901o8RgWF1CXRWA4GXel1ul8mxNLYGV00VHq3y28Yw08WYKd130XH D2OGq04W0Ussv042aF70aO_vQ9TuDqWmo1Z2Gg7OKeL4e1Z8WHfP4OCwVtxv@HjGWKD2K6jW H4meOac561dq_WH0f10oCOhpG02OTW410f8vVBmw1abHNF0NHYHQo8kzh46P7Z0fkE20@AwR 0Ox5wmFeBG12rIWHSeRWY7EXo5LG0mxEy3W7s7D4wz8xZur03iEmT@HW0WeNJaM0oHWuH13G WM1MtW2ma8eG61G3bA2WrH81FGQ061NuF0826A4Cp0MdX0eeGt3xtK73C86Y41U3801a1GCG eG48R061GuJWT8K8xZD4vRGWV58DB5Xc42YjvGtH0_F2m2Gh1Z0OT3EmMIR4z50@CG@0YlAE 2408mv8DC21o0Wuf800ikW6OWuH03Xfe5a6KuB2G0G5l7Tc4g0fD5_4e50KHwHd9XoVwQ880 CrM4r64M4OKLYDdODcQA1jjHpKuB20G0C3Xl8WO0O1JlG0a0Ya_txhy38JW9Mn0h8mK8O50i qFF8D2GaQ6me6C2PnAEq4DMIXV9WPzOb1Q21@IW00YeDmq8COO4Sw52Ge@zXAV0611617n66 C31sW0R0m0X8mm82210mF1@dJDW3csG30L0UqJmepFN0a03Z2n8i2aOwGI000y4m@1C20emD eB2C42cr9FGWY64M14I7CY2ZemdBmp@l7m@N2u1G8b0@VrcMWACwBgBXM0OIEyxGq3m90ma0 Q40OP4GB0g02V2qq@tJ4@7WH0WYRYE0P2WcG6VA010gWYV5091G2an73WWC_W08T5F0FO3eL Lz6gcXZl62eQy6GXfGqEWH6m0YH30hUH7U5YcH_@U0uV0ZW3ZG6_G030s4PuJ1C08UGCWkn3 W76Nq8iE25OKrRuO4OdT064fv@xNM@0lEYW06Wzzv0GJW5F81G2z3Gy23a0mC03XC_e0208v ld7rJ1UQYqyGQCmeACo@Q0WNU2QgjD0E9WuHX1X1j@ldK@NDyX0GKZF40kWuHH00Ga2M7Y5G WrPa054F5GW2Q0GyKOWZ1JKuJWzi2V4irkCw3zTe_@WXFqNXvVirhu8AlU2KGAYSmwYu89bb GgV0X62V4iYEe0nYOEscI87acLuJWDQKM9mWKo8Wr9IGIIMXKN02D4y9O5AG1j42UiD5_4W5 PorKuZ0MO8U@p31s10LWFq03V80EqV2GmC18UACmc08DCM634C31aPAyH0p4O7fm71SG0TOi 8A4jd4g_f1G8@xUwzN0ZCWm0O435MlG7@7TfqZm8MCI0dq1Z88UKO0aElbqXVHD8j5HZLH4W QOm8jc1aCgJX8eH91j1wsM04WOwK8xpDKCw@x9j@0mb3C20nJ11KeR0CI6CI8yD241OcP5Y_ HVWr7S034F540aqGGyKO02M7W0G1Om0UVWm6W6vu1Y3084FGZ1wZ0_3ITC4WGmdWDC5_4O3C 5I8wxWub7RH0M0YDWQ0bH1edGCIFXzlx9q@KY80_5E5yH022XF2W0XuH028Oz120Y2nkid2@ K0WmwO7U254ufen740UXqQm8MOqXW5tYKxlLmeTCo26T4ZezNUO4cCQLqWmw7WWqG3d2XiV3 86@VlRy7WrHu008UAM05pC08ti84Cf1acWCjbH0GaXm71ha9Xs7R6iEYGmWuHH288UAGG1hV 86ee61NKpmd00nGyKW11gqII@4u1G15GPMmN1WemwB01Gb5snA0D7o80GYKmdWja1QlIsMOW Zoc060OV7O60slW8OJ61OTB2Yjoo06ei86fU0CQ8yHmQf3RE0BG02G23S0wjmd2W44Z4OJ0K 24Co34Tfi6OV2gI1h3XYEIT5Sq3bIGW7c2V4iYXaL268m_4GC1MN52L16ui8fZj20JXuHW21 GJ5MN23e9Xk5R5m90OPXkHWcI1V2unEvE1Z60yq8801xeWS3W7v7z0s43ZmHO74SM1WeM6OK 0Xu@xJN@182Y2J0X1HlXILWYQm804Y1CYbqC8i58UAG026X5y30E10p7q@GzzawNW95sd0pm Wz5WVCi_4OQJPDmwCO8amN0mGWO8K8FfE762TkjJig2DA522QNWr9K01G3B2RgmWYH3KrH1I 3DOOK0Jcl01WjVLaM1nZX04WCI2W3CY1me@zIJ@KO4C6f7Z_tz6sl0s4yG78GGLO49WV02GW HGq8M4ThGm3eDZQ0u2QW_Me1mBs1wA0V0F0XeR34J0DVGpKn2ZHEmeA0V0FmUe3YHwOKPY4u U@3Agu2y@zUf@sW0i6jke1oeWQ8GE6fJB05uS@n1O7O430RSdVaz0W70YlY0Cmmw4K0fXFnW u@xvp@0QaYF72Wa@zYuV0CY161Cn6E8b30YH0H_u2n@t7c@1O4m2s1CQ0maxvj8TyBY76X4x pPC64F2OOOxD_08oe2Co56DezPO2FfExuZvrD63yA_0UGDT3WG2G4I1G0YXoYiFteme@l7Bz ZWD7AC1CI2UPWm8It88_4KG2aW1y9061Oa2490Q0pEeme@ldD@VAXedRAi_1G0ruX02_I86w 60aWHI0580QKW8miJI04Wa@7N6UAavvkNeZVXG8U5WG2dGzp1G8DVUe35uf8DoWmU0ZSmei5 9WE16guH0194@28G@x5k_MW5in71Gi0Z0GUW28441WIGXHCf8S_LHm7W20ebYo9G8mF05ai8 Y_BGCgAZWGy80Xwq6Go3f9GOTA0Wma7W1CD_80S3B20mhX0X6V40CBWFW5C8HR3V2Wr6m7W7 u3QiQ4ACA2u5m301_D1aLuZ0E2UT8imsmd0eK2y3e00G10mtD0Xh800@72iWrfm0COz1AGb2 XhVxm80Blq0CGqibH03DLZ712G2L24C83sKm7XFiD_C0W013oW10vX6GJe2dCAai5ZHB8U8O GKuJW5M6V800SGpXEiXAB3V6005PZ4qYf3B4F6OOPy110m1D7w09giCyf0084jIGRXu123B3 VC0XSeX0RM6VS0ICC2JZ8cHOneem71x84y9O7pX6pmd0Oi4QJ1ijn71mGirBWXch8W9OBaC6 0U1CmGKlW2K4OJ1jXWN03C5mmn85Pa_kF8zxju0FI2yEW0HOKvFehpP1y3m06MN15KfG_tU@ ygWeP1Z26Q0PKW24GHmY6OJVk0oO0m7m02OT68mGgZ02O2y1C0Y0R9WXZHc2D44pGmdB01y@ _tulpdB9ZmXHvVFixl0610A22QiXF1m0quHW0Z0l02884feG00_h1egnZ01YXHae2ymU2gCW H29RQO4LuZWT2H70XF2sP0TOD_80uDeInuZ0WfGsKZF20d3T4Gy8W1WXF1W39qOGy440i0R4 TGYAC8QkXF1WGCmK2Q843j031pWWHqm8eWF1BH8y9mI9Xci0R8eD5OYn8SOa@th4@nXHwVFa plGdN5HgKeNjzM6ro0194GGH34arW1_pUOyA665h01_@_SbFM65f01qwy8IIm0Fb@zYhN6C2 0bO7m6pvUZF2WY0n3n2A1_1wIW00WLHmzNuOq@shSNHmw48W0s88m7G0q4ie06E6bK11gne0 0V03WZXG6_404zltGvFqv_@_4blidhAY8GyG40M9YH5Lxswoej39u0LXF2X4S0cmU2gWYH89 xOwYW0045_8OzbXF2WpQy90uEqHO450SBoMquJ0mZf3B4F60OPy11uMd3G1fHK0mH8wq8A00 BZVQ4CG0ZY2_4iEXmd0hR7QC2iaWMKWPXr9W04lE628eq2ImsuJ0820_o28mouJ0Wq@Ujalw ClAqQWmW2C8GL4zCpZn8eO40ciPyH0m@x_Holjm2iPsd3WV5WH094WKN0342y08eWe_qpPuu ztG3KFu60B21aw6O0iTH0m0kZ4WH09486AaY0A0qm1iuz780KFS00u7oeYW2zA0yWbRmB4a1 W1yF@Hb8inx@VgmlWLcHe7GJD4z0SgH586@Qq0X8z534K76Pn4PWHMOa3CQ2q3uVC0Q1CIiv p180W800FmpVK9E2z0SASOqe1I6ZeL_E0XLCgNe3VGi@_EuB0@cCW24FV0Wo0RRiss06ZL68 wTqq0A8O030ew1G09Wt0FeZeX0U3808WV0042y380em71BZWVZ2V4iJ3WMGuDW0FHTX5mRm@ dX6HV28VKmdWTmaw2WXXKd030WVPDU183dAAWV9YwCG09W7W@05y9OvY08WyG@4rP0CFfE7O 90KWolmQz1U32@k15e7Q30@@6u9r11OWQz108412AsZ0A0D4mFWL41_1Od0K1A@g9Xe7QYk_ 000kZq4_4ehcm71Dz4u3G02fk04H8r9WG10_1OeeW3iKKuZWjuLy2y0JWU9OJ2y_Z9UjU5lW qr5m0ZeE26e1HFXw4U24ICW0RfGqOKT2m0lhhWtOGqGXF2M2Td@awge4k0_CmxlXaIqDWddK d2iL5uD0GW2W@V505uUIT2m4fhJW1UYwSmKc04WtrhmJN4Te0AuWePCK03y42H7A01C@yDGW BHh14VYwKmaO0@9gNGHL0GWdKl25f2u80_@n0lhhYt8Dc0EyY2H7JG2A32mH1y@x13Wk802y awKWbIWtV5P0mV2U00GNmdWbq5_4OBuE23m@F1A0U@3G0G1bV1fG4utdK77iq25c7QYkE0D1 i0SgD0xBGyo@_2jF161@OX2_4mIJQ5G7IKX6OF1L6m8FaD0218yHm63eZDKHOWXWixe311MM 0RbEGYA2utq0JMWXWPqm804YGmdWDa5OH1CGC2Ez2WGo@UgyF8C2dUXJj6HUy9fGO2KWH8m8 06n8WPlxdc@8B800GZZU71D0io_WU5mWJlmfs2CgIO2i4q_x_DrN5nkgq0O581zHfXl0sGpX omR0hePGOuDWTqeL_C06Vc5565YHy@_Ub@8hn0ZsHieOaGK3J7PZw0n0KQyZ0sCQYc0U0zm7 HBir2Ii44V@t605ZytzPkF06PCZ5AR29MKOa@tJoz1m8ZIcdW703CQWy@_geFC61kUTWHmO4 uw556v@z_NVPTEA69aqytz_jFjF7W8jBG069SFt5Gpp1mluKRw1C82Z0ezW2m5@msUG4P10H L06e9_XjAW8I502QO40P1KWSu7si0IH9y3R11I0000WIUWWVXx803F924HX0ayM8m8420mVX 0XLV0EViqFGv9ww3OWXZt73G0H5OT3CnJW701yfH0utNd7002hr3_F0yhGMN01WolWQzWX3i h7O80B8GuWrw1zN80A88uWrw1yN80A80uWrw1@MW0B0CONNWl1GW0A0CONNGl1GW0A0CONN0 l1GW0A0CONNmV1GW0A0AONNWV1GW0A0AONNGV1GW0A0AONN0V1GW0A0AONNmF1GW0A08ONNW F1GW0A08ONNGF1GW0A08ONN0F1GW0A08ONNm@0GW0A06ONNW@0GW0A06ONNG@0GW0A06ONN0 @0GW0A06ONNml0GW0A04ONNWl0GW0A04ONNGl0GW0A04ONN0l0GW0A04ONNmV0GW0A02ONNW V0GW0A02ONNGV0GW0A02ONN0V0GW0A02ONNmF0GW0A00ONNWF0GW0A00ONNGF0GW0A00ONN0 F0GW0A008C2S7nWV30aa39eA228SyVG0Gqd0m3dZG8soC900mx0S185u3TBIV0Wy@zCp@UHd 109Wz1OUXk_020kZYg@0r_4y_d1cGFuiX3rZ0LTyBEKV2LHfwOuXAfE3F00uz6_iGa0LV064 YwOAgHeEJJ1Ar3GDOyBfKV0r44z0CYXGFWJ07e1r_2uidW7054__4eS30F021yz7GvF1F0C8 SxFWLu4U0y06@o9u3W3a6l@9mMr3mV8hUWG71IxBrTY3j54ZMt068awCEaWeULHv9rB680fE lWw9gxiBeD__n0Y@Ytw1tRUWDVZ70FXml_ITeu0Kn3002ow445uwr0m3WHCIz040GgJ002aw 340QNdB48yleUT6KGGg7401v4GWdW70E40F0O_L185npc7ysl00Y0W7011Nl8EU0G08ye6jP 0DRmD2Yd24GSy0f00eV1p34z90y1el2a78gB0020U08K8m3WWWmwJ3dGqd0sBqwC80le_GE0 XV1XwJ3NY04W128EEW2GmyWG@2WN0wJGS08a6G12AU023uXa1AWyEfE1S04wJmyH3GGBF484 z90y10F02A4wJWy0HT1000hRQuyAEW5G9y0uX7YM0m30Z0201jU0282w1u78ut0unzG74rD8 0L2F0U0ZV1tH30U0CYK0Car7O0JGFW11GWUk7Q3fk160kZYSW0Ce_4g2ZVxSW0C0DKKF83wR W03PGqYEGrDG010U02Ai620NlGHzWCW1@21ZomeU08G6GJ9rPu124DKKF0RCHqLIT6UG1HB5 r7m6SyB4CA3ZeGq1c7m122U@5KGq3k0UAHW2w0m0u50Sw5kQJbW3dYFfMl024ew3m1fKt0ry 4r38c_w9mJgFWPU2U0MLHKVY9CawIOidKd0YK4rZe25fE4Ax9r1W9E0U02Id2XWVjK845V@8 WWw14T2GwjGmJgB31iL3bj_0AOB4o0W0FHFWWu9w10BsQT1SGThF074vNsgHTC28rn00Rb5W 1n0y0k0OhO0g0d0iLC0LWR0gYw6u0CW_9gNG5AITBKtJgp0BUYw3FWXKNApzaw4MWleE7S0u eZ0z0_X5YE8g3G0r8GWdW70CPxvf0G02_D03108zMeWVi@LkMxw6W12yhjhJ06_YwGnGo5Am 1u1WJEfk8YXYSBo0acN4rDm1DQE3zAS04_jIgpm3_X_TyAbgZX7Kel12GpVqZcNhawCyW@el 4l2XHom8MSUbgZX7Cep12KpFqhVNXWHPO4HE7gO8ImVqNCNXIT1HmVelXN9bw3fW@etwkAXp V2U@pZ107WV3wc020E0H0KWcmd0D@aw2YX@eERSv9r723OyR504O3e30iGfkWOWXE1803Hgk 1UG0@2fw4u1002S71Yu1m3Hgk1U0B@cfGGuN894B@2xBUZwZ37WWF000tHP2WGx45Wd3YEL0 221W0M7jKKV0UCDqT1V2M8i42GeHGm8nC2Z6b1Z6p800E0_DWQz@ztwV0G1I@2Xu1u11qRJm 7Xsz@zqxV6_D652q5_8OV0_D503e_@qa2G40@VAJ182E@Fbf041Y@dcK0MmJg741aeU08H5a EYgz6zuPkPNdOI9XiVIT1FoGW7WXCawGPg8W70FD2z50UOyBG42kZ2oe071bw20c24T4m30W Gmll1F002kO0E00@kaS5AN0a22_50K80qF1_@Z126zlxZfN22BxCgbq10K00_2mNtuJ0m50M CmBSE2@QHXHTm83Co3610ulEV0iV1g7qzHm84O@0eouOOBDERT3SW1sSuq1mPuhN0_DB06y0 _0a5G708bMaEyFfGO1cy8380C10h0iy_5m4P456f0ZsaH0i2bYMH2TLsaLV1D@KnQuu1101e l1ol4w30_aG@1GVd019rJG2dm0aCA76zX_8S@@T@bxB7Z4aH8Pa@l7Oyh23MOV5ClGgBWaMI H9ajCMd09eGy_N728zI5XmVLGy@hZG9QOhdG2on8aOKhow@xrp_vO40D296z@z6b@5iF2xh8 r3GHhMa3ok5PWGy_7d18zg51nVHGy@Z3aKN181m960y59qLP3WJmbH2PaTCo2nAbG6RzXCG6 612ZAeJm28IkHme00n@t@az9m8qgFXm7tu1m3U9QYNN28S26_GV4cV02HW8bZH0ne@ldFxd3 Z4qeA08mPy@4rh099il2c79r5mIRfe4os6hJW5K8_q28mM5HOQ15OKY6swBiWSC2hq2A08xd 3Z0q8OPq@kF9_bm_88@YKN05bQQ1B8rYGCjW48mdfwyPrtWt3WNGBQBA4B_z9u1G2F1_0IWW 2neVPo891V0800MO9qF1_0GGbdBLd15m_Xsnv09amMF81y4y_t6PSE1w31wHMyWSWQq@0pdY _EG@JmG2w3XzpXHGPaXKV128Wa_@UifVE6rR016q8eOq@tx@z50c9il5aV0CCaw2O8D941PR ZCMGy@l3WXFM0kf6on8COK0Jw@xzb_1a91D216bZH_@UpjVtu31WJm_AClFqdHm3aw2Ge994 2PJYCK81X2CfG4cWG1a8Z2eF2rJ9rNWJ3lE1GePuZ0uowyZ5F80O0zFW_23aQq70pBawKOXG eF0uB0zFG_0PadKV3ADawI8014PK6v3zNay38f@lVGw7bH2q8WOq@tZrz7mcTZF40U0xdWyU ITE045wxWv1Yw1G4H5Y0PJnwMWW44@@vGgf9b6HP4GCA0J_@zCJ@eO4W6bGA1US@1WPtu31W 1m_88lFqdHpFaw20e0ifW2XWiXmwB0Gy240cfHYw9WaFqVGyl130KZFeFY_x9rnWICiF7od1 xh0@6OV74y0xJ1v3mwP446B2H@AGz0K61iU4E1kYWmqVel4pl0wVmzIOz0045@20H2W87A4M _50d80y2u00yoFqZONHGy@Z30EvNcBeG8yNiG42nxVSGsvYA42@D1n@VEuY8JTkc2XmVNGy@ lZDo0f8HF036D8O1q8MOKYCw3ZKXHAo80MnIHh8XuAxSD8mMnESk66GVKq70oR1z7eU8e@0m N8rfW2kW1eCIC6zAP@@UfdVCCw9rX1H1sxG1WO@3iV2pZ8r3WIJLa4oM3hNW2r3G02aUA5Hu lL0G0L9QOhhW2Yn8eOq7w3Hy@tzAdlOCYWw0AmywVWz9uU8fU0GweYOGs1W7CMN1880fFg88 _R0uX8rb0H0m4k0tY2X5idLV3QF0SPhexgWW248GX2neVhm821V0A0WMa4q1Waa0lP34mP_5 meQrNXs30N02Uw28Psu56yX_5I@0CHE612Z_@UDcVEn5GWb2qeE080jwhWzJOUBfU05RSW2M 8Xu2AeO32g0W0hIqm5RSGS16mjypXH4OKo64uIzLm_4eVS14GuYC8kW48SH86Nm120S0O2D6 96Z0fKq3OSyW0WP1YCw3Wx3HV0i@76Y2zPWyeGV0Y7M6z4rlG9HC40YCAZihi1Oo@l7Fv75Z g581Q4MCw@xHc_1WJ0m41xdWvVITGm4JH5KW2oU3hVm2z4G0WXtH0EywMOXeo2e0WaVKv4SW aqF0O2Wc0OV2C@7wJG_PgEZ2IAW0Idn0aUIX4GsIBZ0u9f02WgiIJZMOm7wJ8_7X10iF3k7W zDW@5OV62N1xFWw3OTN4aZA2nVLGz0gc2MN45fAXWOQ@AB2qt0xTmw1G8A_D@72y4y1m1B52 B@20JS0U1O00SvGe50F0m42FNj0Piu190aeV0o75z5WylW1Q1AM528oG0Go@lNpud3Z_GV5g @WzgK0wp70Rg13KO@5gPX04DgG68RoQ1f0dCDvq87ZAQW0rYVECAGZg0W0UdF0mKXzbmyVGV 0v7Jg70Y6L88aDPo8Xu3RW0ZA4XXDK0oo01wR0_8NZae_26nWptgnX3iBHhvyH5g033GM6Hx yveJOkHcmOxDkLsNeBivi60e9FuAZSqL6vQBDk56Rd0O00OhCaz5TL0K0008CZLsNP0WWxAJ iC0ImKtb6w63DVzcR@0S050XAbD7T0PemCNPWe8t8ZEWC5qUhEiH68ShCxKcSWOetQJPWWco ahCWeG3000NC7QqfDs0003z6tehCkHNBeBFuKcEWWkom3Tl07s2BDkrW2QG100000GgoCJPo L6vq100000P1uWqQBCdLsBK3koSM3Aa5W1S1DwE5W00u2SSxC02382X17SOBjn46TfvDtUnR ZHdoeh5pHdSABisw3m0kSMQC300000kOivcB202y2DmW6NGBK03IAOYQ08OEW2I9W2mvsPv0 CHS05OivcBS03Y3W2dbcPx0K0aeYAGzICS16GG3Cq04dU3TWOctgpDarW2cgCvONPoH7GgJI GzoF040Dwe3SwyYNkxEtvoSIRivuoSbv5@23PXrcNgBDmzI3KOetucRbPCwIpRkf3G6ZDlDN Pn3GGk09G6OW18Fjqg05n5rWBSX2SKHK1400000yYqSZCbXdBz9K04x800a_100WYC5L1H8c IoK8L4Y0m89vKBkAeaGLBn000CA3048300O8cUoK5H400W91D5LQ9eXi400000mJ710WYG00 0mM720WYZJW0CzqKIofZ00bT800Ir1000UQg8K5486xDtwKW0z8IJc29gq4JWm6NW1Ck8ZSW 16kKpDan6H0YRXfjownH5vaYaA8KzaKyXdNWKH1X8VuXGFHaiyX76zaKQ2amIDe0zy6RAZCN kfe0WqMPe3jtGMFdfCwy1FK54XOg8WC6R2Rkvq3TYXjleJPuH7GGhCfT6Qeh7HCZCbG4G6JP incfWBCZbcREhdOw0e0G56P8BDtw0W0tb6Pe3jU82Dme4H23RfT6twPCbv6TAJEVm3L2DGG1 CxDvq68kTK0149Dt0NTqH4GQBV038oPbXEHynKq9dqSxCWGtR0XeqC7Si9iy0nRk1YdOg84f 3FV1K0GeBFmLMF4XkoW7TY0as23UiL6tEZEerJCo14tI5e0WaaJWgAgC5LI99dE28Y0YNyXd t0OmSr9csIZEY0YT2ZjwKMFYOgw4x3W2yYFyu5pUZSjvJF15S6030f7G8YGrXEwUZRY0oQ05 C201GwjsKc8WuDt63RfDcr0f7W8oTIpDoysTkWjt6hSZ2u2QofCpwn9fvsC48u4HyPO04y2L 2zWG1UXgW84J5n7UUPa12u3Flq2m1ZEG0V0H10000u19gq4J_W7aAAl12GLIKXfYyHGZHdoO 34JrMOaZEZKtSfvDt0nLb9cvAJEsLcSuv5gE2eWY8Cur22qIPnfkqiJF3zsz66WgyWJPWCMT 48ywH2s1anWMOoPkoeJFtbMY14OkMYXCr83HyXd81WWKbP6vAREe1oO72S0PyXdH9aWSb56s 8BCq5cBhIGGg4Yy8n8m16OKY8WC915014UGbK_04G018yG5Y09iY0AGRfH6oOhCWCsRl2G0t wH6WG7P0X7VmpBKX8V0vBWHu3F2n7fAJOi12gIhDb12H2Zkm0284rGX1uH8VmpB2b0m1eY8V mpBKLh11REyGp1LCYH2L601G4xDoHMPahdOon8XK18ed08_3u0t0J94n7UOqJEXgvIZUbrZM Yn7y8aF62jmucRbXjNYITXv6wIZEvnpB@4GmI04qKm1R2ymW060avIhGW4OLOifkouvD08AE GXq480FKH4VWwjs78GQlrcoehCo1YLUZDw4sPbbCW5An5PO68Mb8G86gEv8NPkXEUU9HWCKN Gyi8W4A2FwKcSkbq01AhDuKcSXXkwaJPWa6t0P8bnsOIhkv_4O3mE4FV2e2Z23DoLcRGhiq6 AW36npBZ2aYbAZDsbcRR2iXbuvbO9_e1Z602FK5gY2bbu5w2Jix88u303e0FlGit8JU_mpV8 5m7500FeHdsOp7yWMP2ZCVm3TfXEsAZFJrcmaZEcLtS5bGWYQJCbH6PAZCGkAPXc0C0FlWMQ 04G1UeBO026@mXCG80SXHM685GaO494W2C7SXL5I1X0Gm526GanAB312828ZLkH14XEnEtm0 Yu3FeJEVm3TaTx11c3kmuMFYG6H09DW7mJQjvCGcZSZr3HUHC@8YFuv5wGcFyu5waBFWHu3F Yndcg3RqbMb56eft8JPyy2nyXd31K8D14kDeX2GCOzZ38ICm1FH09o0KA4u0r0J9P481pUpD q1oSdUG0HQ9cS2Au5a3I9mWV08ucW3G7PWi7W8bWSmT0FqZ04ZWWnp0M0aIS9543Q4mZJGE0 8yyoZ0Sy221H2amB8atA18XP4pQ822000G9rKN405S112AXCUUVu0_KITSfawE0m0wKITl0e WvuvbY0Iu2WAC68bOCUU9C14YIp0bKJT0miqmMPjOEw23Tp100eRCmroOnUbWv0mjSqAu6W2 0GRrXjMcB3W3oCYWYF8GBa56w23000mROhCoo001JbbJQPgYu4L000000L9raYQvA1b4Ln0S 0f6oA4100000GrH008j300008X00WQT400ujZ000tH800GN4100wZ800GY4200arH0001920 0msX00857000etb000D2900_XG100700W10AmBpL6sCxBt5sQAxhw0dBeXks0W2yWqDKHefO 2YHJ1osAK44W1KWdccXo8AmpK6Iga05L_miwShGX202PlH8sIZRhXYKspEX9784ZjqusQWe7 G8pRZLdsApDqvIOOZDNGNOdPEK4XGCb4dMI4fOsRa35x4cSW8jUWnEfnJO05m5sAhnB2iJQh ObK4R402iLQTnbveJUiL6NiBDpbcOIZjqGNUWe7G4B70Dq38YG4G_18YWcq8ZCbvc80H7G8Y 8WeFpgRfW3C7TXHEw4AgW3acPeyJ03I9Dp21m1pL6TIoDwKcSs9CsGX8azsR07G4MY1Cm0ZK wxk6CCmRknct2ZCWq38t2eWTuvbT4EW2AmZfeABCLaFSXEnUWw0xfG25BHWMcA9QLaE09cQ0 7Ux0aXU2JF95T0P4cP6CW16Oi386D401CAeca4JPH7GiIPoHcmSBCx02LA2BgqIGC9fZSYEW CMX75GX_KGGWite07ugYIoH8H5T0HCln6P72SGo07W6umpEWqaWaw89vKBOg8ZGbEWG6OW95 028qJIXeYaA5W3C2PpK001096uW78pvDsI3Px0YhIY8KXaE0v6OMAmX108mEWmaaSg8jWKHh 3O0Pi1Euj38n5qWWaBDXn6BGgCsONPq9jn23Bp56tch5pLcSIpiT0YG1PebEYKFL5d8gbN1G WCu8cnWPcc3e85W3GKH3v9f22L9z4dq14kzcRAJX_eGGwqCH1sJX4gCu0IbqHT4GWvIZjz59 mRrHdvAZEx02K2Y8YaaJ7r302Wn5PKMRxiV02ew9e63824bqKWYfWabEWGCsUpOhjpW09CbW 112SmA08Gede2LFrqh0GS5W1n2ymP2D86NePH05Q8eW21S8M04I4uXC4qu132GNPazXm@V8a 0qUpEb978R8Gms4I06Oe1Cu035wJ1yyoK1TK05KWdK5tX2y8K2N4G1UCQ1l5acBeLg844IAV I002Am3LhULGiYmS0r2LWT0501aCmEW2A0IpT5G1G0vvE3gep1_mZG5iGmxR4WAqIpSW0bmE hCWasS0fEtGMPoXioiJPiz6uQhCkHdB30eme04yUd1r1OmiH9G15K8R0KGKPs9jnARQ02SsR fTxe1cZjoK6SA04GQhEh226eYU1Se60DY7G39H78kBDsm68t9irA38r1NtI4e6GcJPZz6t8R Ei4cPZJHmD07a9G101anYEgWZyCmOlnctah7Z03CcP6pOcF8vjsAR8l4_Ae7_mJGK0DvKcPz GaaSxDf38YF8zBG12o7UAWJZd8fW20yINX4uBwIJRbHMxY8WD0KeEoCMZa0ZnMPz0rLSaYSZ J8c1EykmnYtRE9GW2Ekv4n03E9tGJEF9aCI6ZsuTV278iwepRx0IlD@dZmUNtm1P437Z1pCN t0thD8KzADpsiHwBFqzQ8Z1OIuhIG1G0PyLMwEuYQ_OOyLBkDuaqVMukL3U2eW1ONvLWAQWD c4RWO3MD27m2nu2Do14h250bPOP8K0B0ZBsm6GQh7s5650Yk5f8KWD8ZDWq093@44Xm6RDbH tS0XAv4cRpfjqe3TbHsc0RO6RufIWG8LPZ9joixHWEWZDyyEH8TPuJzK7O6Py1F11oeU5e7H kAl43W3Cm1FHKe593wAI9000fIB000uI10W5NI00qRFZ5000mcC100YC900ab920WCX000C0 01emZ0004p8000nC100mG0W10A0af500WI810GN4A00iU10C0G1exb000dl800SrB10WJ60W m4DerS50G9X0atOxjn3_6W08yI0005F400wmZ00W280m005WZN200OzY00WCl400fBcWfexD ZjsNeBjniMPobke1RAKmYb6ylP3Y16OKY8_y3W1pn2XQ41aXNXu605u3FfDGB24pbpacPYiG E1tLYGe0DS462Yf6HE20Zp1quqL2A3dXQ3A08KbMj14W7nyfH03M5eYi1OORW66602pDcSI3 EwkCmWHzNmPjz6ogZDbDdB6xjsyIQdvbqCZS@K7vOhdZ0EmSbLctSp5fvsBEBCoSMPqPkNSJ OpHcmYxhr5E0Ujn6J2hDmjJTWxBwA1eW1tB890343Cma3024xingwgWtc8mOZPIB07CNB1@c KWOYna51QmSmLco8h7oOIOQ3kTCNUkXiUU3SbvM705ukUcXCmOI5040jUaP203UAk0zuKGcY eW4rAJ5d01MXgqQ4WWU0A8pb3KYCpi6b1AvcXC3Suf4P6ICmXdLcxDib6PMf4PCJEvC001Z1 KWtgZEmL7TwHjvQSWWq4CupXCY0_0j1d8TB0HB76CugL1kgmB4Laww3f0OGihH0nN200iBZ0 0OVo400a0002rmWPuRub32wLjXu0AmBDLNfo8KkH1Bd_tHP@VKs@7bz@HP@VKsMZpdG0z5yQ v6bbfHzyHKKMZzaDnAPOg6O0XLWmJBPk46W1laXXPY1aNouOLw2U9J5q038lannoPmu6GWzw U6cY0Z7C4fDY8sYGZm6SuuYJw8JaoYI8FLUGLPuXEgAZSjb6t2ZjOrBySe@F7w@pX_@Sebd5 1YzX6f1SOEOX0A46RL4j3Vu99DT48V4LGO1CuBpI3RbDdN4pbI29udeQw4W0WGNPV2OGHH6S fA5Z2eYfeJktmF0PfDtDh40atS38FnaY8Y72vZEu99d0LLKj3p1QBCymKPkvCwGJFnapO36O EV0f803Moh0zCNT4hjqG78sLB41wPgws0W0_02Fv4SpWckSM3H0ubsK7RkSRP2QhEsqoSq9C wcBGF3SKOa5f81NsK0Gu1jH_A08yWco2ZC_m3TN6IG4aDq5m1uv5wk1e0yy2QJ1G050XdaBn OYY2C7SXzIH1496Ho2WWnBL1NYK3k4ndpBz8yIGskKcb3G8wI2g4OYxAnv802G7QovDwexQK 2ycSdvbpUpRdncoEBiABDGUlL7wgJCbDNP2JknWcBufDs4fyn7A888XHsTAJis4sSqfCvSXR bHdN8BCqL6TIhjoqMTiXkqUf3W6gqaXiCDGRbHcpahiuBFu6J2W7TZD3G1cxDpGdRXnkyCP6 W3mMOkviUABAW4UVa0XH7TIhjoqZCqeaP22CmKo204y3W39TSGJ0586PCfVp4qMPwvDtAJOa HcUWnaL0EmSq56veRCXnMPSZim8NFmy202AZjoqMPkXkv6JOZXco8hd2FJGOcPcm6ZEr56Rv 2OmB0BC201chinI1eXO1IO50AmsRkvCo2JUz0JE0BGiqE3Sr96OaH6m0JEh1eGw17eisWpSe z6vOxDdLMF2pjmmsRdfkoCPHqAO3Eci8w1Yf6JQ4L13nsR6RjLKYC2PbX23RXv6oAJkT0AeO 16CsRrnDwaJUz44cOoaXHTwR22UR59X9NTOJjtWcRky301ZNOWNqBDmv2UDJSGhgQ86PWP4X 5KrKhGhqWpA3z6oAR5CzsRMhEuMFOg8RZ85W7kMzXPHIWCY0oxgHSkgOf4WmO1EqkA4dh2H_ 87uhvaxR43gCp0abcT09DoqZ8ZPko49d64wSfWTl80Cbi3HyX9l56PIpjpmpBa9DxyX2yCN7 4NiBG1RFK0rcBCmbc8JwOGeP6GjmiJOpDMS04ilm2N2amK0NG1G0PLW3msRXXCKEf953S2BW uaOE1BWiN964ekmEJPWe3GEfCkTIVIP756381pL6TUoDcyMOaPemO3RY5cnM35cLdRfBL0KI PlkTAWTX97G6hEpHtRQRgoU5WWDs8WSln6Gw14kLsTF2emK25OewcBA08Wo9m06PknCpK3Pe 16r4pCY9dPOJCm0dSqHRwXct6JEYTNOGZcJ69e0W0oOz18HG14GgocJTiHdfAZEJbcUA3bp6 7eXj0CWBC54fEg8V9LHcgAcGrK5XgKs9KWCGcSXvEKEnOpLsw06eFM01ToLdoIP7AmpBRBaG HQ5GkoOJFYCNp34OEqAJPq9IwG74vW56RkoyoSq9FsApBizctMx5aLcP2hEsGdBZPkv49j16 21e0luZ2dP4x00FaZ418wb000Wx800aqE10WGD0WKYDOKW4k6c2WCLRF2fGxVNo5wQ3SW4qz VMdRW110_V0W@dZWDpHOG2Wbm5tUZRb1IX65a3m14ZjwwdeWP0CeP1DqMPa9jwQxSW2IMGYk DMupW2s2eXW5IGQkncqShiX5YOF02_L8Y0FYuKW6wKmXC5W8FW5250X_0Q8I1CIPcmAuGuNO 2UHSja0Aufk5UBqc1Peu4m3GKPjvDtc3To5s724yZ8954inP27eDu0P1X3O3CbG4VuHGA0I_ W9q6O24ndcEXZ0jqMPehCvE8qXN1OOMW7_DaW91Cun@6mc8_Ggo23RWGbqQhCWGKOeBC5kDe W0uCON0DIBmX05CWSfT6qepdd1ImRiL6oSPkZ1CuJI2M9uWaAH8N0Bs58aH4MuCB98YFJ5sm 211O0GcJkW0A8pWJ2CG1JHtR6RjlGNQZPjoaRNW3A1W0WGLQb0Gmd0FaZ0AK04Gw5mWe7NW8 _SqZZ8aA07yn4t8sSmP7UUfN2C220Y6nTPS22UH7b21CuO42kc81GvZHUJEGqqRofCGIZRcz MuU48jtSh7W34cOlfEw09d160dSlXiw63Tp12eOhCXDNP0HkoOMPo14nA3RlT7GOBDkjcEuH 8fwU01W0oRlIPm_P4iAL1rqH0KE1jPiKGOZHdoOpbOi8OM04yoKj9CveZPrDdqUpDdaY8DUs mS0UWioiJQZLcvS9Cp17UUP4Hu3Qqr5WA5EO0eyXd8hZ9fa20mH9n8SoHOX3WO0uU@3G7IgD Z5hi60g8FtpB3Em1VPBpijsTuerjuzJy3Zdh9vlgrA95PKEgncKKY9o3x4D6rRhbhmgVcVvw e9bwP_hSPl8xMtTJkoBtVPdc8cD96iQrE8EOPdvFhkhEgVTd7ieifW1SmiAAPcmiCwcbrUQJ j3dMfZizzuhReRM3IduladYQdDLVIrPgbyg6YqO7LeYgfQVcLgggj4MPiXDsCfHjeaaIsfDv 4N7VTqYMwPucguoH5jMrLVlpIwVfR7KUKuab5HDxPf5sfes7_wZQCc4uakrsTo68hN77cdUA 801K4mA6TaREbTJA_gtUt0hBXWRLrIbvLqgDEcf7SFpPdRaYA_kwEpO5RSVCSjueeZiHjroq HlGhQpjDmWn4eyuZyNiDxkTutlGr69d5MmEBKY1ZEqgUNoHryXEx4hOfD2yQSf6kweyArcPp anWPYwgGNSCX1c5qDyOSAgsgsQb4ZBMDcJCNvcRZe6zoj9Ih0uglKoA@gMRLR8odeozNuryQ oQRqpXPFMkrNlMdT4UAReVzBmqgEt67lscc9@fLfgdBKPbn1sGmRig0qmqElXXSO5hisakOC PvbRmg5TKWUrCj@ESYF_fAjKxvEwgfLPNGFeva8PqVH3bmM6w9mLdv2CRw0ixaZPtp9Ajaim rtnD_uKuluCdvdZEto2NvohBabSx5lxIYEVo5qOJgBlpLIX4qiMRCiPXTpQg1NeQs00rD3Xw LrKre_DVe3JOXhn8MScoApG4Iu@yUhqPUvcBSlf4egYEqJFNqowAoO1zmZ7chymdcqJ@csSZ 3MSXjWDtTnxlvoMTlJTsff9VKMpUhluzNUjxkUXBk818XG3OYH8@0aSU3EaXCoewKKnrjtg7 yoBH7YOaU4oeuqJg1Dqcbip6kZtJVq7@3_ucpjTsLPgfe6pB@g1@vSSNyCCyjsjzccxTu1NZ 0z2CLa4wXxWOKpsDyJ02IBN7pSDXiSwJiIfsqURkbjspGoXzXl5FAglcJhExHwpkUHQOJPsB zLm6FCYFkPzISas2euj_vKZQghsqKRDgdE7Kn6wYd_p4yeYmZFANvb7Yy98000m@0W500000 aY1100X@1m@9W3aW5e1F84cG5SXCi2Tu31n8AXJaYbe5l8CcHDSZSi6zu71oGAYZaa5f9F9K cILSbiiATvB1pOAZpCccWDB17P6L0DyiELXAOc7K2FYc5gHV9R_e3mHk0QsoMmZe6fen5bn1 8gZcLDDaAz0qZS87HSAdXT3tuI3qUZ7zfgbE0AgWrjAhp5Ymfx4XsH7QXDP86qYMmAMf1Q8D da0406j75UF000IpDW6yy0MWkbib78BueQfVQA821Jm4smhzzl0yWBi3ZO6Y2KO_Qi0SfRu9 rW0dijpg7zW3IJOOIEIOyPcKAYcq6jXJDalwNRMxRa0mXbcPNptcwWv1g3Ud9C037vk3_mnN 0BuVVQ6I0JYpXj0idtzOGhn9FizY74nMg24ez9WTZmwZ_vVwyV5K1wagpAz8cl0yUrGbYuP9 qSRtsnx0DW7Vn6E3WADy0r0NG5G1C63vICKUXFWJOCGubm8k1yOqnG4W5XPW4m8CS66G5qZC 6UnO8p45IdA8o0ZC3Z0A8WgqC867c9oBiWi0pGOuWFm7iRzPbHCGu41wndOK6bppz49kchPe K2u2Au3POx1Ou0O1eLXXHO4PN3bFK6@HSEdBWuQWMC4oiSEX0n0iaEbpbHpCaGfAOKCdD0eX 6MGcH3q9VozMO4AI5F1w462XA8ReAsG2WJz1_WDGTmIqY1C6FiB1Uy9rWnH3S3jA3PBG5C@J lWa9Ped_p4O57G_YjIEZcMIBq0cpX9kEeZeFGPKh_ZgH94Y9Kfa1XmMIhi4ukGOaIfJ2i1TM 8gocXUc7VmV8S@ZF0iGFHa286WBgZRPVIQkm@0LuXXpy22Xt52Dmhkdbf2KGmIuqMJC9fLGF VZ2x95DqJc1nMGEas8Cq6jJp8DEKU268IbMF3yG1g2M0i0BXYG1BW55J9kan2XSmyEcYyH5K CPk336yF7WT2DO3ps2gJO6nPoq0IsnGEKGCcQj7Jh_Za1M_Dqmm0QW60n7SWD9d9JtqkY5oS m8QWGHKq0msbeYR5P3UW7u43Gu_12ZYXCG6VHhsjTRaHnWa36w1_O0WvBnYyFbW7uuVG9K2e C5gbCDoH2P10mCWDWWK26g@q0MW@uc8aRa_BIRITYAVXEBRnPGESdq0CK3IasmHi4CXw9O8C 23ieQOrjTSJk7vXiQ3d93i8m05O2O_6qlGK10W738HZBPA024qais4h8mwFo2rHTa4XBZbWU 4smBO8O6V1qq2W2QK01573buO0BrMlW6y5C3DqRx4yXTuZk5a8AKDnG4g2QCq0G0xHYGZTqB wU2ACu6U6G2lTpWFWUt0Xwu3894_Kug0k2p22mYt0HCu508uB6Ce1O73aA0OXImVG9ePmmIG 80c53aFYxXgG1GKeLa9G906MTlEfDXH8HmmOuF0k4k261PO1mmYH8ns0I00C9_d0W98m9WOJ s0i56X448Hbt2OCOP8DfCc268CMof608uSAquV8Qupgf0238m2W060l23m8KN8GKE8OoHR2r XNGK4WgN0ACBQuiLFYgZ2aEXRWiOvnMD64DmZ38uZ5Y50lK3mAWAEGc8_J44BYV18Wj4389f 2i807dJp4n1148HUKjgv2Y0EK2s6Z7d1X31XCmjeQuBKDWoeXz3mYHX20aWDOcq6u3K0Q6e7 @1vGIMX1dOse2GEC9s3I7TZQ0ZfXv4upm1i1SG02IMG0VX2vYcIG0vHO8GdY38S_3938H@Xl 8og1eGH0e18ZwJo9a15NpOcWdHQi9dbI6B2kX5WabvaL8e9H_dCEz781z@xA5M3odtA8D1oH dKSDeSQ7zCG2AdR25keHYLom8WXOBaDo650MKJW2WXXaWYeH88K5u4E61ZT0w1OfF0t86K1y 8w4MfT2KErHSWF0hSUO0O0C6W5g2G1ZWgnEu4m1S1yJp3o3M3EWkH32aKS2QqOK8JA84ML@Z FWwOqO7uFfO4780MdoHZXfWEHK8VqVG1i0M0yg81@Zu00MomcuWgVi983gZ_64YnWDnO0zqV WPqxk2wZ33h1VYrmo0TTB2AWL5dO0g6G0NL_q@G50PWdbigCW0Zd7AYnan204mlyTEmai84P 1A4JWinAXKmGmGO2O8uRz3lZIX61dHZujmIqCu3o1uHT2raFnBXD@7pMQBBGdGw0LeG8444_ 60hJW804mE87u281K9ISF7v1E0513IC0SCPC6a34D94s2@Z7XPnS2nBVXDQ3650OAM@3d2V6 FbiWCWJj8MGL6D6lW7qQ5X0o08m8CBO9lLJ4q38XFmCH_i1eR_8eDkaR6s7bZf0WmLaGmNeE GDqJL3FZuWOmX140iSHyF0BackYG3m2rHZH0MNYG45qCY1_3QJo9d110aTxIWkt48u0C1c0k O3n0WZu5uByAq4I1u202mWIGAW5Wijson_9m9u53d804W8GIUhOus2OSL0GkFnE09G2YT00Z GOPa3mKlo@5D3BnXHdW2LE9MCUJFH2n0buzn0f0nmGFX645i@Vi58G6cAdM0ec440X_ebmZ0 AeEk6KGwHEIlW4W5HxesusKWC5K79BV1@9qAeHuYpSQgHIWi6TiS3D3XNjn2u1ni8G0oQ8u0 SnI1e2BHG1EeEe7e5e3U2U0y3uY8Y9GnTHE9JMRaDSFkL2q2u0ZX19NSmUOScl4R1T4Eq2BO HmcSAY6IxuQ2Q1qcB0qG2on0JBAa5SCcOdJC0FZxe3g@f11AuWk9oBi1ca42PYMWYc1X0ue_ MZ9B8tdo98W7n2XHRjKD@Fi6edY5TlsYIyeG1WSDPHMgGwqSnIW3yXmWmgmXOUy30A0161w0 SWxmgnIa1P3q4taFIHoH02NRzTg2OBGCqKHGsfykv07zV3Ex5OmCZ7X@00JuyVWTp0S6CvoI p034CtqHYcnIQGGkcdJQqgRBob1iGd0RJIhN73col7kXGtDHwaDeNOgN18B2wc1GZ3ge01Yw mIKPaaCGSwZJ83b3Z0e9EN1vJaDO2I2C1318SJG0Hfm0uEK8S5A4KrWY0YiH32lO2udU1and Lfr2t6PZxS0SGpe0yIZ0Pd7pn0Ox6m4XpkWBJ2HaiO0E6u3Mo5GuGvsSEXuSIdr05840COU6 Vk1HweEEC0rgCKh7IA3h0xyC0zi1G1WxpwP0zXGWcXP_nmYByE1SeVFetpI0X71akoGrOXWF mF456jExIW4SEGzGfmDu902Mtr1extX0Y1WjWib@54RYPHtm1u93eBu7Sxu9P4tNXz03DGMW y14T13Z1mRD0c1akLezoipA203N9B47eGBTs_H2cZlL8z2ipQ0SIvl8iJGvVGrWs021wKRNA IE01GfdGDu3036k2122DUC3358OpunG30jQEPPmzs1YF1_0_0S0a0a2CzXWZ380GfWTWKWh0 N1gou_A40AS7OL8GmtdYWUBX082T1g4UYf0akJZRT7jsh0nWV1p2_080_4CG8gJoBHrfNo0b XbDD0NhKicZudz6eBKQGrWU4VXDP64L0Ezs6nyDW0Ae4630eE2YP0yU7og0S6uBiC8VQEYM5 Gkjfb1R2B044746MH8a6u5Gu5rW2YvOnSJuVYTZoWIWdXmB83C4_4g5S040G2m4GXWCe4EJ0 @0b2K3w1iBizX7i70808W_WW011p1S5I0S4cS194zpFbw7dmN1c2w2s446u38_HWOM0cNc42 WT5yAo2wNupSyzFGBi1GSWP8XbS5F2s1S6_0qC879Eaap@WDWIi8HgRUOscYeOGqC0IGF4Tr i0fX35G2s0W2M79B53GT86GEGlWAW3CeU44Mtskq0QXvWQQWwGKW7AmHA9P6A2c_a4C2mJK2 mTGD081G0x2x2Iru1X9ez1JWBmSmSWkWk0e0e0a5f5LBo421uLm4WO0T1m0G2YOg2BzOrz@v V0C3loMc8moBXJ40c6IMeCWF8EWUYL@3fLY36NfCiOWQu9GVsudDeaaRJAKA802A5z4ePmP0 amO08m14D3ft4M0impqQgWOKmpGZ1Dem0BWEt480BmvXQ4lQSYLmx1YINXE4bjU0U3us16p4 OqN2NIWVWc0s3D811KgL8C48Y480NGWWmX40mYf8t8PHgnj601WGWV0m0m02392j5a@UFqB8 moFR05l2YXUdoX3Ml0Wg2qz8qOeEYC7K9pD@1I3KUYJc5S@yFuUadP1GYa0YN0bL9AWSEdK2 gQcOh0maaX612Fl60B3Z6c12Or7UUh58zaiGQbkAsCH1dguPKCK0QICp8j07mpk21XMmbY0U 2G3OFemqU0e0ttGWKnHajY0CnuVf6vWoVgT05N41g2M3S2S2Wnq6WD112RWn0@2RZ0Z4GSDf 7f1OJb0XLW6hA0NUpHW6_7G0OZxMHQWpGK01B@1Z1D3qkcZiVIWmpKFocmC0t0x0ZHwHM0m7 u6q7APGMWRGlWSWf0p0rX84OsDdvF0PmDGE0K0Q0BLo9q0ChsZu@u0TRQMWzeKoZ6x0V07eq 66WWQcWesw00CmJWflHLWQkv62C1q3S5ON0CWz0N0fW21eYW0c837C70BSyKMOk6j0QXp1n3 K1W7e2mD86mP8Hmxv9omE21qd42CA@70Cg7HRG8P506C8WtelJ69jYOKXiyEYGu5G50amvm1 4q0TGJ6O04UbbogX00SQs_t2hyYYKfs0uKZgO5za8Al1w9kH78G0KfnR312HdD0gIaAn0q0c 1K2G00aoWu73VpFWK0PGS0XMSnI28hkB8Bu4GJGVW_09IS1S1kI5FXHABgSmL0t0fW6X11E1 E1K3_2KtyZ9FAA0zvRbMJCGEELO48aHXKfE0fh1msc01d1OFw9B3S6Ug4UDD0RKJbq0YAU5j 1Rh9MC2u3nhaCOOGDp7mC9p921p2g3sKrJSTDGOA03ZSekfCj@1aWRJc6b58BG3G9WfJ2nF6 BW30M251QL@45gn1GMb4W5RMWQLsJd0z1u6_BDUs5eS8Ob70t0FWu1M3H0S082O74Ae0GT0k GQg1Y71H142mz4w8m@HpA6WX1C0B38zUFq2iO0tROWp0e0j153wiW0m637uBWOXe9nmo0W08 mI36j3384C482jaiQmjmS5XctAL3I3XsqKV2GDigbhLn0oGJ0YbnHpJDQL68DO7Ksm6OPWHB mAiHnJviC0C69GypcsRMuXWL0uA6W0AJ1C6mWA0qpoWu7xXWZW9XVW71Z09u624hc4OYzY55 RiW2JsJt1a2k0uSRv6Fu8m1m1mtmIWLfn3s0F4m5CnT4b6Gp4i0JNxaobN0Ddf1W5Qw6WCA8 sbrpVsBWMWn0I3B4i3A0qz46eS1imVm1t3Y72m2E6M44DC3q4u1B1110O1x0o0I3EUX40ijV K0mEenxphHLD@dsC4hLubBNjRjsoLMjjkn0U4A04xE5WoH9WRGvqqoF1A5_026A2y4q389G2 WaBbMCM5bn2n2q5_5yBeBu4GJR9hJ0Y0Y0v2V1A6c7u3K1WsQ594c04B7CmR4COB1G5KA030 O070WGVWJXJ1vW0W13Y5eC4BWGmGZVGZ0J1r0l0s18306O0GFm6O2SQA1Wc1x0@1NPpW12BH Whg20LG62C0i0W1G2j0e186y6u4EAuDmC0D0x030O1bPC0c7qC0AfJW2y8ap6LtWmXnI8_ne LHv430L0L0_muCF5smUAD3Q6A0yfWFbC66hOiTOG2wmuMF2eSoNWWeYAFkEyTiWOH20n0P0n m5UnE8h8DuJ25o6oCaNa1979JIUI6bSbCBvBPOoPogE280mE0C0m1Gog00mJM900yn400m00 40cN2008Xa00WB8500QO0060e09v4KgYgfGbK9nfZ0mKr9csIZkYe9mSq9dqSxCW0280u@@7 0W0000mGD05eG3gC00201fom6Rln5NS1891YmQ3aIJP08geo007GX6000W0o00BugmS3TWGd t01Ei5MU0v7G0Y2D00LKfK04I4W1GnMOo3acKcRrj9W2b2a000Gbq0I0Ck02GQgEiHNQ70Nm M0Fa6m5Yn5GACc0WCLP76JGQ0cG6N018CL4Y0XAbD7Tb1OHQ08mgtO3TXTcoq14bKZBanCGO 58Ae106ITo9doSZkK0GGT11IM06WgoQ3SX9dmehEoL68t0OWnAZDpbMTcJX60GJrrQ0200Wf SbCwqXW1cQCvy6Rib7W1cZkqusPWGet2ZSa1YYe3Db9dRAZEGAPWWT1AuJs38aSlvkvABNX6 SNPYz0E10vkqG7QWCDh1I2A5I3WWi6QO002yaKWC0W696OWXGxDlDNP0XEqK68DfCtgR5W2m KH4PEG2ZSb12nOBDkjMQSxCGuYBk4Jm1X1iWte3Db978U2EwQ9W0qz686xjsK68lfEw0PA02 wM81ILdRSBDtS600000IYRs56sIZCWiKPo345q000SpG1J7SWYSZEb978owjw87831jtIpOb 1o0054um1P5O00000180090K000uV@300X0yHc3Gy201cwgOe38D9iqSxxW20003bxm1tEWG i38C2m16340000NrDX2T6a0aI3awCW00N5sF66qV11_100o6uW98K84W2s4GXG0COA1423W0 rDsOARkvOMTiXjy0XSb5dwARkDF8GIG1Ym8ZCo1Y2B8GWfeBCqbsOf0WWocREw020BHWmD08 G700004b7t2hjf0W0000GM07y3W2q100K2PkS002B3KG80CC001n1GWIcB190J2I0cIKI3A4 202Afk4aG9rL2W1X0W0UYfaG0AGI4naY00000Gf30C1gQJEWCbT630016Wl2O00k0W60OW0E vG130Cgl0000S00E00Ay75@X2IKnVg8XHc01a9cDIgAH05054q21uGaW0001H4E0058u34e0 18u32G00e0300014G02800m0300024GW01uJK9f8V0WG@1404ACHbaH29eYiKCOW29_34dKa YAA7yeKII2c04N25O0RIII9P33IA9fu10in60000Mn60002K8YW0WY10800192AGG014L2CG caaNG_ml8YG4_zNP04mdW2IGYydW2I4SyNIIAfWyN298X0yHG9b4z_318WmV08e@440W0eW_ H0@X0A498@04G02e@8032ul@802GyNU04md@IG29O0V2AAXurVI8ZKOaH99faYH01yd02u70 14G_v3G048Vu7Wm1G@C6AGW2ZT02W3X34MK9feX0mV15404W0801808eWy704GW0401014W0 2804W0800GG5LK1l@G2H4X3S8Y8412CG29ey7EKXAgm04_5X04W1I9bKyvF4G01u10Yw3G00 2W8g70y74GX800GG@180u31OG0yu314G0Uv1G0SuZ2KG12GW2AW1Vy1128028H5ge244y3H0 24U04GWWFE01GWm1U0260n3HG12KG43G1Aeu1HaH5c82W10Sm15S000G2PO1030y@00@F0mV 0qK0HAW83GG1aB06O5A40G004402B0009b56S09CtkTY0XDsQ0Pitm6RfjE31RiG0GDC0040 050GGUD6eCv2Bb82qqRk9DwUZSV1JiHBa2G3vtSGA0DO00O00m00W10W90E080420410Z009 0e40O20d00K0GA0e20M10i0GB0m50y20m0WO0WC0C30e10r0WD0u60W30v00T0mE0m30w10_ 0mF000O40G40c0022m40WO061044W90WG1C108CWH00n1O208W0J00Y4O40Ge0c002Bm40WW 16104DW90WW3C108UWH0014O20841J0029O40GC1c002Km40We26104MW90Wm5C108mWH00H 6O208e1J00YDO40Gm1c002Tm40Wm36104VW90W0Siy0H4HiVR2w1Y014G0ZOPW@@N028W06O W1Cm@@F0W18W02Gm@@F0G2O012U4YWmX4vNB321e0@3G0_@V1A581@@F1Au@@Pm1@F0G2G8X @70eXs08ea05I9W0@@@012mG91Cu@@10F0W20e00A40000010000W0008zX260W0M2p1kZbm uWxwAg4oK64tc3UaUg1NDATiqDQbanJPGqsEGASvEFUaUr07ni9zbhW9RJGly5B@Ee5uUUaw uN8H64tg3v11igXauoTUU7al8iFgfj6hZykRJKrIDwFkGJFeLmaj90CghXCzodOzpkaBJHFn L0e8RsOmOZfd7qNzDWW6H64kjZNW8DcGUGWfQvYpPY6Do7W77HD1Mg@2rWqhfM5Ab_eMhQO3 JoAarIUtj1K_yYrnP3soK7k_k8FtWruEhU4zgi2ciDXE0uje0CANZi523wVLBzqAaH8siMbf ArzPFKQlmrJS90A80n2_YiPp0Z99TB4xXuxjN41Je1hLxGO1tZMCpMG64tipWuiT0y24fnaA GKjtJiGn6t7grM3KAv@wpPe6keBgaF0FqaF0UmHKbWbO0J72tkDec@Qf7jXmbOZi850NZnSw ZoQh9cmOZ3O3JPAq908cyjhI3OpUb6WD2cU88uL8_XwPSsmgCeItjIeESzTHyXOku@xEqjO9 f5jhmyyDD6BZ9KlFM2JscuSKrI7w00lZAEOsbQ1LwtKwwAXTFjXue9r_qRjfLBTfD4@osDQO 4YdfLen5OQFdM8W8btn0cvBceWg9Zl6w6FnL0eKD82S24WO1VP88C8vIg5QNDh2V349GjPoz Jo5cpE8Vlz2c9djK41JG3BjGzwZTHFpAh0R0jki3kwzMjock06a1XRxsQsVr43YRh1qKQnIN EEgQrzwTIhpACns4C8BuUEIimO6dmTG6b_GjsQ0gQf6zMuPEGUd_FX9TYh0GXOzq1zHa9V0U IFA2E4Dv5W7_JO3IJNN9cxN_Cb1OSiXjCSk1hnDxs0r_3kLcEHQfdsWWPbqzPlvxSpN_lxB7 7oNtUHrS4MmW_eMpQ@cKqXICXn67I9@tUA_piRqdvAUDLt6KhVMo6oYasMf1inq6AuLxLo0s 06z8883@EO_kglT6glpHtYHU_c6ZOSMXji66qCU1gqlf4R47QILfxOWP3Sq2sDNB8W8lma2g YlxehYHP1zAhaqYsLGWQpYhJ@tr27ZdXkMBwPsOf3NvzMmIOosa9oF6svSKgLd2ciD1ag19W pViX3hNepEGEJS50AGGbyRbKGFS5dhh4hzmP3somcSKQ9rWlLhyRV7ty5YltU1KBzqCK8nHT yuRskHZR3gjFQs2_6uMC9Nx5_TmwjxEojOOEjG0Hmfs3_NvTOWPSPX0Ym@UMc7JpLYX@q_Vj mKqpin2y4d2WwEfRuQKD81SIuPDGEXnapErzM06eRw8fbqskpDVeaQHpLkrYrPRc5_68ml3s kPANnRg5ppTzsVFBhZI@Vr237altUfemwIPOcqiJPgHfb45O3qqTI3STpfuAlfoldbjHSHFc DBkKACY9m6efBANnRgS3VNWMXw836UZlLWMDwT1Q1e000G62W0ua0Cm0p00E86Pc1DrOZRm9 719qG8g8Z24q061GQSpC0uKGE10t2ZR00JI098Cn63PbPMI0405tg3Rib2000ca16HIkPcqS BDqb700000uKOE5cJOWNl000xw900OXR10G20W4f22S1000GIJvfMm1EraZMY1WE1OujD200 00W4W0O0W2a5G0C0010wHWY0e08ECGH0K0rm7eiUA0Xk4K4040Q96B2W2GurN61G1AhvcZ0W 0Wy5e4G80000epEak92028AbQeDX0000LEEXHK2100Wq3Ynhr2100eX9rl6662002_DoRuWC 40W2x2l2DsD40Gs9drMmMT80qJaWXSi2tG0neQnh3lM1HWwTnPDvQO9YaKrDPWdX7G4PlI2@ O1qIj4XsEpMU3X7r9g00000o0000GV0CA42n2OWBSh0rMBkcqewb@FfRWdmHJoq1Oo79t9eM uvtvyNtFfYwuLYOV9PbcJyCpfGjwHOVIvedJf7Hz@WIbfJNoupGGtjKoGlXLoGX18h0yh50@ YFlGWNFP4S7b103Aa000GS4000u5Z@@NAD8W39200K8X00WQH400OHY000uT800OW710m004 GrTPM4YCJCb4007eIR100oQB00GNR200LjBpcfAY0uNd2egggILwdJ00C00W0W10G0up5008 0WY38O003WyS10040W800m008020K81040XNV108yA10504Uz90WmJV10A000ah080Mw500m JF100cqB0060020dN01JLD8300W0P0004CJ0u0W60090K0K30W40A0i10G2050t0081W20S0 0a0G1GE00I0e0G70090K0i30W40A0u10G2050z0081W20V00a0G1mF00I0e0080090K0440W 40A0420G205031081W20Y00a0G1GH00I0e0m80090K0S40W40A0G20G205091081W20b00a0 G1mI00I0e0W90090K0q40W40A0S20G2050F1081W20e00a0G1GK00I0e0GA0090K0C50W40A 0e20G2050L1081W20h00a0G1mL00I0e00B0090K0a50W40A0q20G2050R1081W20k00a0G1G N00I0e0mB0090K0y50W40A0030G2050X1081W20n00a0G1mO00I0e0WC0090K0K60W40A0C3 0G2050d1081W20q00a0G1GQ00I0e0GD0090K0i60W40A0O30G2050j1081W20t00a0G1mR00 I0e00E0090K0470W40A0a30G2050p1081W20w00a0G1GT00I0e0mE0090K0S70W40A0m30G2 050v1081W20z00a0G1mU00I0e0WF0090K0q70W40A0y30G2050@1081W20010a0G1GW00I0e 0GG0090K0C80W40A0840G205052081W20310a0G1mX00I0e00H0090K0a80W40A0K40G2050 B2081W20610a0G1GZ00I0e0mH0090K0y80W40A0W40G2050H2081W20910a0G1ma00I0e0WI 0090K0K90W40A0i40G2050N2081W20C10a0G1Gc00I0e0GJ0090K0i90W40A0u40G2050T20 81W20F10a0G1md00I0e00K0090K04A0W40A0450G2050Z2081W20I10a0G1Gf00I0e0mK009 0K0SA0W40A0G50G2050f2081W20L10a0G1mg00I0e0WL0090K0qA0W40A0S50G2050l2081W 20O10a0G1Gi00I0eWtnCemi260u@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 @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 @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 @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_V00q1; BOOLEAN NVMPROTECT_ALL[6] = $00; ENDDATA; DATA NVM_R; INTEGER NVMDATAIDX =0; INTEGER PAGES =0; INTEGER INVMSIZE =0; INTEGER INVMOFFSET =0; BOOLEAN NVMADDR[35]; BOOLEAN NVMDATA[1024]; INTEGER NVMPAGEADDRESS =0; INTEGER NVMCRC =0; INTEGER INVMSTART =0; INTEGER INVMEND =0; INTEGER BDISPIAPUROW =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 ( ! (ULNW1==1) ) THEN GOTO Label_7; PRINT "NVM block 1 Write protected by pass key."; Label_7: IF ( ! (ULNR1==1) ) THEN GOTO Label_8; PRINT "NVM block 1 Read protected by pass key."; Label_8: IF ( ! (ULUFE==1) ) THEN GOTO Label_9; PRINT "Encrypted FlashROM Programming Enabled."; Label_9: IF ( ! (ULARE==1) ) THEN GOTO Label_10; PRINT "Encrypted FPGA Array Programming Enabled."; Label_10: IF ( ! (ULNC0==1) ) THEN GOTO Label_11; PRINT "Encrypted NVM block 0 Programming Enabled."; Label_11: IF ( ! (ULNC1==1) ) THEN GOTO Label_12; PRINT "Encrypted NVM block 1 Programming Enabled."; Label_12: IF ( ! ( ( (ULULR==1)&&(ULFLR==1))&&(ULUPC==1)) ) THEN GOTO NO_PAGE_PROTECTION; PRINT "Device is secured with a user pass key. Any secured eNVM clients are protected by pass key."; NO_PAGE_PROTECTION: IF ( ! (ULNC3==1) ) THEN GOTO Label_13; PRINT "M3 debugging capability has been disabled and is protected by pass key. To enable M3 debugging , you must either change or remove security settings."; Label_13: PRINT "========================================="; ENDPROC; PROCEDURE DO_QUERY_SECURITY USES DO_READ_SECURITY,DO_OUTPUT_SECURITY; CALL DO_READ_SECURITY; CALL DO_OUTPUT_SECURITY; ENDPROC; PROCEDURE DISP_SF_USER_ADDR USES GV,NVM_V; IF ( ! (PAGEADDRESS<2048) ) THEN GOTO NOT_BLOCK_0_USER_PAGE; PRINT "User Page: ",PAGEADDRESS; NOT_BLOCK_0_USER_PAGE: IF ( ! ( (PAGEADDRESS>2047)&&(PAGEADDRESS<2112)) ) THEN GOTO NOT_BLOCK_0_SPARE; PRINT "Spare Page: ",(PAGEADDRESS-2048); NOT_BLOCK_0_SPARE: IF ( ! ( (PAGEADDRESS>4095)&&(PAGEADDRESS<6144)) ) THEN GOTO NOT_BLOCK_1_USER_PAGE; PRINT "User Page: ",(PAGEADDRESS-2048); NOT_BLOCK_1_USER_PAGE: IF ( ! ( (PAGEADDRESS>6143)&&(PAGEADDRESS<6208)) ) THEN GOTO NOT_BLOCK_1_SPARE; PRINT "Spare Page: ",(PAGEADDRESS-6080); NOT_BLOCK_1_SPARE: LABEL_SEPARATOR = 0; ENDPROC; PROCEDURE READ_NVM USES GV,NVM_R,DO_EXIT; NVMDATAIDX = 0; PAGES = ((INVMSIZE+1023)/1024); NVMPAGEADDRESS = INT(NVMADDR[34..21]); INVMOFFSET = INT(NVMADDR[19..15]); IF ( ! (PAGES>1) ) THEN GOTO VALID_SIZE; PRINT "Failed to read Embedded Flash Memory Block (EFMB)."; UNIQUEEXITCODE = 32908; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; STATUS = -55; CALL DO_EXIT; VALID_SIZE: INTEGER IREPEAT_0; FOR IREPEAT_0 = PAGES - 1 TO 0 STEP -1; IRSCAN 8, $b8; DRSCAN 35, NVMADDR[]; WAIT 3 CYCLES; WAIT 20 USEC, DRPAUSE; FOR NVMPOLL = 0 TO 10000; DRSCAN 35, NVMADDR[], CAPTURE BUFF128[34..0],COMPARE $000000000,$400000000 ,PASS; IF ( ! (PASS==1) ) THEN GOTO Label_14; NVMPOLL = 10000; Label_14: IF ( ! (PASS!=1) ) THEN GOTO Label_15; IRSCAN 8, $b8; WAIT DRPAUSE, 100 USEC, DRPAUSE; Label_15: LABEL_SEPARATOR = 0; NEXT NVMPOLL; IF ( ! (PASS==1) ) THEN GOTO NVM_READ_ECC; IF ( ! ( (BUFF128[33]==1)&&(BUFF128[32]==0)) ) THEN GOTO NR_ECC; PRINT "ERROR: 2 or more errors found on page: ",NVMPAGEADDRESS,"."; STATUS = -39; UNIQUEEXITCODE = 32905; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; NR_ECC: IF ( ! (BUFF128[3]==1) ) THEN GOTO NR_WC; PRINT "WARNING: Write count threshold exceeded on page: ",NVMPAGEADDRESS ,"."; NR_WC: LABEL_SEPARATOR = 0; NVM_READ_ECC: IF ( ! (PASS==0) ) THEN GOTO NR_CONTINUE; PRINT "Failed to read Embedded Flash Memory Block (EFMB)."; STATUS = -55; UNIQUEEXITCODE = 32906; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; NR_CONTINUE: FOR I = 1 TO (32-INVMOFFSET); IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $b7; DRSCAN 35, $000000000; WAIT IDLE, 3 CYCLES; WAIT IDLE, 10 USEC; DRSCAN 35, $000000000, CAPTURE BUFF128[34..0]; IF ( ! ( (BUFF128[34]==1)||(BUFF128[33]==1)) ) THEN GOTO Label_16; PRINT "Failed to read Embedded Flash Memory Block (EFMB)"; EXPORT "buff128 : ", BUFF128[34..0]; STATUS = -55; UNIQUEEXITCODE = 32907; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; Label_16: NVMDATAIDX = (NVMDATAIDX+32); IF ( ! (NVMDATAIDX<=INVMSIZE) ) THEN GOTO Label_17; NVMDATA[(NVMDATAIDX-1)..(NVMDATAIDX-32)] = BUFF128[31..0]; Label_17: LABEL_SEPARATOR = 0; NEXT I; NVMPAGEADDRESS = (NVMPAGEADDRESS+1); BUFF32[31..0] = BOOL(NVMPAGEADDRESS); NVMADDR[34..21] = BUFF32[13..0]; INVMOFFSET = 0; NVMADDR[19..15] = $00; NEXT IREPEAT_0; ENDPROC; PROCEDURE GENERATE_NVM_CRC USES GV,NVM_R; INTEGER FEEDBACK =0; INTEGER IDATA =0; NVMCRC = 0; FOR I = INVMSTART TO INVMEND; IRSCAN 8, $ff; IF ( ! ((I%8)==0) ) THEN GOTO NOT_NEW_BYTE; IDATA = INT(NVMDATA[(I+7)..I]); NOT_NEW_BYTE: FEEDBACK = ((IDATA^NVMCRC)&1); NVMCRC = (NVMCRC/2); IF ( ! (FEEDBACK==1) ) THEN GOTO FEEDBACK_NOT_ONE; NVMCRC = (NVMCRC^INT($8408)); FEEDBACK_NOT_ONE: IDATA = (IDATA/2); NEXT I; ENDPROC; PROCEDURE READ_IAP_UROW USES BITSTREAM,GV,NVM_R,READ_NVM,GENERATE_NVM_CRC; BDISPIAPUROW = 0; NVMADDR[34..0] = $107ad9000; INVMSIZE = 160; CALL READ_NVM; INVMSTART = 32; INVMEND = 159; CALL GENERATE_NVM_CRC; IF ( ! ( (NVMCRC!=0)&&(NVMCRC==INT(NVMDATA[31..16]))) ) THEN GOTO IAP_NOT_USED; BDISPIAPUROW = 1; UROW[127..0] = NVMDATA[159..32]; IAP_NOT_USED: LABEL_SEPARATOR = 0; ENDPROC; PROCEDURE READ_UROW USES BITSTREAM,GV,NVM_R,READ_IAP_UROW; IF ( ! (BDISPIAPUROW==1) ) THEN GOTO SKIP_READ_IAP_UROW; CALL READ_IAP_UROW; SKIP_READ_IAP_UROW: IF ( ! (BDISPIAPUROW==0) ) THEN GOTO SKIP_READ_UROW; 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[]; SKIP_READ_UROW: SUROWALGOVERSION[6..0] = $00; IF ( ! ( (UROW[5]==0)&&(UROW[0]==1)) ) THEN GOTO Label_18; SUROWALGOVERSION[5..4] = UROW[24..23]; Label_18: IF ( ! ( (UROW[5]==1)&&(UROW[0]==0)) ) THEN GOTO Label_19; SUROWALGOVERSION[5..4] = UROW[24..23]; SUROWALGOVERSION[6] = 1; Label_19: 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_20; FOR I = 0 TO 7; TEMP = HEX[I]; HEX[I] = HEX[(15-I)]; HEX[(15-I)] = TEMP; NEXT I; Label_20: 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_21; PRINT "CHECKSUM: "; Label_21: IF ( ! (INT(SUROWCHECKSUM[15..0])!=65535) ) THEN GOTO Label_22; 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_22: IF ( ! ( ( (INT(SUROWDESIGNNAME[0..30])==2147483647)&&(INT(SUROWDESIGNNAME[31..61])==2147483647))&&(INT(SUROWDESIGNNAME[62..69])==255)) ) THEN GOTO Label_23; PRINT "Design Name: "; Label_23: IF ( ! ( ( (INT(SUROWDESIGNNAME[0..30])!=2147483647)||(INT(SUROWDESIGNNAME[31..61])!=2147483647))||(INT(SUROWDESIGNNAME[62..69])!=255)) ) THEN GOTO Label_24; 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_24: LABEL_SEPARATOR = 0; ENDPROC; PROCEDURE DISPLAY_UROW USES BITSTREAM,CONSTBLOCK,GV,NVM_R,DISP_CHKSUM_DESIGN; IF ( ! (BDISPIAPUROW==1) ) THEN GOTO SKIP_IAP_DISP; PRINT "IAP USER ROW INFORMATION:"; SKIP_IAP_DISP: EXPORT "USER_ROW", UROW[127..0]; PRINT "User information: "; CALL DISP_CHKSUM_DESIGN; IF ( ! (FLAGDISPLAYCYC==1) ) THEN GOTO Label_25; PRINT "CYCLE COUNT: ",SUROWCYCLECOUNT; Label_25: INTEGER TMPINT =INT(SUROWPROGMETHOD[]); INTEGER TMPINT2 =0; INTEGER TMPINT3 =0; INTEGER TMPINT4 =0; INTEGER TMPINT5 =0; IF ( ! (TMPINT==IEEE1532) ) THEN GOTO Label_26; PRINT "Programming Method: IEEE1532"; Label_26: IF ( ! (TMPINT==STAPL) ) THEN GOTO Label_27; PRINT "Programming Method: STAPL"; Label_27: IF ( ! (TMPINT==DIRECTC) ) THEN GOTO Label_28; PRINT "Programming Method: DirectC"; Label_28: IF ( ! (TMPINT==PDB) ) THEN GOTO Label_29; PRINT "Programming Method: PDB"; Label_29: IF ( ! (TMPINT==SVF) ) THEN GOTO Label_30; PRINT "Programming Method: SVF"; Label_30: IF ( ! (TMPINT==IAP) ) THEN GOTO NOT_IAP; PRINT "Progarmming Method: IAP"; NOT_IAP: PRINT "Algorithm Version: ",INT(SUROWALGOVERSION[6..0]); TMPINT = INT(SUROW_SPEED_GRADE[]); IF ( ! (TMPINT==GRADE_UNSPEC) ) THEN GOTO Label_31; PRINT "Device Speed Grade: speed grade information not available from device"; Label_31: IF ( ! (TMPINT==GRADE_1) ) THEN GOTO Label_32; PRINT "Device Speed Grade: -1"; Label_32: IF ( ! (TMPINT==GRADE_2) ) THEN GOTO Label_33; PRINT "Device Speed Grade: -2"; Label_33: IF ( ! (TMPINT==GRADE_3) ) THEN GOTO Label_34; PRINT "Device Speed Grade: -3"; Label_34: IF ( ! (TMPINT==GRADE_F) ) THEN GOTO Label_35; PRINT "Device Speed Grade: -F"; Label_35: IF ( ! (TMPINT==GRADE_STD) ) THEN GOTO Label_36; PRINT "Device Speed Grade: STD"; Label_36: IF ( ! (TMPINT==GRADE_4) ) THEN GOTO Label_37; PRINT "Device Speed Grade: -4"; Label_37: IF ( ! (TMPINT==GRADE_UNDEF) ) THEN GOTO Label_38; PRINT "Device Speed Grade: speed grade information not available from device"; Label_38: TMPINT = INT(SUROWPROGRAMSW[]); IF ( ! (TMPINT==FP) ) THEN GOTO Label_39; PRINT "Programmer: FlashPro"; Label_39: IF ( ! (TMPINT==FPLITE) ) THEN GOTO Label_40; PRINT "Programmer: FlashPro Lite"; Label_40: IF ( ! (TMPINT==FP3) ) THEN GOTO Label_41; PRINT "Programmer: FlashPro3"; Label_41: IF ( ! (TMPINT==FP4) ) THEN GOTO Label_42; PRINT "Programmer: FlashPro4"; Label_42: IF ( ! (TMPINT==SCULPTW) ) THEN GOTO Label_43; PRINT "Programmer: Sculptor WIN"; Label_43: IF ( ! (TMPINT==BPW) ) THEN GOTO Label_44; PRINT "Programmer: BP Programmer"; Label_44: IF ( ! (TMPINT==DIRECTCP) ) THEN GOTO Label_45; PRINT "Programmer: DirectC"; Label_45: IF ( ! (TMPINT==STP) ) THEN GOTO Label_46; PRINT "Programmer: Actel JAM Player"; Label_46: IF ( ! ( ( ( (TMPINT==FP)||(TMPINT==FPLITE))||(TMPINT==FP3))||(TMPINT==FP4)) ) THEN GOTO Label_62; TMPINT2 = INT(SUROW_SW_VERSION[]); IF ( ! (TMPINT2==FP33) ) THEN GOTO Label_47; PRINT "Software: FlashPro v3.3"; Label_47: IF ( ! (TMPINT2==FP34) ) THEN GOTO Label_48; PRINT "Software: FlashPro v3.4"; Label_48: IF ( ! (TMPINT2==FP40) ) THEN GOTO Label_49; PRINT "Software: FlashPro v4.0"; Label_49: IF ( ! (TMPINT2==FP41) ) THEN GOTO Label_50; PRINT "Software: FlashPro v4.1"; Label_50: IF ( ! (TMPINT2==FP42) ) THEN GOTO Label_51; PRINT "Software: FlashPro v4.2"; Label_51: IF ( ! (TMPINT2==FP50) ) THEN GOTO Label_52; PRINT "Software: FlashPro v5.0"; Label_52: IF ( ! (TMPINT2==FP51) ) THEN GOTO Label_53; PRINT "Software: FlashPro v5.1"; Label_53: IF ( ! (TMPINT2==FP60) ) THEN GOTO Label_54; PRINT "Software: FlashPro v6.0"; Label_54: IF ( ! (TMPINT2==FP61) ) THEN GOTO Label_55; PRINT "Software: FlashPro v6.1"; Label_55: IF ( ! (TMPINT2==FP62) ) THEN GOTO Label_56; PRINT "Software: FlashPro v6.2"; Label_56: IF ( ! (TMPINT2==FP84) ) THEN GOTO Label_57; PRINT "Software: FlashPro v8.4"; Label_57: IF ( ! (TMPINT2==FP85) ) THEN GOTO Label_58; PRINT "Software: FlashPro v8.5"; Label_58: IF ( ! (TMPINT2==FP86) ) THEN GOTO Label_59; PRINT "Software: FlashPro v8.6"; Label_59: IF ( ! (TMPINT2==FP90) ) THEN GOTO Label_60; PRINT "Software: FlashPro v9.0"; Label_60: IF ( ! (TMPINT2==FP91) ) THEN GOTO NOT_FP91; PRINT "Software: FlashPro v9.1"; NOT_FP91: IF ( ! (TMPINT2==FP100) ) THEN GOTO NOT_FP100; PRINT "Software: FlashPro v10.0"; NOT_FP100: IF ( ! (TMPINT2==UNKNOWN) ) THEN GOTO Label_61; PRINT "Software: FlashPro vX.X"; Label_61: LABEL_SEPARATOR = 0; Label_62: IF ( ! ( (TMPINT==SCULPTW)||(TMPINT==BPW)) ) THEN GOTO Label_66; 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_63; TMPINT5 = 1; Label_63: INTEGER CURRPGM =INT(ACT_UROW_PROGRAM_SW[3..0]); IF ( ! (TMPINT==SCULPTW) ) THEN GOTO Label_64; IF ( ! ( (CURRPGM==FP3)||(CURRPGM==FP4)) ) THEN GOTO NOT_FP3_FP4; PRINT "NOTE: The Sculptor Windows version number below should be converted to HEX."; NOT_FP3_FP4: PRINT "Software: Sculptor Win v",TMPINT3,".",TMPINT4,".",TMPINT5; Label_64: IF ( ! (TMPINT==BPW) ) THEN GOTO Label_65; IF ( ! ( (CURRPGM==FP3)||(CURRPGM==FP4)) ) THEN GOTO NOT_FP3_FP4_BPW; PRINT "NOTE: The BP Windows version number below should be converted to HEX."; NOT_FP3_FP4_BPW: PRINT "Software: BP Win v",TMPINT3,".",TMPINT4,".",TMPINT5; Label_65: LABEL_SEPARATOR = 0; Label_66: 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,NVM_R,DO_READ_SECURITY,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: BDISPIAPUROW = 0; CALL READ_UROW; CALL DISPLAY_UROW; CALL DO_READ_SECURITY; IF ( ! (ULNC0==0) ) THEN GOTO ENCRYPTED; BDISPIAPUROW = 1; CALL READ_UROW; ENCRYPTED: IF ( ! (ULNC0==1) ) THEN GOTO NOT_ENCRYPTED; BDISPIAPUROW = 0; PRINT "WARNING: Embedded Flash Memory Block (EFMB) block 0 Encryption is enforced. "; PRINT "Pass key is needed to read IAP User Row Information from EFMB."; PRINT "========================================="; NOT_ENCRYPTED: IF ( ! (BDISPIAPUROW==1) ) THEN GOTO SKIP_DISP_IAP_UROW; CALL DISPLAY_UROW; SKIP_DISP_IAP_UROW: IF ( ! ( (ULNC0==0)&&(BDISPIAPUROW==0)) ) THEN GOTO DISPLAYED_IAP_UROW; PRINT "Device has not been programmed with IAP."; PRINT "========================================="; DISPLAYED_IAP_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,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_69; 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_67; 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_67: IF ( ! ( (BTMPBUFFBIT126==0)&&(BM1DEVICE==1)) ) THEN GOTO Label_68; 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_68: LABEL_SEPARATOR = 0; Label_69: 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_70; CHKSEC = 0; Label_70: 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_71; 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_71: IF ( ! (ULNC0==1) ) THEN GOTO Label_72; 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_72: IF ( ! (ULNR0==1) ) THEN GOTO Label_73; 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_73: 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_74; 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_74: IF ( ! ( (ULUPC==1)&&(ULNR0==0)) ) THEN GOTO Label_75; CHKSEC = 0; Label_75: 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]; ACT_UROW_PROGRAM_SW[3..0] = BOOL(PLAYERVERSIONSWVARIABLE); ENDPROC; PROCEDURE X USES GV; INTEGER K1 =INT(VAR[31..0]); INTEGER K2 =INT(VAR[63..32]); INTEGER K3 =INT(VAR[95..64]); INTEGER K4 =INT(VAR[127..96]); IF ( ! ( ( ( (K1==0)&&(K2==0))&&(K3==0))&&(K4==0)) ) THEN GOTO Label_76; PERMLOCK = 1; Label_76: IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $92; DRSCAN 128, VAR[]; WAIT IDLE, 3 CYCLES; WAIT IDLE, 1250 USEC; DRSCAN 128, $00000000000000000000000000000000,COMPARE $00000000000000000000000000000001 ,$00000000000000000000000000000003,PASS; SECKEY_OK = 0; IF ( ! (PASS==1) ) THEN GOTO Label_77; SECKEY_OK = 1; Label_77: LABEL_SEPARATOR = 0; ENDPROC; PROCEDURE POLL_PROGRAM USES GV; INTEGER ILOOP_0; FOR ILOOP_0 = 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_0 = 0; NEXT ILOOP_0; ENDPROC; PROCEDURE Y USES GV,POLL_PROGRAM; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $8b; DRSCAN 128, VAR[]; WAIT IDLE, 3 CYCLES; CALL POLL_PROGRAM; ENDPROC; PROCEDURE Z USES GV,DO_READ_SECURITY,X,Y; CALL DO_READ_SECURITY; IF ( ! ( ( (ULULR==0)&&(ULFLR==0))&&(ULUPC==0)) ) THEN GOTO SECURED_DEV; CALL Y; SECURED_DEV: CALL X; 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; NVMACCESS[1] = 1; NVMMASK[1] = 1; NVMACCESS[4] = 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_78; WAIT 100 USEC; INTEGER ILOOP_1; FOR ILOOP_1 = 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_1 = 0; NEXT ILOOP_1; Label_78: IF ( ! (PASS==0) ) THEN GOTO Label_79; 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_79: LABEL_SEPARATOR = 0; 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,Z; NVMACTIVEARRAY = 0; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $7f; WAIT IDLE, 3 CYCLES; WAIT IDLE, 50 USEC; BSR[1232..0] = BSRPATTERN[1232..0]; BOOLEAN SHIFT_DATA[1233]; IRSCAN 8, $01; DRSCAN 1233, BSR[]; WAIT IDLE, 1 CYCLES; DRSCAN 1233, SHIFT_DATA[], CAPTURE SAMPLE_DEVICE[]; FOR I = 0 TO 1232; IF ( ! (SAMPLEMASK[I]==1) ) THEN GOTO Label_80; BSR[I] = SAMPLE_DEVICE[I]; Label_80: LABEL_SEPARATOR = 0; NEXT I; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $01; DRSCAN 1233, 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]; CALL Z; IF ( ! (CHKARRAY==1) ) THEN GOTO SKIPCHKARRAY; IF ( ! (ARRAYRONLY==0) ) THEN GOTO Label_81; CALL DO_CHECK_W; Label_81: IF ( ! (ARRAYRONLY==1) ) THEN GOTO Label_82; CALL DO_CHECK_R; Label_82: LABEL_SEPARATOR = 0; SKIPCHKARRAY: IF ( ! (CHKNVM==1) ) THEN GOTO Label_85; IF ( ! (NVM0RONLY==0) ) THEN GOTO Label_83; CALL DO_CHECK_NVM_0_W; Label_83: IF ( ! (NVM0RONLY==1) ) THEN GOTO Label_84; CALL DO_CHECK_NVM_0_R; Label_84: LABEL_SEPARATOR = 0; Label_85: IF ( ! (PLAYERVERSIONVARIABLE!=0) ) THEN GOTO Label_86; CALL BP_VER; Label_86: 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_2; FOR ILOOP_2 = 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_2 = 0; NEXT ILOOP_2; ENDPROC; PROCEDURE UFROM_DISTURB USES GV; 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; ENDPROC; PROCEDURE PROGRAM_UROW USES GV,BITSTREAM,DO_EXIT,POLL_PROGRAM; IF ( ! (ISERASEONLY==0) ) THEN GOTO SKIP_CYC_INCREMENT; IF ( ! (ISPRGARRAY==1) ) THEN GOTO NOT_PGM_ARRAY; IF ( ! ( ( ( (INT(UROW[31..0])==-1)&&(INT(UROW[63..32])==-1))&&(INT(UROW[95..64])==-1))&&(INT(UROW[127..96])==-1)) ) THEN GOTO NOT_CORRUPTED_CYCLE_COUNT; ACT_UROW_CYCLE_COUNT = 0; NOT_CORRUPTED_CYCLE_COUNT: IF ( ! (ACT_UROW_CYCLE_COUNT<1000) ) THEN GOTO MAX_CYCLE_COUNT; ACT_UROW_CYCLE_COUNT = (ACT_UROW_CYCLE_COUNT+1); MAX_CYCLE_COUNT: LABEL_SEPARATOR = 0; NOT_PGM_ARRAY: LABEL_SEPARATOR = 0; SKIP_CYC_INCREMENT: IF ( ! (ISERASEONLY==1) ) THEN GOTO Label_87; UROW[] = $ffffffffffffffffffffffffffffffff; Label_87: IF ( ! ( (ISERASEONLY==0)||(ISRESTOREDESIGN==1)) ) THEN GOTO SKIP_DESIGN_INFO; BUFF32[31..0] = BOOL(CHECKSUM); IF ( ! ( !ISRESTOREDESIGN) ) THEN GOTO Label_88; UROW[127..112] = BUFF32[15..0]; Label_88: IF ( ! ISRESTOREDESIGN ) THEN GOTO Label_89; UROW[127..112] = SUROWCHECKSUM[15..0]; Label_89: IF ( ! ( !ISRESTOREDESIGN) ) THEN GOTO Label_90; UROW[101..32] = ACT_UROW_DESIGN_NAME[69..0]; Label_90: IF ( ! ISRESTOREDESIGN ) THEN GOTO Label_91; UROW[101..32] = SUROWDESIGNNAME[69..0]; Label_91: 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_92; UROW[5] = 1; UROW[0] = 0; UROW[24..23] = ACT_UROW_ALGO_VERSION[5..4]; Label_92: IF ( ! (ACT_UROW_ALGO_VERSION[6]==0) ) THEN GOTO Label_93; UROW[5] = 0; UROW[0] = 1; UROW[24..23] = ACT_UROW_ALGO_VERSION[5..4]; Label_93: 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_94; CALL PROGRAM_UROW; Label_94: LABEL_SEPARATOR = 0; ENDPROC; PROCEDURE DO_ERASE USES GV,EXE_ERASE; PRINT "Erase ..."; COMBERASESELECT[22..0] = $004000; IF ( ! ( ( (ULULR==0)&&(ULFLR==0))&&(ULUPC==0)) ) THEN GOTO DEVICE_SECURED_ERASE; COMBERASESELECT[3..3] = $1; DEVICE_SECURED_ERASE: 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,UFROM_DISTURB,EXE_ERASE; IF ( ! ( (BM7DEVICE==1)||(BM1DEVICE==1)) ) THEN GOTO Label_95; PRINT "Erase FPGA Array and FlashROM ..."; Label_95: IF ( ! ( (BM7DEVICE!=1)&&(BM1DEVICE!=1)) ) THEN GOTO Label_96; PRINT "Erase FPGA Array, FlashROM and Security Settings ..."; Label_96: COMBERASESELECT[22..0] = $7fc00f; ISERASEONLY = 1; CALL EXE_ERASE; CALL UFROM_DISTURB; 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_97; 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_97: 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_98; 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_98: IRSCAN 8, $8d; DRSCAN 2, VERIFYEOL[],COMPARE $0,$3,PASS; IF ( ! (PASS==0) ) THEN GOTO Label_99; 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_99: 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_100; 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_100: IRSCAN 8, $8e; DRSCAN 2, VERIFYEOL[],COMPARE $0,$3,PASS; IF ( ! (PASS==0) ) THEN GOTO Label_101; 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_101: 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_1; FOR IREPEAT_1 = 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_102; 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_102: ROWNUMBER = (ROWNUMBER-1); NEXT IREPEAT_1; 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_2; FOR IREPEAT_2 = 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_103; 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_103: ROWNUMBER = (ROWNUMBER-1); NEXT IREPEAT_2; 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_3; FOR IREPEAT_3 = 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_3; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $8c; WAIT IDLE, 3 CYCLES; CALL POLL_PROGRAM; IF ( ! (PASS==0) ) THEN GOTO Label_104; 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_104: 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,DISP_SF_USER_ADDR ,DO_CHECK_NVM_0_W; CALL DO_CHECK_NVM_0_W; PRINT "Program System Init and Boot Clients..."; NVMWORDS = (NVMDATASTREAMSIZEPRIV_ALL/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_105; PARWORDCOUNT = 0; PAR = (PAR+1); NVMADDRESS[34..13] = NVMADDRPRIV_ALL[(((PAR+1)*22)-1)..(PAR*22)]; NVMADDRESS[20] = 0; PAGEADDRESS = INT(NVMADDRESS[34..21]); PARSIZE = INT(NVMPARSIZEPRIV_ALL[(((PAR+1)*32)-1)..(PAR*32)]); PROTECTION[4..2] = NVMPROTECTPRIV_ALL[(((PAR+1)*3)-1)..(PAR*3)]; Label_105: 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_106; NVMPOLL = 10000; Label_106: IF ( ! (PASS!=1) ) THEN GOTO Label_107; IRSCAN 8, $b8; WAIT DRPAUSE, 100 USEC, DRPAUSE; Label_107: 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_108; UNIQUEEXITCODE = 32893; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT_ACCESS_NVM; Label_108: IF ( ! (NVMACTIVEARRAY==0) ) THEN GOTO Label_109; UNIQUEEXITCODE = 32894; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; Label_109: LABEL_SEPARATOR = 0; NVMADDRSHIFTOK_1_PRIV: FOR I = 1 TO 32; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $b9; DRSCAN 32, NVMDATAPRIV_ALL[(NVMDATAINDEX+31)..NVMDATAINDEX]; WAIT IDLE, 3 CYCLES; WAIT IDLE, 5 USEC; NVMDATAINDEX = (NVMDATAINDEX+32); NEXT I; 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,$10,PASS; IF ( ! (PASS==1) ) THEN GOTO Label_110; NVMPOLL = 10000; Label_110: IF ( ! (PASS!=1) ) THEN GOTO Label_111; IRSCAN 8, $ba; WAIT DRPAUSE, 100 USEC, DRPAUSE; Label_111: LABEL_SEPARATOR = 0; NEXT NVMPOLL; IF ( ! ( (BUFF128[2]==1)&&(BUFF128[3]==1)) ) THEN GOTO Label_112; PRINT "WARNING: Write count threshold exceeded: ",PAGEADDRESS,"."; Label_112: IF ( ! (PASS==0) ) THEN GOTO CONTPROG_PRIV; PRINT "Error programming system init and boot clients."; PRINT "Partition : ",PAR; PRINT "Word: ",PARWORDCOUNT; CALL DISP_SF_USER_ADDR; 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_113; PRINT "Overwrite Protect ON"; Label_113: IF ( ! (BUFF128[1]==1) ) THEN GOTO Label_114; PRINT "Write Protect ON"; Label_114: IF ( ! (BUFF128[2]==1) ) THEN GOTO Label_115; PRINT "Read Protect ON"; Label_115: IF ( ! (BUFF128[0]!=1) ) THEN GOTO Label_116; PRINT "Overwrite Protect OFF"; Label_116: IF ( ! (BUFF128[1]!=1) ) THEN GOTO Label_117; PRINT "Write Protect OFF"; Label_117: IF ( ! (BUFF128[2]!=1) ) THEN GOTO Label_118; PRINT "Read Protect OFF"; Label_118: STATUS = 10; IF ( ! (NVMACTIVEARRAY==1) ) THEN GOTO Label_119; UNIQUEEXITCODE = 32895; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT_ACCESS_NVM; Label_119: IF ( ! (NVMACTIVEARRAY==0) ) THEN GOTO Label_120; UNIQUEEXITCODE = 32896; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; Label_120: LABEL_SEPARATOR = 0; CONTPROG_PRIV: PAGEADDRESS = (PAGEADDRESS+1); PARWORDCOUNT = (PARWORDCOUNT+32); NVMWORDCOUNT = (NVMWORDCOUNT+32); IF ( ! (((NVMWORDCOUNT/32)%PAGEITERATION)==0) ) THEN GOTO Label_121; 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_121: LABEL_SEPARATOR = 0; NEXT IREPEAT_4; ENDPROC; PROCEDURE DO_VERIFY_NVM_PRIV USES NVM_V,GV,DO_EXIT,DO_EXIT_ACCESS_NVM,DISP_SF_USER_ADDR; PRINT "Verify System Init and Boot Clients..."; NVMWORDS = (NVMDATASTREAMSIZEPRIV_ALL/32); NVMPAGES = (NVMWORDS/32); NVMWORDCOUNT = 0; NVMDATAINDEX = 0; NVMADDRESS[] = $000000000; NVMADDRESS[12..11] = $2; PROTECTION[] = $00; PAR = -1; PARWORDCOUNT = 0; PARSIZE = 0; INTEGER IREPEAT_5; FOR IREPEAT_5 = NVMPAGES - 1 TO 0 STEP -1; IF ( ! (PARWORDCOUNT==PARSIZE) ) THEN GOTO Label_122; PARWORDCOUNT = 0; PAR = (PAR+1); NVMADDRESS[34..13] = NVMADDRPRIV_ALL[(((PAR+1)*22)-1)..(PAR*22)]; NVMADDRESS[20] = 0; PAGEADDRESS = INT(NVMADDRESS[34..21]); PARSIZE = INT(NVMPARSIZEPRIV_ALL[(((PAR+1)*32)-1)..(PAR*32)]); PROTECTION[4..2] = NVMPROTECTPRIV_ALL[(((PAR+1)*3)-1)..(PAR*3)]; Label_122: 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_123; NVMPOLL = 10000; Label_123: IF ( ! (PASS!=1) ) THEN GOTO Label_124; IRSCAN 8, $b8; WAIT DRPAUSE, 100 USEC, DRPAUSE; Label_124: 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 page: ",PAGEADDRESS,". Please try reprogramming."; STATUS = -39; IF ( ! (NVMACTIVEARRAY==1) ) THEN GOTO Label_125; UNIQUEEXITCODE = 32897; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT_ACCESS_NVM; Label_125: IF ( ! (NVMACTIVEARRAY==0) ) THEN GOTO Label_126; UNIQUEEXITCODE = 32898; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; Label_126: LABEL_SEPARATOR = 0; VERIFY_CC_PRIV: IF ( ! (BUFF128[3]==1) ) THEN GOTO VERIFY_WC_PRIV; PRINT "WARNING: Write count threshold exceeded on page: ",PAGEADDRESS,"."; 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_127; UNIQUEEXITCODE = 32899; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT_ACCESS_NVM; Label_127: IF ( ! (NVMACTIVEARRAY==0) ) THEN GOTO Label_128; UNIQUEEXITCODE = 32900; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; Label_128: LABEL_SEPARATOR = 0; NVMADDRSHIFTOK_0_PRIV: FOR I = 0 TO 31; BUFF128[34..0] = $000000000; BUFF128[31..0] = NVMDATAPRIV_ALL[(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_129; NVMPOLL = 10000; Label_129: IF ( ! (PASS!=1) ) THEN GOTO Label_130; IRSCAN 8, $b7; WAIT DRPAUSE, 50 USEC, DRPAUSE; Label_130: 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]; CALL DISP_SF_USER_ADDR; PRINT "Page Offset: ",I; PRINT "Word: ",PARWORDCOUNT; STATUS = 11; IF ( ! (NVMACTIVEARRAY==1) ) THEN GOTO Label_131; UNIQUEEXITCODE = 32901; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT_ACCESS_NVM; Label_131: IF ( ! (NVMACTIVEARRAY==0) ) THEN GOTO Label_132; IF ( ! ( ( ( (ULULR==1)&&(ULFLR==1))&&(ULUPC==1))&&(SECKEY_OK==0)) ) THEN GOTO NO_PAGE_PROTECTION_VER_PRIV; PRINT "eNVM is protected with a pass key. A valid pass key needs to be provided."; UNIQUEEXITCODE = 32909; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; STATUS = -57; CALL DO_EXIT; NO_PAGE_PROTECTION_VER_PRIV: UNIQUEEXITCODE = 32902; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; Label_132: 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_133; 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_133: LABEL_SEPARATOR = 0; NEXT IREPEAT_5; ENDPROC; PROCEDURE DO_PROGRAM_NVM_ALL USES NVM_V,GV,DO_EXIT,DO_EXIT_ACCESS_NVM,DISP_SF_USER_ADDR ,DO_PROGRAM_NVM_PRIV; IF ( ! (NVMACTIVEARRAY==0) ) THEN GOTO ACTIVE_PGM_NVM_ALL; CALL DO_PROGRAM_NVM_PRIV; ACTIVE_PGM_NVM_ALL: IF ( ! (NVMDATASTREAMSIZE_ALL>0) ) THEN GOTO SKIP_PGM_NVM_MSG_ALL; PRINT "Program Embedded Flash Memory Module ALL...."; SKIP_PGM_NVM_MSG_ALL: NVMWORDS = (NVMDATASTREAMSIZE_ALL/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_ALL; INTEGER IREPEAT_6; FOR IREPEAT_6 = NVMPAGES - 1 TO 0 STEP -1; IF ( ! (PARWORDCOUNT==PARSIZE) ) THEN GOTO Label_134; PARWORDCOUNT = 0; PAR = (PAR+1); NVMADDRESS[34..13] = NVMADDR_ALL[(((PAR+1)*22)-1)..(PAR*22)]; NVMADDRESS[20] = 0; PAGEADDRESS = INT(NVMADDRESS[34..21]); PARSIZE = INT(NVMPARSIZE_ALL[(((PAR+1)*32)-1)..(PAR*32)]); PROTECTION[4..2] = NVMPROTECT_ALL[(((PAR+1)*3)-1)..(PAR*3)]; Label_134: 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_135; NVMPOLL = 10000; Label_135: IF ( ! (PASS!=1) ) THEN GOTO Label_136; IRSCAN 8, $b8; WAIT DRPAUSE, 100 USEC, DRPAUSE; Label_136: LABEL_SEPARATOR = 0; NEXT NVMPOLL; IF ( ! (PASS==0) ) THEN GOTO NVMADDRSHIFTOK_1_ALL; PRINT "Error programming Embedded Flash Memory Block (EFMB)."; STATUS = 10; IF ( ! (NVMACTIVEARRAY==1) ) THEN GOTO Label_137; UNIQUEEXITCODE = 32873; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT_ACCESS_NVM; Label_137: IF ( ! (NVMACTIVEARRAY==0) ) THEN GOTO Label_138; UNIQUEEXITCODE = 32874; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; Label_138: LABEL_SEPARATOR = 0; NVMADDRSHIFTOK_1_ALL: FOR I = 1 TO 32; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $b9; DRSCAN 32, NVMDATA_ALL[(NVMDATAINDEX+31)..NVMDATAINDEX]; WAIT IDLE, 3 CYCLES; WAIT IDLE, 5 USEC; NVMDATAINDEX = (NVMDATAINDEX+32); NEXT I; 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,$10,PASS; IF ( ! (PASS==1) ) THEN GOTO Label_139; NVMPOLL = 10000; Label_139: IF ( ! (PASS!=1) ) THEN GOTO Label_140; IRSCAN 8, $ba; WAIT DRPAUSE, 100 USEC, DRPAUSE; Label_140: LABEL_SEPARATOR = 0; NEXT NVMPOLL; IF ( ! ( (BUFF128[2]==1)&&(BUFF128[3]==1)) ) THEN GOTO Label_141; PRINT "WARNING: Write count threshold exceeded: ",PAGEADDRESS,"."; Label_141: IF ( ! (PASS==0) ) THEN GOTO CONTPROG_ALL; PRINT "Error programming Embedded Flash Memory Block (EFMB)."; PRINT "Partition : ",PAR; PRINT "Word: ",PARWORDCOUNT; CALL DISP_SF_USER_ADDR; 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_142; PRINT "Overwrite Protect ON"; Label_142: IF ( ! (BUFF128[1]==1) ) THEN GOTO Label_143; PRINT "Write Protect ON"; Label_143: IF ( ! (BUFF128[2]==1) ) THEN GOTO Label_144; PRINT "Read Protect ON"; Label_144: IF ( ! (BUFF128[0]!=1) ) THEN GOTO Label_145; PRINT "Overwrite Protect OFF"; Label_145: IF ( ! (BUFF128[1]!=1) ) THEN GOTO Label_146; PRINT "Write Protect OFF"; Label_146: IF ( ! (BUFF128[2]!=1) ) THEN GOTO Label_147; PRINT "Read Protect OFF"; Label_147: STATUS = 10; IF ( ! (NVMACTIVEARRAY==1) ) THEN GOTO Label_148; UNIQUEEXITCODE = 32876; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT_ACCESS_NVM; Label_148: IF ( ! (NVMACTIVEARRAY==0) ) THEN GOTO Label_149; UNIQUEEXITCODE = 32877; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; Label_149: LABEL_SEPARATOR = 0; CONTPROG_ALL: PAGEADDRESS = (PAGEADDRESS+1); PARWORDCOUNT = (PARWORDCOUNT+32); NVMWORDCOUNT = (NVMWORDCOUNT+32); IF ( ! (((NVMWORDCOUNT/32)%PAGEITERATION)==0) ) THEN GOTO Label_150; PERCENT_UPDATE = ((100*NVMWORDCOUNT)/NVMWORDS); DIFFERENCE = (PERCENT_UPDATE%10); IF ( ! (DIFFERENCE>=5) ) THEN GOTO ROUND_DOWN_PGM_NVM_ALL; PERCENT_UPDATE = (PERCENT_UPDATE+(10-DIFFERENCE)); ROUND_DOWN_PGM_NVM_ALL: IF ( ! (DIFFERENCE<5) ) THEN GOTO ROUND_UP_PGM_NVM_ALL; PERCENT_UPDATE = (PERCENT_UPDATE-DIFFERENCE); ROUND_UP_PGM_NVM_ALL: EXPORT "PERCENT_DONE", PERCENT_UPDATE; Label_150: LABEL_SEPARATOR = 0; NEXT IREPEAT_6; SKIP_PGM_NVM_ALL: LABEL_SEPARATOR = 0; ENDPROC; PROCEDURE DO_VERIFY_NVM_ALL USES NVM_V,GV,DO_EXIT,DO_EXIT_ACCESS_NVM,DISP_SF_USER_ADDR ,DO_VERIFY_NVM_PRIV; IF ( ! (NVMACTIVEARRAY==0) ) THEN GOTO ACTIVE_VER_NVM_ALL; CALL DO_VERIFY_NVM_PRIV; ACTIVE_VER_NVM_ALL: IF ( ! (NVMDATASTREAMSIZE_ALL>0) ) THEN GOTO SKIP_VER_NVM_MSG_ALL; PRINT "Verify Embedded Flash Memory Module ALL..."; SKIP_VER_NVM_MSG_ALL: NVMWORDS = (NVMDATASTREAMSIZE_ALL/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_ALL; INTEGER IREPEAT_7; FOR IREPEAT_7 = NVMPAGES - 1 TO 0 STEP -1; IF ( ! (PARWORDCOUNT==PARSIZE) ) THEN GOTO Label_151; PARWORDCOUNT = 0; PAR = (PAR+1); NVMADDRESS[34..13] = NVMADDR_ALL[(((PAR+1)*22)-1)..(PAR*22)]; NVMADDRESS[20] = 0; PAGEADDRESS = INT(NVMADDRESS[34..21]); PARSIZE = INT(NVMPARSIZE_ALL[(((PAR+1)*32)-1)..(PAR*32)]); PROTECTION[4..2] = NVMPROTECT_ALL[(((PAR+1)*3)-1)..(PAR*3)]; Label_151: 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_152; NVMPOLL = 10000; Label_152: IF ( ! (PASS!=1) ) THEN GOTO Label_153; IRSCAN 8, $b8; WAIT DRPAUSE, 100 USEC, DRPAUSE; Label_153: LABEL_SEPARATOR = 0; NEXT NVMPOLL; IF ( ! (PASS==1) ) THEN GOTO VERIFY_ECC_LABEL_ALL; IF ( ! ( (BUFF128[33]==1)&&(BUFF128[32]==0)) ) THEN GOTO VERIFY_CC_ALL; PRINT "ERROR: 2 or more errors found on page: ",PAGEADDRESS,". Please try reprogramming."; STATUS = -39; IF ( ! (NVMACTIVEARRAY==1) ) THEN GOTO Label_154; UNIQUEEXITCODE = 32879; 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 = 32880; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; Label_155: LABEL_SEPARATOR = 0; VERIFY_CC_ALL: IF ( ! (BUFF128[3]==1) ) THEN GOTO VERIFY_WC_ALL; PRINT "WARNING: Write count threshold exceeded on page: ",PAGEADDRESS,"."; VERIFY_WC_ALL: LABEL_SEPARATOR = 0; VERIFY_ECC_LABEL_ALL: IF ( ! (PASS==0) ) THEN GOTO NVMADDRSHIFTOK_0_ALL; PRINT "Failed to verify Embedded Flash Memory Block (EFMB)."; STATUS = 11; IF ( ! (NVMACTIVEARRAY==1) ) THEN GOTO Label_156; UNIQUEEXITCODE = 32882; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT_ACCESS_NVM; Label_156: IF ( ! (NVMACTIVEARRAY==0) ) THEN GOTO Label_157; UNIQUEEXITCODE = 32883; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; Label_157: LABEL_SEPARATOR = 0; NVMADDRSHIFTOK_0_ALL: FOR I = 0 TO 31; BUFF128[34..0] = $000000000; BUFF128[31..0] = NVMDATA_ALL[(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_158; NVMPOLL = 10000; Label_158: IF ( ! (PASS!=1) ) THEN GOTO Label_159; IRSCAN 8, $b7; WAIT DRPAUSE, 50 USEC, DRPAUSE; Label_159: LABEL_SEPARATOR = 0; NEXT NVMPOLL; IF ( ! (PASS==0) ) THEN GOTO CONTCOMPARENVM_ALL; 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]; CALL DISP_SF_USER_ADDR; PRINT "Page Offset: ",I; PRINT "Word: ",PARWORDCOUNT; STATUS = 11; IF ( ! (NVMACTIVEARRAY==1) ) THEN GOTO Label_160; UNIQUEEXITCODE = 32885; 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; IF ( ! ( ( ( (ULULR==1)&&(ULFLR==1))&&(ULUPC==1))&&(SECKEY_OK==0)) ) THEN GOTO NO_PAGE_PROTECTION_VER_ALL; PRINT "eNVM is protected with a pass key. A valid pass key needs to be provided."; UNIQUEEXITCODE = 32914; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; STATUS = -57; CALL DO_EXIT; NO_PAGE_PROTECTION_VER_ALL: UNIQUEEXITCODE = 32886; BUFF128[15..0] = BOOL(UNIQUEEXITCODE); EXPORT "ERROR_CODE", BUFF128[15..0]; CALL DO_EXIT; Label_161: LABEL_SEPARATOR = 0; CONTCOMPARENVM_ALL: NVMDATAINDEX = (NVMDATAINDEX+32); NEXT I; PAGEADDRESS = (PAGEADDRESS+1); PARWORDCOUNT = (PARWORDCOUNT+32); NVMWORDCOUNT = (NVMWORDCOUNT+32); IF ( ! (((NVMWORDCOUNT/32)%PAGEITERATION)==0) ) THEN GOTO Label_162; PERCENT_UPDATE = ((100*NVMWORDCOUNT)/NVMWORDS); DIFFERENCE = (PERCENT_UPDATE%10); IF ( ! (DIFFERENCE>=5) ) THEN GOTO ROUND_DOWN_VER_NVM_ALL; PERCENT_UPDATE = (PERCENT_UPDATE+(10-DIFFERENCE)); ROUND_DOWN_VER_NVM_ALL: IF ( ! (DIFFERENCE<5) ) THEN GOTO ROUND_UP_VER_NVM_ALL; PERCENT_UPDATE = (PERCENT_UPDATE-DIFFERENCE); ROUND_UP_VER_NVM_ALL: EXPORT "PERCENT_DONE", PERCENT_UPDATE; Label_162: LABEL_SEPARATOR = 0; NEXT IREPEAT_7; SKIP_VERIFY_NVM_ALL: LABEL_SEPARATOR = 0; ENDPROC; PROCEDURE RESET_M3; IRSTOP IRPAUSE; DRSTOP DRPAUSE; IRSCAN 8, $96; DRSCAN 2, $2; WAIT IDLE, 1 CYCLES; WAIT RESET, 5 CYCLES; EXIT 0; ENDPROC; CRC 74B7;