ыўDiskMgr1p љ аэSXР2ТР6U#6Р1ѕРЭ}ѓ<((Э}ѓ!"ЋР!?Р'Э}ѓУWРЭyцўў :ТРЇЪ"@wР Э}ѓЭ}ѓДBoot error Press any key for retry $MSXDOS SYSљџџџO`€   №џџџџ№џџџџџo€ Рр! #@%`'€) +Р-р/1 3@5`7№џ9 ;Р=р?A C@E`G€I KРMрOQ S@U`W€Y [Р]р_a c№џџџџg€i kРmрoq s@u№џw№џџЏ{Р}р№џџ/ƒ№џџo‡€‰ ‹№џ№џџџџџ/ “@ •` —№џ™  ›Р р Ÿ Ё Ѓ@ Ѕ` Ї€ Љ  ЋР ­р Џ Б Г№џџџџџџџџџџЛР Н№џџџџС У@ Х` Ч€ Щ  џЯ џя Я б г@ џo з€ й№џлР нр пс у@х`ч€щ№џыРэряџ/ѓ№џѕ`ї€љ ћ№џ§№џџ!Aa Ё С с!џOaЁСс!!#A%a')Ё+С-с/1!3A5a79Ё;С=с?A!CAEaGIЁKСMсOQ!SAUaWYЁ[С]с_a!cAeagiЁkСmсoq!sAuawyёџџџџџџџџ/ƒA…a‡‰Ё‹СџџџџџџџO•aџџџџџџ›ёџсŸёџџ/ЃёџџџџЇџџџџџџ­сџБ!ГAЕaџљџџџO`€   №џџџџ№џџџџџo€ Рр! #@%`'€) +Р-р/1 3@5`7№џ9 ;Р=р?A C@E`G€I KРMрOQ S@U`W€Y [Р]р_a c№џџџџg€i kРmрoq s@u№џw№џџЏ{Р}р№џџ/ƒ№џџo‡€‰ ‹№џ№џџџџџ/ “@ •` —№џ™  ›Р р Ÿ Ё Ѓ@ Ѕ` Ї€ Љ  ЋР ­р Џ Б Г№џџџџџџџџџџЛР Н№џџџџС У@ Х` Ч€ Щ  џЯ џя Я б г@ џo з€ й№џлР нр пс у@х`ч€щ№џыРэряџ/ѓ№џѕ`ї€љ ћ№џ§№џџ!Aa Ё С с!џOaЁСс!!#A%a')Ё+С-с/1!3A5a79Ё;С=с?A!CAEaGIЁKСMсOQ!SAUaWYЁ[С]с_a!cAeagiЁkСmсoq!sAuawyёџџџџџџџџ/ƒA…a‡‰Ё‹СџџџџџџџO•aџџџџџџ›ёџсŸёџџ/ЃёџџџџЇџџџџџџ­сџБ!ГAЕaџAUTOEXECBAT ѕ`&A.BDOSFUNCH cЌD!BK MAC РSH )C BAT вЖ\& €CALBIO MAC РSH( CALBIO REL РSHCEND MAC гЖ\&CEND REL гЖ\&€CF COM еЖ\&‰CG COM жЖ\&8ЏCK MAC жЖ\&d€CK REL жЖ\&e€CLIB REL жЖ\&f€>COLOR C РSHvоCOLOR REL РSHx€COMMAND COM Ya•yCONIO H }p%€;CONTENTSDOC зЖ\&€CREL BAT зЖ\&„€CRUN MAC зЖ\&…CRUN REL зЖ\&Œ€CTYPE H €p%ŽšDIRECT H €p%ECHO C зЖ\&ECHO COM €Ёg‘€FPC COM йЖ\&˜€nGENLIB BAT йЖ\&ДGENLIB02BAT йЖ\&ЕGENLIB03BAT йЖ\&ЖGENLIB04BAT йЖ\&ЗGENLIB05BAT йЖ\&ИGENLIB06BAT йЖ\&Й€HEAD C РSHКкHELLO C X`&AО]IO H 5ПL80 COM юИ\&Р*LIB0 C йЖ\&ЫLIB0 MAC кЖ\&ЭLIB1 C кЖ\&е€LIB2 C кЖ\&к€?LIB3 C лЖ\&ъ€LIB TCO йЖ\&ё€ LIBK C лЖ\&єLINE C РSHќeLINE REL РSHў€M80 COM юИ\&џPM80 HLP Л‚ ,˜MALLOC H €p%zЄMEMORY H p%{MKHELLO BAT S'A|њMKQ BAT N'A}бMSXDOS SYS ya•~Р MX COM рz[-PROCESS H KВD!Q C РSHŽ‰Q COM Э‘gQ SYM ,7’ Q MAC § Э“яQ REL Э—–RND MAC РSH˜qRND REL]Њ'A™€ROM0 MAC РSHš€ROM1 C РSHœU SEARCH BAT РSH ЖSEARCH C РSHЁо SEARCH BAS РSHЄeSETJMP H p%ЅKSTDIO H 9ŒDІе STDLIB H ‚p%Љ2STRING H ‚p%ЊЈTYPE H %5ЋLWC C РSHЌЏхELLO RELXЊ'AЏ€HELLO COMvЊ'AА€хELLO MACTЊ'AЗ€хSMSAM~1GEN yN'AЏхEN80 COM WW%AЗ7хSMHELLOGEN yN'AЏrem MKQ is a good graphics sample MKHELLO џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/* (C) Copyright by ASCII Corporation, 1989 All rights Reserved. File: bdosfunc.h MSX-DOS Function Call Support */ #ifndef HEADERbdosfunc #define HEADERbdosfunc #ifndef HEADERtype #include #endif #define _TERM0 (TINY)0x00 /* Program terminate */ #define _CONIN (TINY)0x01 /* Console input */ #define _CONOUT (TINY)0x02 /* Console output */ #define _AUXIN (TINY)0x03 /* Auxiliary input */ #define _AUXOUT (TINY)0x04 /* Auxiliary output */ #define _LSTOUT (TINY)0x05 /* Printer output */ #define _DIRIO (TINY)0x06 /* Direct console I/O */ #define _DIRIN (TINY)0x07 /* Direct console input */ #define _INNOE (TINY)0x08 /* Console input without echo */ #define _STROUT (TINY)0x09 /* String output */ #define _BUFIN (TINY)0x0a /* Buffered line input */ #define _CONST (TINY)0x0b /* Console status */ #define _CPMVER (TINY)0x0c /* Return CP/M version number */ #define _DSKRST (TINY)0x0d /* Disk reset */ #define _SELDSK (TINY)0x0e /* Select disk */ #define _FOPEN (TINY)0x0f /* Open file (FCB) */ #define _FCLOSE (TINY)0x10 /* Close file (FCB) */ #define _SFIRST (TINY)0x11 /* Search for first (FCB) */ #define _SNEXT (TINY)0x12 /* Search for next (FCB) */ #define _FDEL (TINY)0x13 /* Delete file (FCB) */ #define _RDSEQ (TINY)0x14 /* Read sequential (FCB) */ #define _WRSEQ (TINY)0x15 /* Write sequential (FCB) */ #define _FMAKE (TINY)0x16 /* Create file (FCB) */ #define _FREN (TINY)0x17 /* Rename file (FCB) */ #define _LOGIN (TINY)0x18 /* Get login vector */ #define _CURDRV (TINY)0x19 /* Get current drive */ #define _SETDTA (TINY)0x1a /* Set disk transfer address */ #define _ALLOC (TINY)0x1b /* Get allocation information */ /* < no function > (TINY)0x1c */ /* < no function > (TINY)0x1d */ /* < no function > (TINY)0x1e */ /* < no function > (TINY)0x1f */ /* < no function > (TINY)0x20 */ #define _RDRND (TINY)0x21 /* Read random (FCB) */ #define _WRRND (TINY)0x22 /* Write random (FCB) */ #define _FSIZE (TINY)0x23 /* Get file size (FCB) */ #define _SETRND (TINY)0x24 /* Set random record (FCB) */ /* < no function > (TINY)0x25 */ #define _WRBLK (TINY)0x26 /* Write random block (FCB) */ #define _RDBLK (TINY)0x27 /* Read random block (FCB) */ #define _WRZER (TINY)0x28 /* Write random with zero fill (FCB)*/ /* < no function > (TINY)0x29 */ #define _GDATE (TINY)0x2a /* Get date */ #define _SDATE (TINY)0x2b /* Set date */ #define _GTIME (TINY)0x2c /* Get time */ #define _STIME (TINY)0x2d /* Set time */ #define _VERIFY (TINY)0x2e /* Set/reset verify flag */ #define _RDABS (TINY)0x2f /* Absolute sector read */ #define _WRABS (TINY)0x30 /* Absolute sector write */ #define _DPARM (TINY)0x31 /* Get disk parameters */ #define _FFIRST (TINY)0x40 /* Find first entry */ #define _FNEXT (TINY)0x41 /* Find next entry */ #define _FNEW (TINY)0x42 /* Find new entry */ #define _OPEN (TINY)0x43 /* Open file handle */ #define _CREATE (TINY)0x44 /* Create file and open handle */ #define _CLOSE (TINY)0x45 /* Close file handle */ #define _ENSURE (TINY)0x46 /* Ensure file handle */ #define _DUP (TINY)0x47 /* Duplicate file andle */ #define _READ (TINY)0x48 /* Read from file handle */ #define _WRITE (TINY)0x49 /* Write to file handle */ #define _SEEK (TINY)0x4a /* Seek (position file pointer) */ #define _IOCTL (TINY)0x4b /* I/O control for devices */ #define _HTEST (TINY)0x4c /* Test file handle */ #define _DELETE (TINY)0x4d /* Delete file or subdirectory */ #define _RENAME (TINY)0x4e /* Rename file or subdirectory */ #define _MOVE (TINY)0x4f /* Move file or subdirectory */ #define _ATTR (TINY)0x50 /* Change file or subdir attributes*/ #define _FTIME (TINY)0x51 /* Get/set file date and time */ #define _HDELET (TINY)0x52 /* Delete file handle */ #define _HRENAME (TINY)0x53 /* Rename file handle */ #define _HMOVE (TINY)0x54 /* Move file handle */ #define _HATTR (TINY)0x55 /* Change file handle attributes*/ #define _HFTIME (TINY)0x56 /* Get/set file handle date and time*/ #define _GETDTA (TINY)0x57 /* Get disk transfer address */ #define _GETVFY (TINY)0x58 /* Get verify flag setting */ #define _GETCD (TINY)0x59 /* Get current directory */ #define _CHDIR (TINY)0x5a /* Change directory */ #define _PARSE (TINY)0x5b /* Parse pathname */ #define _PFILE (TINY)0x5c /* Parse filename */ #define _CHKCHR (TINY)0x5d /* Check character */ #define _WPATH (TINY)0x5e /* Get whole path string */ #define _FLUSH (TINY)0x5f /* Flush disk buffers */ #define _FORK (TINY)0x60 /* Fork a child process */ #define _JOIN (TINY)0x61 /* Return to parent process */ #define _TERM (TINY)0x62 /* Terminate with error code */ #define _DEFAB (TINY)0x63 /* Define abort exit routine */ #define _DEFER (TINY)0x64 /* Def. critical err handle routine*/ #define _ERROR (TINY)0x65 /* Get previous error code */ #define _EXPLAIN (TINY)0x66 /* Explain error code */ #define _FORMAT (TINY)0x67 /* Format disk */ #define _RAMD (TINY)0x68 /* Create or destroy RAMdisk */ #define _BUFFER (TINY)0x69 /* Allocate sector buffers */ #define _ASSIGN (TINY)0x6a /* Logical drive assignment */ #define _GENV (TINY)0x6b /* Get environment item */ #define _SENV (TINY)0x6c /* Set environment item */ #define _FENV (TINY)0x6d /* Find environment item */ #define _DSKCHK (TINY)0x6e /* Get/set disk check status */ #define _DOSVER (TINY)0x6f /* Get MSX-DOS version number */ #define _REDIR (TINY)0x70 /* Get/set redirection flags */ #ifdef HEADERbdosfuncver11 #define RESET _TERM0 #define CONIN _CONIN #define CONOUT _CONOUT #define AUXIN _AUXIN #define RDRIN _AUXIN #define AUXOUT _AUXOUT #define PUNOUT _AUXOUT #define LSTOUT _LSTOUT #define DIRCON _DIRIO #define RAWIN _DIRIN #define DIRIN _INNOE #define STROUT _STROUT #define GETLIN _BUFIN #define CONST _CONST #define VERNO _CPMVER #define RESDSK _DSKRST #define SETDRIVE _SELDSK #define OPEN _FOPEN #define CLOSE _FCLOSE #define SEARF _SFIRST #define SEARN _SNEXT #define DELETE _FDEL #define CPMREAD _RDSEQ #define CPMWRITE _WRSEQ #define CREATE _FMAKE #define RENAME _FREN #define LOGVEC _LOGIN #define GETDRIVE _CURDRV #define SETDMA _SETDTA #define GETALOC _ALLOC #define READRNDM _RDRND #define WRTRNDM _WRRND #define FILESIZE _FSIZE #define SETREC _SETRND #define BLKWRITE _WRBLK #define BLKREAD _RDBLK #define WRTRNDMZ _WRZER #define GETDATE _GDATE #define SETDATE _SDATE #define GETTIME _GTIME #define SETTIME _STIME #define SETVERI _VERIFY #define ABSREAD _RDABS #define ABSWRIT _WRABS #define INITDMA 0x0080 /* default DMA area */ #define MAXDRIVE 8 /* maxmum disk drive */ #define BDOSERR 255 /* BDOS error value */ #endif /* HEADERbdosfuncver11 */ /*---------------------------------------------------------------------------*/ #define BIOS_WBOOT '\000' /* WARM START */ #define BIOS_CONST '\001' /* console status */ #define BIOS_CONIN '\002' /* console input */ #define BIOS_CONOUT '\003' /* console output */ typedef unsigned LONG[2]; typedef struct { char dc; /* drive code */ char name[8]; /* file name */ char type[3]; /* file name extention */ char _filler1_[2]; unsigned recsize; /* record size used by block i/o */ LONG filesize; /* file size in bytes */ unsigned fcbdate; unsigned fcbtime; char _filler2_[9]; LONG recpos; /* current record number */ char mode; /* file mode R, W, R/W */ } FCB; typedef struct { TINY fib_id; /* always 0xff (ID for FIB) */ char name[13]; /* file name as an ASCIZ string */ TINY attr; /* file attribute */ unsigned fibtime; /* time of last modification */ unsigned fibdate; /* date of last modification */ unsigned firstclu; /* first cluster in chain */ LONG filesize; /* file size in bytes */ TINY dc; /* logical drive */ TINY dummy[38]; /* internal information */ } FIB; typedef struct { unsigned af; unsigned ix; unsigned iy; unsigned bc; unsigned de; unsigned hl; } XREG; #define BDOS 0x0005 /* BDOS call address */ extern int bdosh(), call(); extern char bdos(), calla(), bios(); extern VOID callxx(); #endif /* HEADERbdosfunc */ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ .z80 extrn search jp search end џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџcf %1 fpc lib %1 cg -k %1 m80 =%1 rem del %1.mac l80 ck,%1,clib/s,crun/s,cend,%1/n/e:xmain џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ;------ Faking stuff for M80 and MX ----------------------------------- module macro ;; "module" must be lower cased endm endmodule macro ;; "endmodule" must be lower cased endm extrn macro endm ;---------------------------------------------------------------------- MODULE CALBIO ; ; CALBIO inter-slot calls BIOS ROM. ; Entry: [AF], [BC], [DE] and [HL] are passed to the BIOS as is. ; Exit: Depends on the BIOS which is called. ; CALSLT equ 001Ch EXPTBL equ 0FCC1h ; CALBIO:: ld iy,(EXPTBL-1) call CALSLT ei ; Make sure interrupts are enabled ret ENDMODULE MODULE CHGMOD ; ; CHGMOD sets the VDP mode. ; Entry: [A] screen mode (0..3 on MSX1, 0..8 on MSX2). ; Exit: None. ; CHGMOD equ 005Fh ; chgmod@:: ld ix,CHGMOD jp CALBIO extrn CALBIO ENDMODULE MODULE CHGCLR ; ; CHGCLR changes the color of the screen. ; Entry: Foreground color in FORCLR. ; Background color in BAKCLR. ; Border color in BDRCLR. ; Exit: None. ; CHGCLR equ 0062h ; chgclr@:: ld ix,CHGCLR jp CALBIO extrn CALBIO ENDMODULE MODULE CLS ; ; CLS clears the screen. ; Entry: None. ; Exit: None. ; CLS equ 00C3h ; cls@:: cp a ;by unknown reason must set Z flag ld ix,CLS jp CALBIO extrn CALBIO ENDMODULE MODULE TOTEXT ; ; TOTEXT forces the screen to text mode. ; Entry: None. ; Exit: None. ; TOTEXT equ 00D2h ; totext@:: ld ix,TOTEXT jp CALBIO extrn CALBIO ENDMODULE MODULE CALBAS ; ; CALBAS performs inter-slot call into the BASIC interpreter. ; Entry: Interpreter entry address in [HL]. ; [BC] and [DE] are passed as is to the interpreter. ; Exit: None. ; ; The problem is we can never pass IX register, which CALBAS ; wants, by inter-slot call. What must be done is to set IX ; register and jump to CALBAS after the BIOS ROM is enabled. ; CALBAS equ 0159h NMI equ 0066h ; Non-maskable interrupt ; (never used and only hook is provided) H.NMI equ 0FDD6h ; Hook for NMI ; calbas@:: exx ex af,af' ; ld hl,CALBAS ; Build the following interface routine push hl ; on the stack ld hl,0C300h ; push hl ; +0 inc sp exx ; +1 inc sp push hl ; +2 ld ix, exx ; +6 nop ld hl,021DDh ; +7 jp CALBAS push hl ; ld hl,03333h ; push hl ; ; ld hl,0 ; Make NMI hook jump to it add hl,sp ; ld a,0C3h ; ld (H.NMI),a ; ld (H.NMI+1),hl ; ; ex af,af' exx ; ld ix,NMI ; inter-slot call BIOS NMI entry call CALBIO ; ; ld hl,10 ; Throw away the interface routine add hl,sp ; ld sp,hl ; ; ret extrn CALBIO ENDMODULE end џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ…аS’Sрd4Ф$”ј !5=CHGCLRга eDѕDU…H 1 NP5V~Š˜ЦhpћdЗD%№€7D& €/лЂ‡@Ђ‡@  dх€nVЫ•В!nˆ\Ђ˜ЭЪ!#цЩЌ§5п †ЫtBf3h„ОY1в` †‚˜„‚ЇШh)ˆI)ёб †Ž†˜Ѕ ШiщЉш‘бp†˜ІЪ‰ъˆЋ “€žџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ; ; CEND -- MSX-C standard trailer file (Ver 1.1) ; ; 26-Jun-87 MSX-C Version 1.1 ; public @endx@ dseg @endx@: ds 0 end џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ…бS‘ dTфE„ @И\ШЉШ‹€žџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџУOƒИŽо‹€Œ*€)€P€5Ÿ€v€A’œ€M–"Т€*Т€~#"Т€oНТЋ,-Т”>ЩЏЩўAкКў[вК>ЩЏЩўaкЩў{вЩ>ЩЏЩ2Ф€ЭМЗЪл:Ф€ж Щ:Ф€Щ2Х€Э­ЗТѓ:Х€ЭМЗЪі>ЩЏЩў0кў:в>ЩЏЩ$%№}/o|/g#ЩЭю~иыЩѕў Т% >ЭВбZ>ЭВЩ~ЗШ~#хЭсУ-Compilation aborted by ^C> ЭВЗШ>ЭВўР!:Э-Э4ЩЗЪˆў Ъˆў.Ъˆў:Ъˆў;Ъˆ>ЩЏЩы"Ш€ыy2Ъ€"Ц€~#fo"Ь€ы~#fo"Ю€Џ2Ы€*Ь€~ЭmЗЪо:Ы€*Ъ€НкС>џЩ*Ь€~#"Ь€ЭЫ*Ю€w#"Ю€:Ы€<2Ы€УЉ:Ы€<2Ы€=*Ъ€Нвњ> *Ю€w#"Ю€Уо*Ц€ы*Ь€ыs#r*Ш€ы*Ю€ыs#rЏЩЭЫж@ўи>џЩ"а€~ЗЪFх#~сў:ТFхе~Эбс<Т>>џЩ##"а€УJ::ЗЪU:ы"в€в€!а€ЭŠ<Тl>џЩ*а€~ў.Т‹#"а€в€!а€ЭŠ<Тš>џЩ> *в€w#> w#> w#*а€~ЗЪЈ!џџУЋ!}Щхkbе&Џw#{ВТДбсЭЩхы)))Y ^#VсеЭ­б<Тм>џЩ!%6>еЭВб<Т№>џЩ!6#6ЏЩхы)))Y ^#VсеЭ­бЗЪ>џЩ!%6>еЭВб>еЭВб<Т/>џЩ!6#6ЏЩ)))Y ^#V>ЭВo&}<ДТX!џџУ[!}Щ)))ХY ~#fo"д€>ЭВС*д€ы>'ЭВЩ* 6Щdisk full "ж€Хех)MD)]T))) н ~цсбСЗЪД!ЩХ)))Y ~#fo"к€>ЭВС*к€ы>&i`"и€ЭВхх*и€MDс}Й |ИЪ *ж€)MD)]T))) н ~іw!†Э-Э|Э4сЩ"м€!кџ9љ*м€х!9ысЭ­<Т*>џУB!9ы>ЭВ<Т>!џџУA!}!&9љЩы!6#6!~цЪ_>џЩ! N#FХ!KB^#V! ~#foхi`"о€сСЭ]ы*о€MD! s#r{ВТ ! ~іw>џЩ! YPN#F!q#pЏЩ"р€х N#FХ*р€х ^#VС! ~#foСЭ‘б!N#F!q#p! N#F!q#pЩ"т€i`"ц€)))Y "ш€х##ы"ф€ы^#VЏсх####N#F!q#pе*ф€ыЭЫбсўRЪ;ўWЪaУ›е*ц€ы*т€ЭУб<ТO!Щ!6!6#6У›хе*ц€ы*т€Эћбс<Тw!Щх!6с N#F!q#p!N#F!q#p!еы*ц€ыs#r*ш€ N#Fб! q#pыЩыЗР!N#F!y–#xžа! N#F!y–O#xžGi`}цo&}ДЪ!е^#Vr+s>бУуеХKB! ^#V! ~#foСЭ‘б!N#F!q#p! N#F!q#pЩ}ДТCЏЩ~хЗТdх#~цсхЗЪWЭМс ~#foЭ:_с#6{Щ"ъ€*ъ€~#"ъ€ЗШѕеў Тƒ> ЭЦбёеЭЦбУmMD! ~#ЖТЈi`ХЭHС<ТЈ!џџЩ! ~Цџw#~Юџw! ^#Vr+so&Щ2ь€ЗЪг=ЪЩ!е~#ЖТтыЭВС! ~Цџw#~Юџw! ^#Vr+s:ь€Щ:ь€ЭЩMЭjЩMЭЦЩ> Э*^Э:*`Э:*bЭ:ЭДЭЩ:nЗТ>Э|*`Э::m2!э€Э Џ2!"`ЭЩ шOƒ‹‹errors detectedcompleteЭЭЭ\:lЗЪЋЭ>R:dЗЪО!Э-Э4УФ!Э-ЭЩ$џџcannot open [еЭ-сЭ->]ЭЭ4Щў0к ў8в >ЩЏЩЭЫ2”ЭјЗТ :”ўAк ўGв >ЩЏЩ2•ЭпЗТ3 :•ў_Т6 >ЩЏЩў\Т4 Э[2–ЭјЗЪ‡ Џ2—>2˜ўв7 :—‡‡‡*–…ж02—Э[2–ЭѓЗТ} :–Э=У7 :˜<2˜УS :–ўnЪГ ўtЪЖ ўbЪЙ ўrЪМ ўfЪП ўaЪТ ўvЪХ ўxЪШ Щ> Щ> Щ>Щ> Щ> Щ>Щ> ЩЭ[2–Э ЗЪ+ Џ2—>2˜ўв' :–ЭЫo:—‡‡‡‡…ж02—}ЭјЗТ :—ж2—Э[2–Э ЗТ :–Э=У' :˜<2˜Уо :—Щ:–Э=>xЩ2—:—Щo{ўћТE >Щ{ўњТb }хЭ! сЗТ` }ЭјЗТ` >ЩЏЩ}ЛТj >ЩЏЩы!ЗШMD)) O Уp "™х* "сЭl х* ысЭы"›ыы))ы*~#Ж+Шх^#V*™Э‘сЗР*+"}ДТЧ ЏЭS* ы*›MD! Эы"›ыУ ых*ы*еѕ{•zœкі >ЭSёбс"Ÿ*е{•zœк >ЭS*Ÿ~#бЗТћ *еЭ бх~#Ж+ТB ех*ысхs#rс##6#6бы"сЩ2Ё!"Ђ*"Є*ы*Єы{•zœкg >ЭS*Ђы{жzов :Ё*Єw#"Єы"ЂЭ[2ЁЭ! ЗТS :ЁЭјЗТS :ЁЭ=Џ*Єw#"Є*Э "~#ЖТЩ *ы*s#r*Є">ЩXBnumber2ІѕЏ2Њёў0Т Э[2ІЭЫўXТџ >2ЉЭ[2ІУ >2ЉУ > 2Љ!"Ї:ІЭјЗЪ' :Іж02ІУ< :ІЭпЗЪƒ :ІЭЫж72І*ЉНкg :ЊЗТ_ *"х* хЬ Х!Э›PССС>2ЊУz ]*ЇЭ6:І_"ЇЭ[2ІУ :ІЭ=*Ї"|ў€к˜ >Щ>ЩXMquoteЭSЭ[ў"ЪС ў ЪС ўЪС Э8 ЭЏSУІ ў"Ъо Э=*Юх*Ьх› Х!Э›PСССЏЭЏSЭъS">ЩXunEeof in this comment*"х* хы Х!Э›PСССЭ4ЩXB#XMquoteXBcharacterXBcharacter*ы*{•zœв *~*###"++ѕ~#fo"ёўЩР*"х* х Х!Э›PСССУ@ Э[2Џў Ъ ў Ъ *Ь" *Ю""Э! ЗЪЋ :ЏЭD Щ:ЏЭјЗЪМ :ЏЭе Щ:Џў'Тѓ Э[Э8 o&"Э[ў'Ъ№ Э=*Юх*Ьх Х!Э›PССС>Щў"Тќ ЭЃ ЩўТ>њЩў Т >јЩў\Т)*"х* х( Х!Э›PСССУ !д| ~!г| –o&"­!г| n&"Ћ*­+"­#}ДТk*"х* х4 Х!Э›PСССУ *ЋMDi`"Ћ!A| ^:ЏЭ; ЗЪF*ЋMD !B| :ЏОТЁХЭ[2ЏСУ,!г| n&B| n&}жљДЪР:ЏхЭ=с}Щ:gЗЪ!>2А:ЏўЪсў*Ъфў/ЪњУ Э Э[2Џў/Т*А-}2АУ Э[2Џў*Т*А,}2АЭ[2Џ*А,-ТЬЭ=У :Џў*Т7Э[ў/Ъ Э=У?ўТ?Э Э[2ЏУ!*^Э}2.ў ЪH:.Щ*Ъ$y•xœвv*Ъ+"Ъ~2.У$ЭH*Ю#"Ю:.<Ъ:.ўТу*в}ДЪл*^Э:*в+"в)MD) v ~#fo"Ь*в)MD) x ~#fo"Ю*в)))[ ~#fo"^Уv>2.У$:.ў Тћ*Ь#"Ь!џџ"ЮУ$:.ў\Т$ЭHў Т*Ь#"Ь!џџ"ЮУv:.Э=>\Щ:.ўТ2:.Э=:.Щungetc.*Ъѕ}‘|˜кQ!6ЭUS*Ъёw#"ЪЩЭ[ў Т[ЩЏ2БЭ[Э@ 2ўЩЪ„:ўњТkЭYУk*"}ДТkЭ@ =Тk*ы*7{Н zМЪГ*ы*9{Н zМТН:Б<2БУk*ы*={Н zМТл:Б=2Б<ТkУђ*ы*;{Н zМТk:БЗТkЭ[ЩXB#S statementN#FХ*"х* хіХ!Э›PССССЭ[ЩMDi`"В ўњЪ6 У*! ^#V ХЭыTС!§џ ы*Вы}Л |КТ6ЭUЩXtoo much parametersXBparameter list!ьџ9љЏ2ЖЭ@ =Ъ›*/ЭУэ* *"Э!Uыы"Ды!х*##N#Fсq#p*##s#rеЭ[сў(ТTЭ@ 2ўјЪ@:ўЪ@:ўњЪ@:=Те:Жў к*"х* х\Х!Э›PСССУъ<2Ж=o&)ы!9х*ысs#rЭ@ 2ўТ5У@:ўИЪЭУе:ўТе:Ж<<*ДwУ\хЭ=>сwхЭ{U>њ2ЭŒU>2ШЭ@ 2ўјЪК:=ТДy*ЖНвДi&)ы!9^#V*}Л |КТА>2i&"УД УЭŒUУmЭЙU+++Э#ыс###s#rЭНUЏ2ШУэ*"х* хqХ!Э›PСССЭ[!9љЩЭ@ =Ъ*1ЭЩ*##~#fo}ДШ~ЗШ#N#F*##q#pЩX#include too nestedrх*Ьы*в)MD) v s#r*Юы*в)MD) x s#r*в#"в)MD) z бs#r*ве}ж|ок”Х* хХ!Э›PСССЭ4*вMDс2хЭє"^б}ДТА!дЭт!"Ь!џџ"ЮЩЭ@ ўЪЭў`ЪжУ*##Э4ЩЭSЭ[ў>Ъєў ЪєўЪєЭ8 ЭЏSУйѕЏЭЏSёў>Т:ѕЏ2ЭъS##Э4ё2Щ*3ЭЩЭ@ =Ъ)*7ЭЩ*##~#ЖЪF*##~#fo~ЗЪFЭ[ЩЭdЩЭ@ =ЪX*9ЭЩ*##~#ЖЪu*##~#fo~ЗЪuЭdЩЭ[ЩTSR1R0P$%s pragmaЭ@ =Тf*ы*C{Н zМТЎ>2pЩ*ы*E{Н zМТУЏ2pЩ*ы*G{Н zМТЭ@ =Тf*ы*I{Н zМТ№!yУJ*ы*K{Н zМТf!{УJ*ы*M{Н zМТ!}УJ*ы*O{Н zМТ2!€УJ*ы*Q{Н zМТf!ƒ>2f:ЩЗЪ_х…Х!Э9NССЩ!ŠЭUSЩ*AЭЩXB#???*"}ДТ&Э@ 2=Т&*ы*/{Н zМТšЭ‚Щ*ы*1{Н zМТЎЭѓЩ*ы*3{Н zМТТЭНЩ*ы*7{Н zМТжЭЩ*ы*9{Н zМТъЭJЩ*ы*;{Н zМТўЭdЩ*ы*={Н zМТЭ[Щ*ы*A{Н zМТ&Э‘Щ*"х* хmХ!Э›PСССЩXconflicting number of macro parameterXBparameter list"З!ьџ9љ*З"ЗЭ{U* "Л*"х*З~"Зсы*ЗыеўкЂехЭ@ 2сбўЪЦх*Лх<Х!Э›PСССУЂеЏ2КхЭ@ 2ўЪdЭOU>њ2ЭŒUЏ2ЙЭ@ 2ўјЪ4:ўњЪ4*Й,-Т:ўЪ4:ўИЪ4:ўТ!,}2ЙУ.:ўТ.-}2ЙЭŒUУц:Кў в\2КЭЙU+++х:К<2К=o&)ы!9бs#r:ўИЪк:сбўЪƒх*ЛхcХ!Э›PСССУЂ==ѕ:КOёЙЪЂх*Лх<Х!Э›PСССб!~#fo~ўњЪ~2+++х####~#fo":ўТ :К_*Эю~в *)ы!9~#fo~ўњЪ ~2+++х####~#fo"ЭOUсУщЭOUсУЋЭНU!9љЩbacktok*а}ж|ок3!ЭUS* х*аMD)]T) V бs#r*"х*аMD)]T) X бs#r:*аMD)]T) S w*х*а#"аMD)]T) M бs#rЩ*а}ж|окљ*а+"аMD)]T) S ~2*аMD)]T) T ~#fo"*аMD)]T) V ~#fo" *аMD)]T) X ~#fo"":ЩЭ@ 2ўЩТ ЭtУљ:ўјЪљ:=Т<*##~#fo}ДЪ<~ЗТ6###~2У<ЭtУљ:Щ"НЭ хы*Ны~#Ж+Т_хs#rс##6#6сЩехЭ "Пбs#rЭ!Uы*П##s#rЏС!q#pЩрахъыч№еѕыўшх лтэв"к(у,ь1с4з8и=юDяNгWщ^жd?kбrмyц€дˆнŽй—фautobreakcasecharcontinuedefaultdodoubleelseentryexternfloatforgotoifintlongnonrecrecursiveregisterreturnshortsizeofstaticstructswitchtypedefunionunsignedwhiledefineundefincludeififdefifndefelseendiflinepragmanonrecrecursiveoptimizetimespaceregalonoregalopdp11mode* y•xœвGi`))ы*##6#6i`))ы*6#6У!Эю~вw"СхMD) ˆ ^*СMD) † ~#foЭaс#УJ!Э@"/!ЄЭ@"1!ЊЭ@"3!ВЭ@"5!ЕЭ@"7!ЛЭ@"9!ТЭ@";!ЧЭ@"=!ЭЭ@"?!вЭ@"A!йЭ@"C!рЭ@"E!ъЭ@"G!ѓЭ@"I!јЭ@"K!ўЭ@"M!Э@"O!Э@"Q>Эй>Эй>Эй>Эй>Эй>Эй>Эй>ЭйЩ*Аѓ}=ўP0|=ў0$,мѓН0М0Ї(ўџ :ўѓ0xўаУ4ЭКУЫЭмУх*#ѓЭQы"н!юыУV*%ѓЭQы"ц!ыУV*#ѓУV*%ѓУVЭме*%ѓЭQ*цЇэRс(ZЭ[ХyўС8ЏЭхЭ2УЭхе*#ѓЭQ*нЇэRс(4ЭмЭ2*ц)б*ље*^Э*`Э*bЭЩ^#V+Щs#r+ЩщYR'S'{2ХХхЭИT"ЦЭИVбС}ДЪ*ЦN#FХе^Х!Э›PСССЩХ*ЦЭтVы!:ХwўPЪЙўXЪЙўdЪЙўYЪЙўGТП!УЧ*\#"\+ех!бs#rб!Сq#pыЩYR'S'Ynot appear in parameter list 'S'"ШехЭИTЭИVMDсбyАЪI! ~#ЖЪeХ*Ш"ШЭИT^#Vе*ШхмХ!Э›PСССС! 6eЩ"ШЭИT^#Vе*ШхтХ!Э›PСССЩе! 6P*\#"\+ы! s#r! бs#rЩы"ЪыеХех!Э›PСССсхЭЏT}с=ЪЋЭИT"ЪУ˜ЭИTЭИV}ДЪН##6eУШ*ЪeЭd!џџ"ƒ!ЩЭ…Щ!ы"ЬыХѕЭтVы!ёw!еы*Ьыs#rб!Сq#pыЩYDmemberхi`"бс{2а"ЮЭИT^#V>.Эп MD*У}ДТ?i`ЭтVыkb"УУ—*Уыы"гыkb~Й# ~ИТh*ЮхХ!Э›PСС*гЩ!~#ЖЪ!^#Vы"гыУHеi`ЭтVыС! s#r! ^#V!е:аw*\#"\+х!бs#rб!еы*быs#rб!6#6ыЩKBхi`"есы!~! ОТ_ ўЪёў Ъёў Т !хi`"есN#FХ*еMD! СyО# xОТ >ЩЏЩў ТC !хi`"есN#FХ*еMD! СyО# xОЪC ЏЩ!^#Vе*еы!N#Fi`"ебУеЏЩYundefined struct/unionKBы!~ў Т !^#VУ| !~ў ЪЄ !~ў ТЧ !~ЗТЧ ХХa Х!Э›PССсeЭ>џЩЏЩYR'S'Yconflict definition 'S'YR'S'Yconflict definition 'S'KBхi`"йсыы"зы! ~ў Ъ>!ў Ъ>!ў Ъ"ў Ъ"ў Ъ"ўЪ%"=Ъ%"Щ:е‚ўdЪW!ўGЪg!ўTЪg!ЗЪg!У"kbdЭdх 6сЩ:е‚ўTТt!>YУv!>XХkb2нЭИTЭИV"лС:н_}ДЪц!:ƒЗЪБ! ~ЗЪБ!*зхЭИTN#Fб!Щ Э…Щ*й ^#V*л N#F! ~#foЭЫЗТѕ!*зхЭИTN#Fб!Я Э…Щ*зЭd"л 6:ƒЗЪ"*л 6*й###~#fo"ƒ*лЩi`ХЭy С<Т%"!Щ:е‚ўdТ8"*з:е‚_ЭdЩ:е‚ўGЪE">УF"ЏХ2о2ƒ:е‚ЗТY">GУ\":е‚*з2нЭИTЭИV"лС:н_}ДЪИ" ~ЗЪ"*зхЭИTN#Fб!ш Э…Щ*йы*л ~#foЭЫЗТЩ"*зхЭИTN#Fб!ю Э…Щ*зЭd"л :оw*лЩYFgg1YKYAgg2хеХх!9s#rсеЭVбехЭЏT}сбўЪ#ў3Ъ#ў5Ъ#ў4Ъ”#ў2Ъж#ў=Ъ[$Уx$Э!У~$ы##~ў ЪH#ў ЪH#ў ЪH#ў ЪH#ў ЪH#ўЪU#ўЪU#УŽ#Э“ы!Э"ЭвУ~$Э“Э\ЭУTхЭЭVЭЏT}ў3Тs#> Уu#> !9N#FбЭйхЭЭИTбЭо"У~$!а"ЭUS:е‚ўdЪЩ#:е‚ўTЪЋ#:е‚ЗТГ#:ўЈТЩ#:е‚ўGТж#Э“ЭИTЭЏT}=Ъж#Э“ы!д"ЭвУ~$!9^#V!~ў Ъё#!~ў Тў#Э“ы!з"ЭвУ~$еЭбхх!9s#rсЭЏT}схў4Т$!џџУ!$ЭУTх!9N#F*\#"\+}/_|/W> ЭйЭ\ бs#rсЭИTх!9^#VсЭо"У~$еЭVбKB>ЭйхЭЭИTбЭо"У~$!к"ЭUSСССЩYTgl1YPYFgl2YKYAgl3хеХх!9s#rсеЭVбехЭЏT}сСўЪз$ў3Ъ†%ў5Ъ†%ў4Ъ&ў2ЪZ&ў=Ъп&Уј&! ~ў Ъ%ў Ъ%ў Ъ?%ў Ъ?%ў Ъ?%ўЪT%=ЪT%У€%:е‚ўGЪ%:е‚ЗТ%еЭбXЭdУў&:е‚ўdТ2%еЭбdЭdУў&Э“ы!‚$ЭвУў&Э“ыi`ХЭy С<ТT%!Уў&:е‚ЗТ`%>AУc%:е‚_еЭбѕЭdёўGЪў&ўdЪў&>2ƒУў&!…$ЭUSЭ“хЭУTб}ДЪ %е‰$Х!Э›PССЭ™##~ў ЪЬ%ў ЪЬ%ў ЪЬ%ў ЪЬ%ў ЪЬ%ўЪй%ўЪй%У &Э“ы!Œ$ЭвУў&Э“Э\ЭЏT}ў3Тэ%> Уя%> !9N#FЭйхЭЭИTбЭ$Уў&!$ЭUS:е‚ўAЪM&:е‚ўdЪM&:е‚ЗЪM&:е‚ўTТ7&:ўЈТM&:е‚ўGТZ&Э“ЭИTЭЏT}=ЪZ&Э“ы!“$ЭвУў&!9^#V!~ў Ъu&!~ў Т‚&Э“ы!–$ЭвУў&еЭбхх!9s#rсЭЏT}схў4ТЂ&!џџУЅ&ЭУTх!9N#F*\#"\+}/_|/W> ЭйЭ\ бs#rсЭИTх!9^#VсЭ$Уў&Э\>ЭйхЭЭИTбЭ$Уў&!™$ЭUSСССЩ%t %t #%u ыы"пы!~#І<Ш!#~З№!^#V!~ў Ъ?'!~ў ТF'!~ЗШы"с*пы!N#FеХы"п*сые*пые'Х!Э9NССССб!~/O#~/G!q#pЩ%v %t ы{ВШ!~ўeШ!N#FХеˆ'Х!Э9NСССЩы!~ўЪЯ'ў Ъв'ў Ъв'ў Ъи'Уё'>Щ!~Щ!~#foеЭВ'сЗЪя'Э '>ЩЏЩ!~#foЭВ'Щ}ДШх ~#foЭВ':ƒсЗШЭ'ЩYBparameter type 'S'YPYFgp1YAgp2хеХх!9s#rсеЭVбехЭЏT}сбўЪv(ў3ЪЛ(ў5ЪЛ(ў2ЪB)ў4ЪИ)ў=ЪИ)Уж)х!~сў Ъ(ўЪŸ(ўЪŸ(УЊ(!N#F>ЭйыеЭбЭУм)хЭИTN#Fб!(Э…Ум)хЭУTб}ДЪЮ(!+(ЭвУм)Э™]T##~ў Ъќ(ў Ъќ(ў Ъќ(ў Ъќ(ў Ъќ(ўЪ )ўЪ )У:)Э“ы!.(ЭвУм)Э“Э\ЭЏT}ў3Т)> У)> !9N#FЭйхЭЭИTбЭ<(Ум)е!1(ЭUSб!~ў ЪV)!~ў Тc)Э“ы!5(ЭвУм)еЭбхх!9s#rсЭУTх!9N#F*\#"\+}/_|/W> ЭйЭ\ бs#rЭ™ЭhЭ 'сЭИTх!9^#VсЭ<(Ум)еЭVбыMD>ЭйхЭЭИTбЭ<(Ум)!8(ЭUSСССЩYfunction cannot appeargs1YPYFgs2YAYKgs3хеХх!9s#rсеЭVбехЭЏT}сСўЪJ*ў3ЪЕ*ў5ЪЕ*ў2ЪU+ў4Ъф+ў=Ъў+У,! ~ў Ъt*ў Ъt*ў Ъ“*ў Ъ“*ў Ъ“*ўЪЂ*=ЪЂ*УЏ*еЭбххр)Х!Э›PССсeЭУ,Э“ыi`ХЭy С<Ъ,еЭбMЭУ,!ј)ЭUSеЭбхЭУTС}ДЪб*Хќ)Х!Э›PССеЭ“б##~ў Ъџ*ў Ъџ*ў Ъџ*ў Ъџ*ў Ъџ*ўЪ+ўЪ+УO+еЭбххџ)Х!Э›PССсeЭУ,Э“Э\ЭЏT}ў3Т2+> У4+> !9N#FЭйхЭЭИTбЭ*У,!*ЭUS!9^#V!~ў Ъp+!~ў Т+еЭбхх*Х!Э›PССсeЭУ,еЭбхх!9s#rсЭУTх!9N#F*\#"\+}/_|/W> ЭйЭ\ бs#rЭ™ЭhЭ 'сЭИTх!9^#VсЭ*У,хх *Х!Э›PССсeЭУ,Э\>ЭйхЭЭИTбЭ*У,! *ЭUSСССЩ%t ( ) хх!,Х!Э9NССсх ~#fo}ДЪW,хЭ'с ~#foУB,',Х!Э9NСсЭ.VЩXtoo many initializers>23ƒ*yхЭX8ЭЛ8"ус"y*уЩ}:ўпТС,Э:ўрЪИ,Эš,:ўИЪЂ,˜,>рЭVYЩЭ~,Щ %t #0 XIMD! ~ўЪс,ўТя,ХХ,Х!Э9NССЩў Т -! ~#І<Ш!х! ^#VсЭю~аХх! ~#foЭа,с#СУ-ў ТH-! ~#fo}ДШх ~#foЭа,с ~#foУ--*"х* хЭ,Х!Э›PСССЭš,Щ %t} "х* х*""ч*ххa-Х!Э9NСС:ўпТЁ-ЭЭ~,e->рхЭVYсУЄ-Э~,Сы*чы}ДЪИ-еы*хЭ‡hСg-Х!Э9NСЩ C #%u C #0 }XKхХХХХ!9^#V!9s#r* еЭVб*"еЭJбх!~#foеЭVб!^#V*  С{Н zМТУ.:ўТУ.Х*N#Fi`Эhх*##ыеЭб+еЭVб#}ДЪd.OеХФ-Х!Э9NССбУ<.ЭбС}Є<Т€.еЭЅ б s#rУН.Эю~в›.ХЭхg,Х!Э›PСССУН.}“O|šGYP!Эю~вН.Ь-еХ!Э9NСбУЃ.ЭУ0:ўпТy/!9s#rеЭ:бўрЪ/еЭЅ  ~#foЭB1б!9s#r:ўИЪе.г->рЭVYЭ™}Є<Т+/Э х!9^#Vсs#rУ0х!9^#VсЭю~вR/ЭхЭхg,Х!Э›PСССУ0}“O|šGYP!Эю~в0еЭЅ  ~#foЭа,бУZ/Э™}Є<Тœ/i`хЭхе-Х!Э›PССС!џЭhх!9s#rсх:ўрЪф/ЭЅ  ~#foЭB1Э“ыеЭ“б#еЭ\бЭю~вф/:ўИТф/ЭУЉ/бzЦ€Ѓ<Ъ0еЭ™б#еЭhб+Эю~в0еЭЅ  ~#foЭа,бУэ/СССССЩ}ХХ:ўпТр0х* Эh*"Э\с ~#foхЭсўрЪm0}ДЪm0х ~#foЭB1с ~#fo}ДЪm0:ўИЪ<0хх!9^#Vсх!9N#Fс}ДТœ0:ўрЪœ0Хеg,Х!Э›PССС:ўрЪК0:ўњЪК0:ўШЪК0ЭУœ00>рЭVYс}ДЪ<1х ~#foЭа,с ~#foУУ0 ~#fo}ДЪ1:ўрЪ1х ~#foЭB1с ~#fo}ДЪ1:ўИТ1хЭсУш0}ДЪ<1х ~#foЭа,с ~#foУ1ССЩXIх##~сўЪ^1ўЪ^1ў Ъb1ў Ъf1Уj1Эi-ЩЭи-ЩЭ0Щ*"х* х?1Х!Э›PСССЭš,Щ%v ( ) }ДШххƒ1Х!Э9NССс ~#foЭB1‰1Х!Э9NСЏ2ƒЩћћћћћћџ)ћџ(ћџџ ћџџћџћџћџ0ћџ1ћ8џћ9џћ:џћ;џћ<џћ=џћ>џћ?џћ@џћџHџћџIџћџJџћџPџћџQџћџXџћџYџћџ`џћџaџћџbџћџcџћџhџћџiџћџpџћџxџћџ€џћџˆџћџџћџ˜џ џћџЈџћџЉџћџЊџћџЋџћџЌџћџ­џћџЎџћџЏџћџАџћџБџћџВџћџИџћќ2Т‚*Л‚MD)]T) щ ~ў0ЪШ2ў1ЪШ2ўЪШ2ў ЪШ2ўЪШ2ўЪШ2ўЪШ2ўЪШ2ўЪШ2ўЪШ2<ТЬ2:Т‚Щ:Т‚ўQЪщ2ў0Ъь2ў1Ъя2ўHЪђ2ўpЪѕ2Щ>:Щ>8Щ>9Щ>=Щ>>ЩXOX')' EХХЭўТœ3* х*"ЭhЭ*ж‚:е‚х!9wЭў;ЗЪ|3:ф‚ЗЪH3*т‚х*р‚хј2Х!Э›PСССЭZ9х*ж‚ысЭ‹9":ўЪt3*"х* хћ2Х!Э›PССС>@2У„3Э!>2с"ж‚!9~2е‚с" сх""УЯ3:ў?ТЯ3* х*"ЭhЭ3ў@ТО3>2УЦ3Э!>?2с" сх"":ССЩЭ3=Тњ3*ЭŽV"Р‚}ДТ4*ЭтV"Р‚##6uУ4*"Р‚:Щ!џџ"Л‚Ще*Л‚#ѕхi`"У‚сЭю~к&4>ЭS*Л‚#"Л‚MD)]T) щ ёw*Л‚MD)]T) ю бs#r*Л‚MD)]T) ъ х*У‚MDсq#pЭ™х*Л‚MD)]T) ь бs#rўџШўћШ*Л‚"Н‚ЩхыбОТЄ4ўћТœ4>Щ УŽ4ЏЩ~#ўћШУІ4Xsyntax error"Х‚ы"Ч‚ы*Н‚"Щ‚*Н‚+"Н‚MD)]T) щ ~<ЪЪ4! 5х*Ч‚х*Н‚MD)]T) щ ~*Щ‚MD)]T) щ ^ЩўТФ4Х>ћЭ 4С*Н‚#"Щ‚>2Ы‚!Й1х*Щ‚MD)]T) щ ысхЭ‹4сЗТЪ5~ўќТЛ5*Н‚#хMD)]T) щ ~с<Тk5#УT5"Щ‚MD)]T) ь ^#Vе*Щ‚MD)]T) ъ ^#VеЎ4Х!Э›PССС*Н‚"Л‚Х>џЭ 4С!џџ"ƒЩ:Ы‚_{2Ы‚ЭІ4У/5*Н‚"Л‚Х!р5х*Х‚х:Ы‚Щы>џЭ 4СЩXS>I2х*"х* хы5Х!Э›PССССЩXMSеѕЭ!ё2бе*"х* х 6Х!Э›PССССЩoperator (or semicolon)member name')'']'bad assignmentbad conditional expression (missing '?')':'precedence errornorel!џџ"ƒўЪх6ўЪю6ўЪї6ўЪ7ўЪ 7ўЪ7ўЪ7ўЪ 7ЗЪ'7У'716>IЭ6ЩI6>Э6ЩU6>Э6ЩY6> Э6Щ!]6Эю5Щ!l6Эю5Щ•6> Э6Щ!™6Эю5Щ!Њ6ЭUSЩхеХХх!9s#rсЭV*Л‚бх*Н‚ЭhЭ!Эе3Х>ШЭ 4С!ˆ7хеЭЅ бх:Э22_е*Н‚MD)]T) щ ~бЩўЪ’7ў ТЌ7*"х* MD*Р‚ы:Э 4СЭе3У_7ўТг7*Н‚ыеЭ™б#{Н zМЪй7ЭыеЭбЭМ4У_7ЭА6У_7*Л‚MD)]T) ю ~#foхЭ™"Л‚Э“"Н‚сССССЩўРк8>Щцo&*| ~ЩўРв8ўИТ"8>Щцo&*| ~Щ2Ь‚{Эџ7_е:Ь‚Эџ7бЭd}Щ2Э‚{Э8_е:Э‚Э8бЭd}ЩЏ2П‚ЭФUЭ4!"ƒћG:3ƒЗЪx8!D8У{8!08Э.7"Ю‚}ДТŠ8!Щ*ƒ}Є<Т—8!Щ>2:e2а‚Џ2e*Ю‚хЭќzЭi"ж‚:а‚2eсЩЏ2ƒ}ДТЯ8>2ƒ!Уч8:П‚ЗЪм8!Уч8>2ЭќzЭiхЭVсЩЏ23ƒ*yхЭX8ЭЛ8"б‚с"y*б‚ЩYuseless expressionх}ДЪ<9}=ДЪ<9хЭŽiсЗЪ<9х9Х!Э›PССсЩЏ23ƒ*yхЭX8Э9ЭЛ8"г‚с"y*г‚ЩЭ!Э;:ўHЪw9ўЪw9ў2Ъw9ў4Т{9ЭšFЩ!ЩYFYAYKgaхеХеЭVб}ДТœ9ыУі:ехЭЏT}сбў3ЪР9ў5ЪР9ў2Ъ5:ў4ЪИ:ў=ЪЯ:У№:!~ў Ъы9ў Ъы9ў Ъы9ў Ъы9ў Ъы9ўЪ:ўЪ:У5:Э“х9Х!Э›PСС*  Уі:еЭбеЭVбеЭЏT}ў3Т:> У :> СЭйхЭЭИTбЭ‹9Уі:!~ў ЪI:!~ў Тc:Э“х‚9Х!Э›PСС*  Уі:еЭбхх!9s#rсЭУTх!9N#F*\#"\+}/_|/W> ЭйЭ\ бs#rЭ™ЭhЭ 'сЭИTх!9^#VсЭ‹9Уі:х…9Х!Э›PСС*  Уі:хKB>ЭйЭhсЭИTх!9^#VсЭ‹9Уі:!ˆ9ЭUSСССЩ*"ы* ѕЭTы!ЭT]Tсl&ЭTЩX']' EЭўТ\;Эў Т3;>42ЩЭOc":ў ЪV;*"х* х;Х!Э›PССС>22Щ:ЩЭ4Џ2ƒ!"ƒЭ!Э;Э№DЩ:=Т‘;*ЭŽV}ДЪ‘;х##~сўdШ!Щ:ўакЅ;:ўокЕ;:ўюЪЕ;:ўяТИ;>ЩЏЩXD storage classXD type specifierX'long' UX'float' UX'double' U!№џ9љ!ЭtЏ!9w!9w!9~ЗЪ)<ЭЅ}ДТ>ЭЅ}ДТN<Эw;}ДЪN<>о2 ~#fo"УU<Э•;ЗЪ>:ўюЪe<:ўяТ<:ўюТs:ўев =!9~ЗЪЖ<*"х* хК;Х!Э›PСССУ>* бх*"Эh:ўаЪл<ўгЪх<ўбЪя<ўвЪљ<У=>A!9wУ>>r!9wУ>>T!9wУ>>G!9wУ>>d!9wУ>ЭЅ}ДЪ/=*"х* хЫ;Х!Э›PСССУ>* Э\*"ЭV:ўзЪs=ўеЪ‚=ўоЪ‘=ўжЪœ=ўйЪœ=ўиЪШ=ўкЪр=ўлЪј=ўмЪ>ўнЪ>У>*  ЭtУ>*  ЭtУ>*ЭtУ>:ўйТЎ=*  УЕ=*  ЭtЭўзЪ>Э!У>*"х* хн;Х!Э›PСССУ>*"х* хч;Х!Э›PСССУ>*"х* хђ;Х!Э›PСССУ>ЭЦ@ЭtЭУ<ЭЅ"ж‚!9~2е‚!9~2ф‚сх"и‚Э“"м‚Э"р‚Э™"к‚Э"о‚ЭЅ "т‚*ж‚}ДТq>:е‚ЗТq>:ф‚ЗЪv>>Уw>Џ!9љЩXOXT;:ўпЪ&?Эў;:ф‚ЗЪЌ>*т‚х*р‚х}>Х!Э›PССС*ж‚}ДТО>*  "ж‚:е‚ўrЪт>:е‚ЗЪт>*к‚х*и‚х€>Х!Э›PССС:ўШТ№>ЭУ…>*yхЭ`;ы*ƒ}ДТ ?*ж‚хыбЭ<(с"y:ўИТ?ЭУ№>ƒ>>ШЭVYУ…>ЭXЩXO %vXI :%t XI;Эў;ЗШ:ф‚ЗЪ`?*т‚х*р‚х*?Х!Э›PССС*ж‚}ДТr?*  "ж‚:е‚ўrТ?>A2е‚:ўШТ?ЭУ??*y"щ‚Э`;ы*ƒ}ДТЏ?Џ2ƒ*ж‚хыбЭ$"ы‚:ўЈТƒ@Э* ы*":е‚ўAЪа?:е‚ЗТ`@Џ23ƒ"ч‚ехы"х‚ЭX8х*ы‚ ^#Vы"э‚ы!~*ч‚х*х‚MDс=Ъ@х!~сўТ'@*ы‚хЭ§'сх-?Х!Э9NССУ6@хХ1?Х!Э›PСССсЭЛ8бС}ДЪ@еы*э‚"э‚Э‡hС*э‚х4?Х!Э9NССУ@:е‚ўTТq@*ы‚ЭŒ1Уƒ@хе:?Х!Э›PСССЭš,*ы‚Э§'*щ‚"y:ўИТ@ЭУ?=?>ШЭVYУ??XDtag 'S'XMtagXOXT;XM'}'ХХХХ:ўмТз@> Уй@> !9wѕЭбZ=ТЙA!9~ў Тї@>$Уљ@>#*^#VЭп ЭnхЭсўпТxAЭИVMDyАЪ"A! ~ЗЪEByАЪKAЭŸN#FХ*"х* хЈ@Х!Э›PСССС!ЭnЭŸЭтVMD! х!9~сw*\#"\+ы! s#r! 6УEBхЭ!сЭŽV}ДТ CЭŸЭтVЭbх##х!9~сw*\#"\+ыеЭ‡б###s#rсх 6сУ C:ўпТщAе!ЭтVMD! бs*\#"\+ы! s#r! 6УEB*"х* хВ@Х!х!9sсЭ›PССС!ЭтVы!х!9s#rсех!9^сs*\#"\+х!9^#V!бs#rб!6ыУ C*УХЭP!"УЭЭў;ЗЪфB:ф‚ЗЪxB*т‚х*р‚хИ@Х!Э›PССС:е‚ЗЪ”B*к‚х*и‚хЛ@Х!Э›PССС*ж‚}ДТІB*  "ж‚:ўШЪйB*yхЭ`;ы*ƒ}ДТЧB*ж‚хыбЭ*с"y:ўИТйBЭУЎBО@>ШЭVYУUB:ўрЪC*"х* хР@Х!Э›PССС*УыС! s#r! 6i`ХЭ*,Э‡"УсССССЩXMidentifier:=ЪaC*"х* х%CХ!Э›PССС!џџ"ƒ>Эњ:2CЭMTЩ>Эњ:х*ысЭMTхЭ;сЩХЭ3C:ўИТŸC>ИбхЭњ:хЭ;Э3CMD!9^#VсЭ[TУyCСЩX')' EX')' EX')' EХ:ўТѓCЭ;Э№Dбх:ўЪэC*"х* хЁCХ!Э›PССС!џџ"ƒУјCЭ;УјCЭ3Cбх:ў4ТD>4Эњ:хЭ™ысЭMTбхУшD:ў2Т3D>2Эњ:хЭ™ы*MDсЭ[TбхУшD:ўТуDсххЭЏT}=ДТLD>2ƒЭ;бў)ТŠDе>5Эњ:бЭ[TбхЭ;ўЪшD*"х* хЈCХ!Э›PССС!џџ"ƒУјC>3еЭњ::бўТЄDЭ[TбхУшDх!9s#rсхЭuCMDЭ™ысЭ[Tбх:ўЪшD*"х* хЏCХ!Э›PССС!џџ"ƒУјCсхУюDЭ;УјCСЩ:ўHТ E>=Эњ:хЭ;Э№DысЭMTЩЭЖCЩX')' EX')' EXBabstract declaratorх:ў4ТHE>4хЭњ:бЭMTУєE:ў2ТkE>2бхЭњ:х!9^#V*MDсЭ[TУєE:ўТмEхЭ;бўТEе>3Эњ:бЭ[TУєE:ў)ТФE>5еЭњ:бЭ[TхЭ;сўЪєE*"х* хEХ!Э›PСССУќE*"х* хEХ!Э›PСССУќE*"х* хEХ!Э›PСССУќEхЭ;сУF!џџ"ƒ>3Эњ:Э[TСЩX')' E!:ўТ~FхЭ;сўЪoFЭšF:хўЪUF*"х* хFХ!Э›PССС!џџ"ƒЭ;сў2Ъ~F:ў4Ъ~F:ўЪ~FЩхЭ!>2схЭ2Eс:ў4Ъ”F:ў2Ъ”F:ўРЭ2EУ~F:ўHТДF>=Эњ:хЭ;ЭšFысЭMTЩЭFЩх*Н‚ы"я‚ыMD)]T) ь ^#Vе*Н‚ы*я‚ыMD)]T) ъ ^#VыбЭTы!ЭTысЭTЩo&ЭИFх*Н‚MD)]T) ѕ ^#VсЭMTЩЭИFх*Н‚MD)]T) ѕ ^#Vе*Н‚MD)]T) ‚ N#FбсЭ[TЩo&ЭИFх*Н‚MD)]T) ќ ^#VсЭMTЩo&ЭИFх*Н‚MD)]T) ѕ ^#VсЭMTЩ89:;<=>?С*С/С%С+С-ФrФlТ<Т[Т>Т]Т=Т!С&С^С|УmУsХ:Х+Х-Х*Х/Х%ХrХlХ&Х^Х|ИXundeclared function 'S'expactўв H=o&‘G ~ЭќFЩўЪBHўЪIHў ЪŒHў Ъ“Hў Ъ“Hў ЪZIў Ъ`IўЪfIўЪlIў*ЪЁIУъI!)ЭGЩ!=ЭИFх*Н‚MD)]T) ѕ ^#VсЭMTх!)ЭИFх*Н‚MD)]T) ‚ N#FсбЭ[TЩ!2ЭGЩ*Н‚MD)]T) ѕ ѕ~#fo"ё‚ЭЏT}=ДТ'I*ё‚ЭИTх##~сўuТ'I:kхЗЪI~#foN#FХ*Н‚MD)]T) њ ^#Vе*Н‚MD)]T) ј ^#VелGХ!Э›PССССсх##6X*  MD> Эйыс s#rёў ТCI*Н‚MD)]T) ‚ ~#foУFI!х!3ЭИFы*ё‚ыСЭ[TЩ>ЭOGЩ>0ЭpGЩ>1ЭpGЩ!@ЭИFх*Н‚MD)]T) ѕ ^#Vе*Н‚MD)]T) ќ N#FбсЭ[TЩ*Н‚MD)]T) ‚ ^#Vе!˜ЭИFх*Н‚MD)]T) ѕ ^#Vе*Н‚MD)]T) ‚ N#FбсЭpTСЩўв§Iжo&—G ~ЭOGЩў*вJжo&)ŸG ~#foЭGЩў7в+Jж+o&)УG ~#foЭGЩ!єGЭUSЩXBconstant expressionXBconstant expression*Н‚MD)]T) ѕ ^#V*Н‚еMD)]T) ќ ^#V*Н‚ы"ѓ‚ыMD)]T) ‚ ^#VKBсы*ѓ‚ыўШўШўШў ЪDKўЪFKўЪNKўЪUKўЪWKўЪ]KўЪcKўЪjKўЪlKўЪsKўЪxKўЪ}Kў ЪŒKў!Ъ›Kў"ЪЊKў#ЪЙKў$ЪЪKў%ЪлKў&ЪтKў'ЪщKў*Ъ№KўЪ LўЪ LўЪ LўЪ LўЪ LўЪ LўЪ LўЪ LўЪ LУCLыЩ{/oz/g#Щ{/oz/gЩыЩYPЭ6ЩYPЭЩYPЭыЩ Щ}‘o|˜gЩAЭќ~ЩAЭ Щ}‘|˜вˆK!Щ!Щy•xœк—K!Щ!Щy•xœвІK!Щ!Щ}‘|˜кЕK!Щ!Щ}Й |ИТЦK!Щ!Щ}Й |ИЪзK!Щ!Щ}Ёo| gЩ}Љo|ЈgЩ}Бo|АgЩ}ДЪјKi`Щ*Н‚MD)]T) ‚ ~#foЩ*Н‚MD)]T) ѓ ^#Vе*Н‚MD)]T) ё ^#Vе2JХ!Э›PССС!Щ*Н‚MD)]T) њ ^#Vе*Н‚MD)]T) ј ^#VеHJХ!Э›PССС!Щ2ѕ‚:dЗР:eЗШ:ѕ‚ѕў Т™L*`ы> ЭЦё*`ыЭЦЩ:dЗР:eЗШх*`ысЭjЩы"ј‚ы"і‚х!'"њ‚}ж |ок MхТшLеы*ј‚Эб}ж|окџL*њ‚ы*ј‚Э}Ц0*і‚w#"і‚!ќ‚sб*ј‚еЭы"ј‚с Э"њ‚:ќ‚_УЧL*ј‚}Ц0*і‚w#ЏwсЩ$NICBNICSUVtnХХХХХы:dЗЪOMУЯM!~ўЪzMўЪŒMў Ъ”Mў Ъ”Mў Ъ”Mў ЪСMў ЪСMУЩM!N#F!/M ~ЭzLУЯM>RЭzLУЯM!~ж o&8M ~еЭzLб!~#foЭы!9ЭЖLЭЂLУЯM>CЭzLУЯM!Oў%Т(OЭЅ #Эt +~ўdЪŒNўuЪЕNўtЪЬNўvЪнNўsЪюNЗЪџNўcЪOУ"O*§‚х#~Зђ›N>-ЭzLс^#V#"§‚ыЭы!9ЭЖLЭЂLУDN*§‚^#V#"§‚!9ЭЖLЭЂLУDN*§‚^#V#"§‚ыЭ?MУDN*§‚^#V#"§‚ыЭеMУDN*§‚^#V#"§‚ыЭЂLУDNЭЅ х)NХ!Э›PСС!1NЭUS*§‚##"§‚++~ЭzLУDNѕЭzLёў Т7O>У8OЏ2ЩУDNССССЩwOŠOOO›OЅOЧOШOЩOнOоOјO PPP+PIPJP\P]PpPP€PP‚PƒParray of function bad duplicate expected function returns structured data cannot initialized known dimension expected l-value required missing improper function modeparameter cannot appear here redeclaration of bad storage class not supported ] line column : "џ‚ХХХХ*џ‚! 9"ƒЭЅ #Эt +~2ƒЗЪыQЭ­ЗЪтQ:ƒўCЪцPўNЪїPўSЪQўXЪQўYЪ8QУЮQ*ƒ##"ƒ++~ЭУЌP*ƒ^#V#"ƒ!9ЭЖLЭУЌP*ƒ^#V#"ƒыЭУЌP*ƒ##х++N#Fс##"ƒ++^#VУqQ*ƒх~#fo~#fo##~#fo##~#foN#Fс^#V#"ƒы^#Vы^#Vы^#Vы^#V*веХ}ДЪ™Q>[Э*в)MD) z ~#foЭ!„PЭ!‡PЭСYP!9ЭЖLЭ!PЭб!9ЭЖLЭ!–PЭ>2d2П‚УЌPжAo&)CO ~#foЭУЌP:ƒЭУЌP!™PЭЭT!ССССЩYtype mismatchхќQХ!Э›PССЩpool N/Nsymbol table N/Nhash N/N* {•zœвdRkb))еы*~#ЖЪ_RбУDR*qх*ы*{•ozœgхi`"ƒRХ!Э›PССС*sх* ы* {•OzœG*  ы*{•ozœgх#RХ!Э›PССС*uх*ƒ))х4RХ!Э›PСССЩлRцRыRёRіRhash tablepoolstackheapsymbol tableXS over flowo&)бR N#FХ*"х* хSХ!Э›PССССЭ>RЭ4Щbug bug in <>at [N.N] :hЗЪjSх!9SЭсЭ†YУwSх>SХ!Э›PСС*"х* хKSХ!Э›PСССЭ4Щ:ШЗЪ S*"ƒУІS*y"ƒ*ƒ##"ƒЩѕ:ШЗЪЭS*ƒы*{•zœкрS>ЭSУрS*ƒы*{{•zœкрS>ЭS*ƒёw#"ƒЩ*ƒы*ƒ##{•_zœW*ƒs#r:ШЗЪT*ƒ"УT*ƒ"y*ƒЩех*yы*{{•zœк.T>ЭS*yбs#r*y##бs#r*y####"y++++ЩхыЭTысЭTЩхi`еЭTысЭTысЭTЩы" ƒыхЭ“ХЭTысЭTы* ƒЭTысЭTЩ~#fo##~#fos#rЩ~#fo##~#fo~#foЩ~#fo~#foЩ##~#fo~#foЩ##~#fo##~#fo~#foЩ##~#fo##~#fo##~#fo~#foЩ*еы*" ƒ###ѕ{•zœвU>ЭS* ƒёw* ƒ#бs#r*###"Щ* ƒЩ*ы*х {•zœв9U>ЭSб!6#6* "ыЩ*+++"ы*{•zœвhU>ЭS:*w*ы*#s#rЩ*"ƒ* "ƒЩ*ƒы*{•zœкŸU>ЭS:*ƒw*ы*ƒ###"ƒ++s#rЩ*ƒЩ*ƒ"Щ* "ы*{•zœкоU>ЭS*ы* s#r*6#6*"Щdoend*ы* {•zœвV!ћUЭUS*їџ "* ~#fo"ЩхХЭh*ы!9s#r* }“|šв‹V!ех!9^#Vс~Л# ~КТ{V!9^#V!~ў Т{VkbеЭ 'сЭ.Vб!їџы!9s#rУ>VССЩMD*ы* }“|šвДVkbyО# xОТЌVыЩ!їџыУ”V!ЩMD*ы*}“|šвоVkbyО# xОТжVыЩ!їџыУОV!Щх* "ы*{•zœк§V>ЭS*бs#r*Щх*ы*їџ {•zœк W>ЭS*їџ бs#r* їџ "ƒ~Л# ~К+ЪJWїџ "ƒУ5W*KBы*ƒы{•zœк]WыЩХ*\#"\+ы*їџ "###s#r* 6*Сq#p*Щundefined label 'S' in function 'S'* їџ ы*{•zœи!е~ЗТыW>2d2П‚*‡Yхы~#foN#FХ‹WХ!Э›PСССб!їџыУЗWXundeclared parameter 'S'*MD*}‘|˜а! ~ХўPТ}X! ~#ЖТxX:kХЗЪXXi`~#foN#FХ*"х* хєWХ!Э›PСССС*  ыС! s#r*\#"\+ы! s#ri`Э'С!їџ MDУXstatic function 'S' not defined*ы* }“|šа!~еўYТфX!~ЗТфXы~#foN#FХ‡XХ!Э›PСС>2d2П‚б!їџыУЋXXunEeofXunEeof inside function 'S'*‡Y}ДТ1Y*"х* хэXХ!Э›PСССУKY*‡Yх*"х* хѕXХ!Э›PССССЭ4ЩX'S' Eo:ўњТcYЭYЩ:НЪ‚Yе*"х* хOYХ!Э›PССССЩЭЩЩ j L%uXBconditionXMcondition n "ƒ* х*"""ƒ*ƒх‰YХ!Э9NССЭэ8Э>fы* $ С{Н zМЪ§Y:П‚ЗТ§Y*"ƒхХYХ!Э›PСССУZ:ƒЗЪZi`" ƒ*"ƒх* ƒхœYХ!Э›PСССЈYХ!Э9NСЩ()*Z>хЭVYсЭЌY,Z>ЭVYЩL%u хDZХ!Э9NССЩ j L%u хWZХ!Э9NССЩ%c%s %t %c%s E}ДШ"$ƒх~#fo~#fo"‡Yх*$ƒ##nхmZХ!Э9NСССб!~#fo##~2&ƒ:ф‚ЗТУZ:p2ф‚:eѕЏ2e!N#F! ~#foЭQi"ƒё2e:ф‚=ТёZ!|ZУєZ!}Zх:&ƒў Т[>FУ[>UOХ*ƒхsZХ!Э9NССССЩXI"'ƒ*ƒ}ДТ7[Џ2ƒ*'ƒЭо"")ƒУ=[!")ƒ:хўЈТy[Э:е‚ўTЪX[:е‚ЗТa[*)ƒЭŒ1Уy[*"х* х[Х!Э›PСССЭš,сЭ§'Щ{ } ~[Х!Э9NС* "Эо]ЭЏW[Х!Э9NС!"‡YЩ"+ƒ}ДШЭЏT}=ДЪе[*+ƒхЭУTPЭdсЭИT"+ƒУГ[*+ƒPЭdЩXTXTXTXfunction EXOXBelement encountered externallyЭФU:ўњЪЮ]ЭTЭў;*ж‚}ДЪ9\*ж‚У@\*  "1ƒ:е‚ўGЪ{\:е‚ўTЪ{\:е‚ўdЪ{\:е‚ЗЪ{\Џ2е‚*к‚х*и‚хс[Х!Э›PССС:ўШТ‰\ЭУ\* *":е‚*y"/ƒѕЭ`;"-ƒё2е‚:ўпЪК\Э•;ЗТК\Эw;}ДЪV]>2ƒ:е‚ўdТр\Џ2е‚*"х* хф[Х!Э›PССС:е‚ўTЪ]:е‚ЗЪ]*"х* хч[Х!Э›PССС:ƒЗТ ]*"х* хъ[Х!Э›PССС!"ƒ*ƒ}ДТ;]*1ƒы*-ƒЭо"Э€ZЭФU*ƒЭ­[*/ƒ"yЭ…>Э„[ЭVУ\:ф‚ЗЪr]*т‚х*р‚хі[Х!Э›PСССЏ2ƒ*1ƒы*-ƒЭ[*/ƒ"y:ўИТЋ]ЭTЭ*yхЭ`;х*1ƒысЭ[с"yУ†]:ўШЪШ]*"х* хљ[Х!Э›PСССЭУ\ЭЇXЭVЩ{м]>пЭVYЭ??:ўрЪї]Э dУщ]ЭЩХЭ*\#"\+хЭ.ZЭ d:сўтТ8^хЭ*\#"\+ЭhЭ_ZсЭIZЭ dсхЭIZУ;^ЭIZСЩ d b Х*е]х*з]=^ХЭ\!Э9NСЭ*\#"\+"е]Э.Z*\#"\+"з]Э d*з]ЭIZA^Х!Э9NС*е]ЭIZс"е]сх"з]СЩ d while; b Х*е]х*з]Эh*\#"\+"е]*\#"\+"з]œ^Х!Э9NСЭЭ d ^>фЭVY*е]Э.Z*з]ЭIZІ^>ШЭVYЈ^Х!Э9NС*е]ЭIZс"е]сх"з]СЩ( ; d ;) b Х*е]х*з]Эh*\#"\+"е]*\#"\+"з]Э_>ЭVY:ўШЪl_Э>9_Х!Э9NС_>ШЭVY_Х!Э9NС:ўШЪ_*е]ЭЌY _>ШЭVY:ўЪл_Џ23ƒ*yхЭX8хЭ9:П‚"_ѕ>ЭVYЭ d*з]ЭIZё2П‚сЭЛ8$_Х!Э9NСс"yУч_ЭЭ d*з]ЭIZ&_Х!Э9NС*е]ЭIZс"е]сх"з]СЩX'break' outside switch/break;*е]}ДТ@`*"х* х`Х!Э›PСССЭ*е]Э_Z!`>ШЭVYЩX'continue' outside loop;*з]}ДТŠ`*"х* хR`Х!Э›PСССЭ*з]Э_Zk`>ШЭVYЩ y%t ;Эœ`Х!Э9NС:ўШЪэ`* х*""4ƒ*ƒхŸ`Х!Э9NССЭэ8Сы*4ƒы}ДЪэ`еы*ƒЭ‡hСЂ`Х!Э9NСЄ`>ШЭVYЩ(XBswitch expression) e%t w L%u #%u f L%u !іџ9љ*}х*{"}*е]х*й]:л]Э\*\#"\+"е]!"й]! 9w>2л]Э*\#"\+ЭVЭ_Za>ЭVY* ЭJ*"Џ23ƒЭt *yхЭX8:П‚х*ж‚ы!ѕ~е!9N#F=ЪнaХ* $ С{Н zМЪнaХЭЅхaХ!Э›PСССa>ЭVYЭ d*е]Э_ZЭЅЭIZ* $ б{Н zМТb*  УbыхaХ!Э9NССё2П‚сЭЛ8х*  ысЭfaХ!Э9NС*}++++ы*{{•zœкtb!N#FеХыN#FХ aХ!Э9NСССбУGb*й]}ДЪ‚b*й]У…b*е]х,aХ!Э9NСС*е]ЭIZс"yс"е]Э™"й]! 9~2л]*}"{с"}СССССЩX'default' outside switchX'default' appeard twice::л]ЗТc*"х* хОbХ!Э›PСССУ@c*й]}ДЪ2c*"х* хиbХ!Э›PСССУ@c*\#"\+"й]ЭIZЭёb> ЭVYЭ dЩ^J!D8Э.7ЩX'case' outside switchX'case' after defaultXD'case' label::л]ЗТМc*"х* хYcХ!Э›PСССЭЭOcУYd*й]}ДЪйc*"х* хpcХ!Э›PСССЭЭOcMD*yы*{Х{•zœкѕc>ЭS*}++++ыС*{{•zœк5d!~Й# ~ИТ.d*"х* х†cХ!Э›PСССУYdУўc*\#"\+ы*{++++"{s#rыХЭIZ*{##Сq#p•c> ЭVYЭ dЩ;Э*ЭW###~#foЭ_ZЭed>ШЭVYЩXDlabel 'S'XBelement ;ХХХЭT:=Т'e*бхх* Э\*"ЭVЭсў ТeЭWы!~ЗЪєdсхN#FХ*"х* х†dХ!Э›PССССУe!6!~#foЭIZЭЭ dУfхЭ!с">2Э™" Э“"":ўпЪseўсЪeўфЪ…eўхЪ‹eўуЪ‘eўъЪ—eўыЪeўщЪЃeўШЪЉeўцЪЏeўчЪЕeўшЪЛeўьЪСeўњЪЧeУЪeЭФUЭо]ЭVУfЭћ]УfЭE^УfЭЌ^УfЭ*_УfЭ#`УfЭm`УfЭІ`УfЭУfЭ4aУfЭ—cУfЭѓbУfЭgdУfЭYЭ>9:ƒЗЪяe*"х* х’dХ!Э›PСССЭУЃdœdХ!Э9NСžd>ШЭVYСССЩ #1 #0 ?%tеы* $ С{Н zМТ4fХХfХ!Э9NССсЩыЩ #0 !%tы* $ {Н zМЪvf!~=Ъbf!~ўТrfе6fХ!Э9NССУvf!Щ* $ ЩKBы!~ўТяfыЩ! ~ўТќfi`Щ! N#FХ!~#foMD)]T) љџ ы:fЗЪ&g!ЏfУ)g!~fС +n&MD))) ы* Щ %t%tMDi`"8ƒ! ~#foы":ƒыЭю~кng! ~#fo++++Уvg! ~#foХх*:ƒMDс"<ƒ! ~#foЭю~кЁg! ~#fo++++УЉg! ~#foхi`":ƒсСх! ~*:ƒы!ы*<ƒыСОТаg{Й zИШ* $ ы*:ƒы{Н zМТёgKB*8ƒыi`ЭfЩе*8ƒыеЩЏЩ!~=ТMh!~ж#ЖЪMh!~ж#ЖТ`h!~ўТchi`ЭЫЗТch>ЩЏЩXpointer type mismatch - use castе">ƒХЭhСЗЪІhЭ“хХehХ!Э›PСССб*>ƒЭBgЩYpointer type mismatch - use castе"@ƒХЭhСЗЪъhХЎhХ!Э›PССб*@ƒЭBgЩ aх##~сў РхђhХ!Э9NСс N#F>ЭйЩ aы!~ў Ъ2i!~ў ТHiiеХ!Э9NСС>ЭйЩыЭѕhЩ ICы:fЗЪŒi*  {Н zМЪyi* ? {Н zМТŒiMiХ!Э9NС*  ЩыЩхЭЏT}сўИЪЮiў˜ЪеiўХЪ№iў5Ъ№iў3Ъ№iў0Ъ№iў1Ъ№iў8Ъ№iў9Ъ№iўЦЪђiўПЪђiУ§iЭУTЭŽiЩхЭУTЭŽiсЗТыiЭдTЭŽiЗЪюi>ЩЏЩЏЩЭЏT|ўХТ§iЏЩ>ЩYundeclared identifier 'S' %v>26ƒхЭИTыы"Dƒы!n&б}жuДТajы"Bƒ*Dƒыы~#foN#FХ*BƒыеjХ!Э›PСССЩ}жeДТlj!Щ*DƒыееjХ!Э9NССб!N#F ў ЪЌj!N#F ў ЪЌj!N#F ў ТАjЏ26ƒ!~#foЩ #%dЏ26ƒЭИTхЙjХ!Э9NСС* 6 Щ #%uЏ26ƒЭИTхкjХ!Э9NСС* - Щ #%uЏ26ƒЭИTхћjХ!Э9NСС* ? Щ "%u," aЏ26ƒkхХ!Э9NСсЭИTх~#fo"Fƒс##"Hƒ*Hƒ~#"HƒOХkХ!Э9NСС*Fƒ+"Fƒ}ДЪ|k"kХ!Э9NСУJk$kХ!Э9NС*  MD>ЭйЩ #%tЏ26ƒЭИTх™kХ!Э9NСС* 6 ЩYL #1 #%t;+;-:+:- %s%tхХЭhЏ27ƒхЭИTЭќzы!9s#rс{ВТќk!Уl:6ƒЗТlхКkХ!Э›PССУlЏ26ƒх!~с=Т0lНkХ!Э9NСУYlх!~сўТSl!N#FХСkХ!Э9NССУYlЭ RУlЭ™ЭЏT}ў0Ъrlў1Ъxlў8Ъ~lУ„lЦkУ‡lЩkУ‡lЬkУ‡lЯkеЭ™бххевkХ!Э9NСССсССЩ %c%tхбхЭИTЭќz}ДТКl!УmЏ26ƒх*  ысЭfы!~=ТўlееЭ“ЭЏT}ж:ДТщl>_Уыl>~oх lХ!Э9NСССсУmсхЭ RСЩ nхбхЏ27ƒЭИTЭќz}ДТ m!УAmЏ26ƒЭ>f}ДТ4mсхЭ RУAmmхХ!Э9NСсСЩYBindirection @Џ27ƒхЭИTЭќzЭѕhб}ДТlm!Щ>26ƒх##~сўЪ‰mеCmХ!Э›PССЩхQmХ!Э9NСс ~#foЩYL aхЭИTЭќzб}ДТЖm!Щ:6ƒЗТЫmеŸmХ!Э›PССЩЏ26ƒЂmхХ!Э9NСС>ЭйЩYsizeof(func) not permitted #%t:=ТMnхЭИTЭќzх*  ысЭfы!~сў Ъ9nх!~сў ТGnххmХ!Э›PССЩЭ’TУ]nЭ TхnХ!Э9NССЏ26ƒ* 6 ЩYBcastYBtype in castХЏ27ƒхЭИTы!9s#r!~с=ЪЖnх!~сўЪЖnхinХ!Э›PССУoхеЭУTЭќzбС}ДТЫn!УoХЏ26ƒЭfЭiы!~С=Ъћn!~ўЪћnХpnХ!Э›PССУoеЭ™бхЭBgсСЩХKBыс{ВЪ-oх!~с=Ъ-oх!~сўЪ-oЭ RЏЩyАЪNoх! ~с=ЪNoх! ~сўЪNoЭ RЏЩ{ВЪXoyАТZoЏЩ>Щы"Lƒы"JƒХхЭЏT}2NƒсЭЏTl&:Nƒ_С}ж+ДЪ‹o}ж-ДЪлoУ9p*Lƒх##~сўТПoх! ~сўТЋo*JƒЭ RЩхCyіЦO*Jƒ~#foq#pсЩ{ўХТЬo*JƒЭ RЩ*Jƒ~#fo6Ч#6Сi`Щ*Lƒх##~сўТ9pх! ~сўТ%p{ўХТp*JƒЭ RЩYPЭЫЗЪp*Jƒ~#fo6О#6*  Щ*JƒЭ RЩCyіПOх*Jƒ~#foq#pсЩ*JƒЭ RЩ %c%tхХХХЭVхЭЏT|сѕхЭИTЭќzЭѕh:6ƒЗЪipЏ27ƒ:Э\сх!9^#VсСH=ТюpхЭУTЭќzЭѕh:6ƒЗЪ”pЏ27ƒЏ26ƒСхыеЭ“беЭ\бЭoбеЭ™бЗТИp!УBqх##~сўЪЮpх!~сўТмpKBыеЭбЭ]oУBqЭрfЭhыеЭбЭ’TУ?qх!9qсх!9s#rсхЭ TЭ\х!9^#VсСхХЭаhсхЭУTЭќzЭѕhыСсхЭаhЏ26ƒсх!9NХ@pХ!Э9NСССЭ™ССССЩ R%t #%t *R :-R+RхХХЭ\ЭЏT}ѕЭхўЦЪuqўПТŒqхЭИTЭќzЭѕhЭVсЭУTЭќzУ qхЭУTЭќzЭѕhЭVсЭИTЭќzЏ26ƒЭVЭ“Э\ N#FХЭхGqХ!Э9NСССсЭЏT|ўХТлqTqХ!Э9NСёўПТчq!VqУъq!Yqх!Э9NСсхСССЩ IR IR -I #%t /IХхЭИTЭќzЭѕhјqХЭ\!Э9NСсЭУTЭќzЭѕhсх N#FХќqХ!Э9NССЏ26ƒ*  СЩхбххЭИTЭќzх*  ысЭfхЭ“ЭУTЭќzх*  ысЭfыСсyАЪ‹r{ВТ‘r!У sх!~сўЪЉrх!~сў ТКr~#fo6Ь#6ыYPMDУУr~#fo6Ы#6! ~ўЪзr! ~ў Тs!~=Тs! YPN#F ў Ъіr>УїrЏ26ƒ!~#foУ sсхЭ RСЩ @ @ R%t #%t *R 'ХХхЭЏT}сўЫТasхЭИTЭќzЭh##~ўТJs sХ!Э9NСсЭУTЭќzх*  ысЭfУ’sхЭУTЭќzЭh##~ўТ~ssХ!Э9NСсЭИTЭќzх*  ысЭfх!9^#VсеЭ\б!N#F ў ЪДs>УЕsЏ26ƒ!N#FеХЭхsХ!Э9NСССб!~#foССЩ %c%tХХХхЭЏT|сѕхЭИTЭќzЭi:6ƒЗЪtЏ27ƒ:Э\сх!9^#VсСH=Т_tхЭУTЭќzЭi:6ƒЗЪ.tЏ27ƒЏ26ƒСхыеЭ“бХЭoсбЗТNt* $ УМtхеЭ“бЭрfысЭ’TУЕtх!9qсх!9s#rсхЭ Tх!9^#VсСХеЭVбЭаhсхЭУTЭќzЭiыСеЭ“бхЭаhЏ26ƒсх!9NХоsХ!Э9NССС* $ СССЩ %cхХХЭ\Џ27ƒхЭЏT|!9wсхЭИTЭќzЭiЭ>fЭhсЭУTЭќzЭiЭ>fЏ26ƒх* $ х!9^#VсС{Н zМТ'uХ* $ СyН xМЪ0uЭ“Э RУJu!9~OХРtХ!Э9NСС* $ СССЩ %c%tхХХЭ\хЭЏT|сѕЭИTЭќzх*  ысЭfЭQiЭh:6ƒЗЪ…uЏ27ƒ:СH=ТїuбхЭ“хЭУTЭќzх!9^#VсеЭfMD:6ƒЗЪДuЏ27ƒЏ26ƒбс{ВЪаuх!~с=ЪаuЭ RУ+vyАЪчu! ~=ЪчuЭ“Э RУ+v{ВЪёuyАТ)v!У+vх!9qсхЭхЭУTЭќzыСсхЭаhЏ26ƒсх!9NХNuХ!Э9NСССсхСССЩYL :%c%t :%tхХХЭ\Џ27ƒхЭЏT|!9wсѕхЭИTЭќz:Э\сх!9^#VсСH=Тжv:6ƒхЗТ†vх/vХ!Э›PССсхЭУTЭќzЭiЏ26ƒСхыеЭ“бхЭoбСЗТ­v!У:w!9~ў:Ъ8w!~ўЪЫv! ~ўТ8wеЭбЭ]oУ:wх!9qсх!9s#rсеЭVбеЭУTЭќzЭiх!9N#F!9^#VыбЭаhЏ26ƒ!9Nyбў:Ъ+wеХ2vХ!Э9NСССУ8wе9vХ!Э9NССсхСССЩ ,Џ27ƒхЭИTЭ9ЭќzсЭУTЭќz>wхХ!Э9NСЏ26ƒсЩ M%u .Yundeclared member name 'S'хХЭhЏ27ƒхЭИTЭќzы>26ƒс{ВТ­w!УZxх!~сў ЪЫwх!~сў ЪЫwЭ RУZxеЭУT~#fo^#V>.Эп ы!9s#rб!~#foх!9^#Vс}ДЪCx~Л# ~К+Т8xх###N#FХhwХ!Э9NССб!N#F ў Т-xЏ26ƒ!~#foУZx ~#foУѕwыN#FХЭ“хowХ!Э›PСССССЩYBparameter type p%tхЭќzЭiх*  ысЭfЭQiыс{ВТ•x!Щх!~с=ЪКxх!~сўЪКxх]xХ!Э›PССЩееnxХ!Э9NССсЩхХЭhЭЏT}жИДЪ№xЭ™Эsx}ДТъx!џџУ"y!У"yЭ™хЭИTЭЪxЭhсЭУTЭsxх!9^#Vс}ДЪy{Ђ<Тy!џџУ"y!ССЩYfunction E c%t %c%uхХХЏ27ƒЭ\ЭИTЭќzыееЭбх{ВЪ~yх!~сў Ъ~yх!~сў Ъ~yх%yХ!Э›PССсЭУT}ДЪ“yЭЭУTЭЪxУ–y!Эhб{ВЪГy!~ў ЪЙy!~ў ЪЙy!УzЏ26ƒ!~ў ТЬy>FУЮy>Uoх!~#foЭQiх1yХЭJ!Э9NССС!9N#FњzХ9yХ!Э9NССЭ™СССЩ ?%tхХХЭ\хЭИTЭќz}ДЪ1zЭ>f}ДТ1zЭЭ R:6ƒЗЪЪ|ў:Ъ|ў<Ъ|ў˜Ъ |ўФЪ|ў;Ъ|ўЪ|ў?Ъ|ў@Ъ|У#|ЭjЩЭОjЩЭпjЩЭkЩЭ(kЩЭPrЩЭ>vЩЭФtЩЭFpЩЭ sЩЭ\qЩЭ rЩЭИTЭќzЩЭ?@[]^{|}~=ћћ=ћ&=ћћћ=ћ+=ћћ-=>ћћ*=ћћћ<=ћ=ћ=>ћћћћћ=ћћ=|ћћћћ;ЩћJћћpћHћћPИћћћQ)ћћI Ш=ћћ`ћЈћ=ћb˜Ъ ћxпћћ€р?@ACDGHIJKLMNOPQRSTUVWXYZ[\]^_`abcefghijlmnopqrstuvwxyzzz{{|}}}}~~€€€‚ƒƒƒ„…………†‡ˆˆ‰‰Š‹ŒŒŒŒŒŒŽ‘‘‘‘‘‘&o{=+))х)С Š} Oцў_yц~Ъ‡}цЩёџџџџџџџџџюэуююююююnюёџџџџџџџџџюфэююююююnюёџџџџџџџџџ-""""""""""џџџџџџџюяяюџџџџџџџюяяюџџџџџџѕюяяюўџџџџџѕюяяююџџџџџѕюяяююўџџџџѕюяяюююџџџџѕюяяюююўџџџѕюяяююююџџџѕюяяююююўџџѕюяяюююююџџѕюяяюююююўџѕюччююююююоˆюяяююююююўјюяяююююююnўюяяююююююnўюяяююююююўю|Њђі~zМЩ|КР}ЛЩШЇ|g}oУ§~Ш)У BK>ѕ){_zWк){‘z˜к0{‘_z˜W,ё=ТЩDM!>)ы)ывE =Т=Щ Уz УzУzУzУzУzУzу^#V#уы9s#rыЩ! УЌ! УЌ!УЌ!УЌ!УЌ!УЌс^#V#хы9^#VыЩ`iOУ*њџ љУp‰MSX C ver 1.10P (parser) Copyright (C) 1987 by ASCII Corporation Copyright (C) 1985 by LSI JAPAN Co., Ltd.usage: cf [options] filename options available: -c disables comment nesting -e[X] makes diagnostic file on drive X -f enables implicit function and parameter declaration -t enables implicit pointer convertion -m displays memory usage statistics -oX makes T-code file on drive X -rP:S:H allocate tables in ratio P:S:H (Pool:Symbol table:Hash) -s continues submit even if errors are detectedcannot make [!9Щsorry, too small memory:iЗЪ…!—У…!–"о‰хЭc…х*wы*о‰ыш б{•zœвЖ…!h…Э-Э4Эc…бе}“_|šW*w{•ozœgх*sы*qы*uысЭ]Tх*qЭ6"qб*sеЭ6 ЭMD))) "sб*uЭ6Эќ~))"uбkb"*q" "*sх*qб"" *uЭќ~" Э{ВТX†* #" *u####"u* їџ ""* "*"*"Щх~#fo~ў:Т„†#х!"р‰с~хѕЭјСHсЗЪД†хХ*р‰)MD)) С аџ "р‰с#УŒ†ысs#r*р‰ЩхwЗЪЩ†#УО† w#ЗТЩ†сЩы"ф‰ы"т‰!'}ж|оихы*ф‰ы{•zœкџ†ы*т‰Э}Ц0Эб*т‰еЭы"т‰с ЭУо†bad table ratio bad option: .Cr.TCOw.DIAwbad drive :"ц‰!цџ9љ*ц‰"ц‰ы"ш‰ЭЎ!ZƒЭ-*ц‰+"ц‰ы!Эю~в—ˆ*ш‰##"ш‰хN#F сў-Т—ˆN#Fi`"ъ‰~ЗЪp‡~хЭЫбўCЪг‡ўEЪк‡ўFЪќ‡ўMЪˆўOЪ ˆўRЪ(ˆўSЪjˆўTЪrˆУyˆЏ2gУˆ>2i!~ЗЪˆы"ъ‰ыЭ2j<ТˆУO‰Џ2kУˆ>2lУˆ!~ЗЪˆы"ъ‰ыЭ2m<ТˆУO‰ы"ъ‰!ъ‰Эx†"q}ДЪWˆ!ъ‰Эx†"s}ДЪWˆ!ъ‰Эx†"u}ДТ`ˆ!‡Э-УF‰*ъ‰+"ъ‰Уˆ>2nУˆЏ2oУˆ!)‡еЭ-с~Э> ЭУF‰*ъ‰#"ъ‰У‡*ц‰}=ДТF‰*ш‰х^#V6‡!9ЭН†9‡Эє"^}ДТЭˆ!9ы!дЭт*Y~2:m2сх^#V;‡!э€ЭН†@‡Эє"`}ДТ‰э€!U…Эт:iсЗЪ9‰:j2^#VB‡!9ЭН†G‡Эє"b}ДТ9‰!9ы!U…ЭтЏ2Э€…Эrݘ!ЧƒЭ-Э4!I‡Э-*ъ‰+~ЭЭ4!9љЩw#ЗТf‰Щ!€N! 6!ь‰Эf‰!#"ŠŠ+)lŠ o‰q#pў ТЅ‰У›‰ЗЪд‰*ŠŠ#"ŠŠ+)lŠ s#rЗЪЩ‰ў ЪЩ‰УК‰ЗЪ›‰ЏУ›‰*ŠŠlŠЭU‡ЩџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџУљЉ`iOУОТЗТ>Щ#У ЏЩyАШ~# Уў0к5ў:в5>ЩЏЩ$%№}/o|/g#ЩЭ<ЂаыЩѕў ТU >ЭбZ>ЭЩ~ЗШ~#хЭHсУ]* 6ЩЭjЭ{ЩЭ ЭЩ>Х"$ЃЭС*$Ѓы>'ЭЩ disk full >хХЭСб>&ХЭС}‘|˜а!–Э]ЭtЩы!'~еўWТ!(N#F!,}‘|˜в!%N#F!*y–O#xžGyцЪ !(е^#Vr+s>бУё!,хыбЭЂб>Э<Т#>џЩЏЩы>Э<Т2>џЩЏЩMD!* ~#ЖҘ!' ~ў Ъ‚!% хi`"&ЃсN#FХ*&ЃMD!, ыi`хi`"&ЃсСЭ‚ы*&ЃMD!* s#r{ВТŒ!' 6 !џџЩ!, ы!( s#r!* ~Цџw#~Юџw!( ^#Vr+so&Щ!*ѕ~#ЖТё!%N#Fе!,хыбЭЂб!,ех!(бs#rб!%N#F!*q#p!*KB~Цџw#~Юџw!( ^#Vr+sёЩKЭ<ЂкW"(ЃХ Ъ2ФТ>bЭ HХ*(ЃхХ>SЭ%FСССС ШТФ>bЭ HЩ}ДШР>UхЭ Hс++УW*ХЉшџ ~#fo"ЯЉ*КЉ}жДТŽ:ЅЉЗЪŽ>УЏ_е*ИЉы*ЖЉбЭ>PЭ H*ХЉ№џ ы*ЯЉs#rЩ*УЉ"ЯЉ~#foы"*Ѓы".Ѓ*ІЉ{•zœвkb))ЋЉ е~2-ЃЗЪљЭdIo&MD)) OЉ ~ЗЪu**Ѓ))ЈЉ N:ЄЉЗЪ>TЭ HУu:-ЃЗЪ6ХЭdIG!ЭfЂы*ОЉ}Ѓo|ЂgС}ДЪu!,Ѓq**Ѓ))ЉЉ N#FХХХ!,ЃNyцЪ]>[У_>YЭ%FССС*МЉы*ЯЉ s#rбы"*ЃыУЪ *ЖЉЭ<Ђк”*МЉ}цЪБ*ЖЉ{•zœвЯРе>TЭ HбУ—Х*ЖЉ}/o|/g#хХ>SЭ%FССС*ЯЉх*ЯЉы*.Ѓыs#r!бs#rЩ ?D: defs D!"0Ѓ!"2Ѓ!џџ"4Ѓ*ЩЉыы"6Ѓы*ЧЉ{•zœвие28ЃўpЪ/ўEЪ6ўAЪУЪ*4Ѓ#"4Ѓ!~ЗЪSЭdIo&MD)) OЉ ~ЗЪЪ:ЄЉЗТЭŽ…*6Ѓы!N#FХ!N#FХчХ!Э‚nСССУЪ:8ЃўpТА*2Ѓ++"2Ѓх*4Ѓ))ЈЉ ~сўТЃ#ы*6Ѓ###s#rУЪ*0Ѓы*6Ѓх###~#fo"0Ѓс###s#rс ыы"6ЃыУ*0Ѓ#}цўo"ЖЉ*2Ѓ}/o|/g#"ИЉ*ЩЉы*ЧЉ{•zœаеўPЪўpТ !^#Vхе*ИЉы*ЖЉбысr+sб!ыУєы!:œЉОвA{=ВЪC{жВЪCЏЩ{=!œЉn&MD)) NЉ w!œЉn&MD)) PЉ 6џ!œЉn&MD)) OЉ 6!œЉ4~=Э]IЩMD*ЫЉыХ!џџ ~ЗТˆ*ЧЉе{•zœвЁЭвƒбkb"ЫЉС ЗТЈ*ЫЉЩ*ЧЉы"9Ѓыыы"=Ѓы*ЫЉех!"ЧЉбѕхi`";Ѓс{•zœвсЭвƒёб!ѕеы*9Ѓыs#rб!х*;ЃMDсq#p!9~!wёўEЪўpР!9~ЗШ!9~ЭdIo&MD)) LЉ ы*=Ѓыs#rЩ*ЩЉ"AЃ*ЩЉы*ЧЉ{•zœв{еўGТrы"?Ѓ*AЃ]Tхе*?ЃыыбЭс "AЃб!ыУB*AЃ"ЧЉЩЭk„2CЃЭ>…MDлЉ*ЧЉ{•zœвС*CЃНТЙ!~Й# ~ИТЙ!~#foЩ!ыУЭDƒЩ"DЃ!FЃsлЉы"GЃы*ЧЉ{•zœвўGТы"GЃые*DЃые*GЃы!~#foбЭ сЗР*GЃы!ыы"GЃыУде:FЃOХ*DЃЭы>GЭДСсЩхi`"MЃсы"KЃы"IЃ*ЩЉыы"OЃыХ*ЧЉ{•zœвwўLТj!N#~цG*IЃyН xМЪw!ыы"OЃыУD*ЧЉех*IЃMDс{•zœкЄi`"IЃХ*IЃMDYxі€W>LЭДСб!#~ц€СЗЪ !е~#fo"QЃ!х*KЃысЭ<Ђвџх) хi`"MЃсN#F! х*QЃMDсq#pсх)х*MЃMDс ~#fo"QЃс#УСб!х*QЃMDсq#pЩ!х*KЃысЭ<Ђа"SЃх*OЃ###^#Vе*SЃ)ы*MЃыN#F! бs#rс#У 2UЃЭ>…"VЃЭХ„!"XЃхЭk„сў)ЪЎ хўMЪi ЭDƒХЭ>…ы:UЃўSТ~ *XЃУ !MD2UЃ>MЭДСЭЮ„Э‚ы:UЃсўSТ  УЃ ЭB"XЃхЭХ„сУV ХMD*VЃы:UЃЭДСЩ>SЭD Щ>UЭD ЩЭ>…"\ЃЭЮ„Э‚"ZЃЭЮ„ХŸЉ!ŸЉЭИ9ы*ZЃыЭЙЂMD*\Ѓы>VЭДСЩGXYTAPQOEpAP"^Ѓ!оџ9љы"`Ѓы*^Ѓ"^ЃеЭk„2bЃў Э „х$%ђ5 ЭDƒс}х*^ЃwсСўвg >!9Эи„:bЃўYТZ > У\ >X_!9ЭХУэ ХхЭ>…"gЃсС}жДТ >*gЃУэ *ЩЉыы"cЃы*ЧЉ{•zœвъ  Э „"eЃ$%њк *cЃ#ы*gЃы~Л# ~КТк *eЃЭ<ЂвЮ :ЄЉЗТЮ >Уа >*`Ѓw*cЃУэ *cЃ ыы"cЃыУŠ ЭDƒы!"9љыЩINRBCЭ>…"jЃЭЮ„Эk„Э=„ѕ Э „$%њ >У ЏѕЭ‚ы*ДЉ"ДЉЏ2nЃы"lЃыё2iЃЗЪ? ыЭ)2nЃ:nЃOХ*lЃMD*jЃы:iЃЗЪY >EУ[ >AЭДСЩNdefb  *qЃѕЭ<Ђк‰ !"qЃa Х!Э‚nСУŽ >,ЭЎ…сl&Э †*qЃ#"qЃЩ ?D:Эq…*Ѓ+"Ѓ:` ЗЪЪ *Ѓы*oЃs#r*oЃ####"sЃУк *Ѓх Х!Э‚nСС! "qЃЭk„ў"Ъ& ў,Ъ№ Э=„Э>…:` ЗЪ х*гЉы*sЃыы"sЃы{•zœк ЭМƒс}*sЃw#"sЃУр }Эh Ур :` ЗШ*oЃ##ы*sЃыs#rы"oЃЩ ?D:*ЭЉы*oЃ{•zœаkbN#FеХ= Х!Э‚nСС! "qЃС! ы! {–#zžвF ХеЭh бСУm M?D?genwordPы"uЃцЗЪЋ ўЪЏ ўЪП УЯ Э †ЩХ… Х!Э‚nССУе Х‡ Х!Э‚nССУе !Š Э'ƒ*uЃ}ДШ$%ђѓ >-хЭЎ…с}/O|/Gi`Уњ >+хЭЎ…сЭ †Щ M:Ndefb DNdefw M: defs DхЭЮ„Эk„Э=„сў(ТК х>2` *ЭЉ"oЃЭq…схў Х!Э‚nССЭХ„Эk„ў)ЪВ Э‚хЭЮ„с}=ДЪl }жДЪ‡ УЌ ŸЉ!ŸЉЭИ9&х Х!Э‚nССУI  Х!Э‚nСzЃ!yЃЭИ9х*zЃMDсы:yЃЭ” УI ЭDƒУI Џ2` ЭB Щ"wЃЭŽ…Э‚х*wЃх Х!Э‚nСССЩ>GЭ=„ŸЉ!ŸЉЭ ы!6P!~#foЭ Щ!оџ9љ>?Э=„!9Эи„!9Э !"9љЩЭk„Э=„ў Ъ>Э‚]Tх!Э<Ђв2ЭDƒ>2ЅЉЭЮ„сЭт9*ЭЉ"|ЃХХХ>MЭ%FССС|Ѓ!0uЭ+ЩЭk„ўLЪsЭDƒЭ>…Щ*бЉ}ДЪ*ЯЉ"‚Ѓ*бЉ"ЯЉ~#foхЭ‚"€ЃхЭЮ„сЭт9ЭХ„ЭЮ„Эk„ўwТ(ЭЮ„ЭhхЭЮ„*€Ѓ}=ДТсХŸЉ!ŸЉЭИ9&хХG >/Э%FСССУўХŸЉ!ŸЉЭИ9хХФ >-Э%FССС*ЭЉ"~ЃХХХ >LЭ%FСССс~ЃЭ+УžўfЪ0ЭDƒЭЮ„Эhх*ЭЉ"~ЃХХХ>MЭ%FСССс~ЃЭ+б{ВШ*ЯЉх*ЯЉs#r!бs#r*‚Ѓ"ЯЉЩХЭfC*ЭЉ>€2Љ>dеЭпЂбЭ HЭХ„Эk„ў Т­Эk„ўbЪНЭ=„> Э=„ЭtЗҘЭDƒУ˜>eЭ HХеЭЃбхХ>MЭ%FССССЩ"„Ѓ*ЯЉ ~цўMТј>УљЏ2ˆЃ*ЩЉы*ЧЉ{•zœв.ўLТ&!N#~цG*„ЃyН xМЪ.!ыУ*ЧЉ{•zœвЋ!е^#Vы"†Ѓы{ВЪ’! N#F*ЭЉх! бs#rYP:ˆЃЗЪŠ*ЯЉх*†ЃMDсyН xМЪŠ! ~цўMТŠi`"бЉы"†ЃыУEб!#~цw*ЭЉх!бs#rУНХ*„Ѓы*ЭЉMD>LЭДС>€2ЉЩЭЮ„Эh"ЦЃ!хЭk„2ХЃсў ТљЭŒ9}Є<ТљЭ“!‰ЃЭЮы*ЦЃ‰ЃЭ+Щ}ДШ:ХЃЭ=„*ЭЉ"‰ЃХХХ>MЭ%FССС*ЦЃ‰ЃЭ+ЩЭk„ўPЪFўRЪLўSЪbўTЪiУp>2ЩЭk„ў0ТZ!У]!}2Щ!"!ЃЩ!"!ЃЩЭDƒЩЭk„ў}ЪЇў$ЪЉўAЪЏўTЪЕўSЪЛўUЪСўVЪЧўLЪЭў ЪжУЏЩЭ,УЭћ УЭї УЭП УЭХ УЭЫ УЭ>…ЭсУЭk„ўjЪ№ўdЪіўeЪќўyЪУЭУУЭ{УЭwУЭУЭ=„Э:УЭDƒЭХ„>.ЭN…>Щ*ЧЉ"ЩЉЏ2œЉ!"ДЉгЃ!вЃЭ ы:вЃўТF> УH>P!w!~#fo"ЁЉЭ]…> ЭN…ЭЮ„Эk„Э=„ў ЪwЭ‚"КЉУ}!"КЉЭЮ„Эk„ўUТ>УŽЏ2ЃЉЗЪ›!Уž!"ШЃЭk„ў ЪЕѕЏ2ЄЉёЭ=„УЭЭk„ўRЪТўEТЪ>2ЄЉУЭЭDƒЭХ„Џ2žЉ!"ЯЉ*зЉ"ЭЉЏ2ЅЉ>€2ЉЏЭ H!"ІЉ!"ЮЃЭk„ѕў$Ъ"ўSЪ(ўUЪ.ўVЪ4ўPЪ:ў{Ъ У Э,У ЭП У ЭХ У ЭЫ У Э>…хЭЮ„Э‚"аЃ*ШЃы*ІЉСхi`"ЪЃсЭ<Ђвъi`"ЪЃ*аЃ"ЬЃ"аЃх*ІЉы*аЃ+MD)  V*ІЉ))ЈЉ r*ІЉ))ЉЉ х*ЪЃMDсq#pс"аЃЭ)ѕ*аЃЗЪвх*ІЉы2дЃс+MD)  ~ѕ:дЃЭdIo&MD)) PЉ ёw*ІЉ))ЋЉ СHq*ІЉ#"ІЉ>pУљ*ЮЃ"ЬЃ##"ЮЃ>PХ*ЬЃMD*ЪЃыЭДСУ ЭDƒЭХ„ёў{Т§>€2ЉЭtЗТ!0uЭсЏЭ H*ЯЉ6#6*йЉ"гЉ"еЉ>2žЉЭФ@Э{l> ЭN…ЭѓЭЕЭjЭэ>ЭшЭ8Щwarnings detected complete Nextrn Npublic M Nend Эk„ўЪ!"ЁЉ*зЉ"ЭЉ*йЉ"гЉ"еЉў$ЪхўGЪыўTЪёўSЪїўUЪ§ўVЪўXЪ ўYЪ УЭ,УЭж УЭї УЭП УЭХ УЭЫ УЭ=„ЭУЭDƒЭХ„У:#ЃЗЪ+!dЭ]У1!wЭ]!Э†лЉ*ЧЉ{•zœв—еўGТŽ!~ў ЪŽ!~еўXТnƒХ!Э‚nСУy‹Х!Э‚nСб!N#FХ”Х!Э‚nССб!ыУ:–Х!Э‚nС! ЈЭС!єІЭС:#ЃЗЪИЭt:СЉЗЪХ!єІЭ%Э{Щ*Аѓ}=ўP0|=ў0$,мѓН0М0Ї(ўџ :ўѓ0xўаУ{ЭУ"Э3У<*#ѓЭ ы"4!EыУЅ*%ѓЭ ы"=!kыУЅ*#ѓУЅ*%ѓУЅЭ3е*%ѓЭ *=ЇэRс(RЭЊХyўС8ЏЭ<Э‰УЭ<е*#ѓЭ *4ЇэRс(,Э3Э‰*=!б*ље ЈЭєІЭЩ^#V+Щs#r+Щщexpression*гЉХыџ "гЉеы*ЭЉѕ{•zœвж!ЋЭƒ*гЉ##ёw*гЉ###бs*гЉ####Сq#pЭ Ѓы*гЉ s#rЭЃы*гЉ s#rЭўЂы*гЉ s#rЭђЂы*гЉ s#rЭЃ ы*гЉ s#rЭЃы*гЉ s#rЭЃы*гЉ s#rЭЃы*гЉs#r!9~*гЉ w*гЉЩЩы"eЄы{ц?хi`"gЄсOхЭЃ}ц?o&"iЄ*gЄысЭ<Ђкгы"gЄыые*gЄыыбЭ<Ђкж*iЄy•xœкг}‘|˜кжЭ Ѓы*eЄы{•zœвж>ЩЏЩхi`"mЄс}ДШ"kЄkbN#F*ЯЉеyН xМТ3е*mЄMDЭўЂ++"oЄyАЪ~#Ж+Ъ Убы6#6*ЯЉы*oЄs#r! ~юwУKkb~#ЖЪK*ЭЉхыN#F! бs#r*kЄ+бУп*еЉ++~#foх*еЉыс"qЄ){•_zœWе*еЉы*qЄх){•ozœg++++N#F*еЉ++ысЭиСЩ*еЉ++N#F*еЉ++х*еЉыi`){•_zœWе*еЉыi`){•ozœg++++~#foбЭиСЩ"sЄЭCх}ДЪюхЭCы*sЄs#r#"sЄс+УесЩKBыi`)"uЄyАШ*uЄ++"uЄ~#foХЭyCС Уњ!щЃЭЮх!%ЄЭЮхЭCЭАCЭCбх!%ЄЭ№сЭyCб!щЃеЭ№сЭyCЩ!щЃЭЮх!%ЄЭЮ"wЄсх)щЃ ЭЮбхЭCЭАC*wЄы!%ЄеЭ№сЭyCб!щЃеЭ№сЭyCЩ!%ЄЭЮ"yЄ!щЃЭЮх*yЄы!%ЄеЭ№сЭyCб!щЃеЭ№сЭyCЩ"{Є! ы"}Єые^#V*{Єх###~ЭёC2Єсх ^#Vе*}Єы!~бЭёC2€Єс##~цб!ЄN*€ЄЗТ<х!~цсЗТ? Т,-Т<х! #~ц сЗТ?х*{Є #~ц сЗЪ?:ЄO Ъ<,-Ъ?>ЩЏЩы"ƒЄы"Є{‘z˜вkb)ы"‡ЄыХеы*ƒЄыхi`"…ЄсN#FХ*‡Єы*…ЄMDy“oxšg)ы*Єы++Сq#pбСУLы"‡Єы{‘z˜а!е}‘|˜в"‰ЄХх*‡Єх)ы*Єыы"Єы^#Vе*‰Є)ы*Єы~#foы"ЄыбЭЎсх*ЄMDсЗЪ"‡Є) ^#V*‰Єех) YPN#F*‡Є)q#pс)бs#rс#СУЂбы"‡ЄыӘхеХХХХеЭЃбх! 9s#rсеЭхЂЭfCС! 9^#V!9ЭA!бх!х! 9^#Vс}“|šвРх)ы!9^#V!~#ЖЪЛ!~ўТ‰!~цЪЛеyўЪЎyц?ў вЎ>VХЭ HСi&ЭyCЭЃ#ЭйЂбkbеЭйб!Nс#УPеЭ Ѓб}ДЪрхЭC]>WЭ Hс+еЭпЂбУРССССССЩ?devhiloP!2‹Є~#foх!~#fo"ŒЄ!~ц_:‹ЄцсЗЪ'ўЪ4ўЪ=УE"aЄ*ŒЄ"cЄ>ГЩl&"aЄУK&"aЄУK!чЭ'ƒ>Щ2ŽЄ{цР2ЄЗТ]{Щ{ц?2Єцў2‘Є:ŽЄцЗЪ~ўЪ€ўЪŽУЊ{Щ:‘ЄўТ‹:Єі€Щ:Єў@Ҙ{Щ:‘ЄўТІ:ЄУЇ<і@Щ:‘ЄўТД>іРЩkYPў,Ъ=ў-Ъ=ў.Ъ=ў/Ъ=ўЪBў ЪBў ЪBў ЪBў ЪKў ЪKўЪKўЪKўЪVўЪVўЪVўЪZўЪZўЪZўЪbў Ъsў!Ъ‡ў"Ъ–ў$ЪЈў'ЪПў&ЪШў#ЪбЩ]ЭNЩ!^ЭNЩЭ Ѓ###^ЭNЩЭёЩЭ ЃыЭёЩ!~#foЭнƒ"aЄ>ЩЭ Ѓ####^#VыЭнƒ"aЄ>Щ!~#fo#"aЄ>ЩЭ Ѓ####~#fo+"aЄ>ЩЭ Ѓ####^#V{/oz/g#"aЄ>Щ!"aЄ>Щ!"aЄ>Щ!~юЩхХХХЭўЂЭгЂхЭfCб!~#ЖЪa !~цЪ ! х!N#FХыЩУa !N#F цеЗЪ.!KB^! ЭС! N#F! ~#foбх~<Ъa ~цхo&)х! 9^#Vс ^#Vс~цўў€ЪІў‚Ъ­ў†ЪгўˆЪйўŠЪпўŒЪхўŽЪўЪў˜Ъ ўšЪ ўœЪ ўžЪ ў ЪlУ{ыЭйУY !~ц?ўТY ХХХФФ>Э%FСССУY ЭУY ЭCУY Э‚УY !ЭyC!ЭyC*ЭЉЭyC!ЭyCУY ЭSУY Э“УY еЭпЂбеЭйЂб!~ц Т&!УK!~ўЪ6!УK!~цўЪH!УK!хЭ Ѓ~ц‡‡с…o&)’† N#F !9q#pУY Э ЃMD!9q#pУY бхх!"aЄ!"cЄ!9^#V!N#FеХ!N#FХ!^!9N#F! ~!9q#pСЭЗСб!N#FеХ!N#FХ!^!9N#F! х!9wс~!9q#pСЭЗСб!N#FХ!N#FХ!^!9N#F! х! 9wс~!9q#pСЭЗС*cЄх*aЄхOХ! 9NХ!9^! 9N#F СЭ%FСССС!9q#pсх#бхУ@ССССЩ"’Єы"”Є^#V!Э<ЂвЄ "–Єе*’Єые*–ЄMD) ы*”Єы##бЭы#бЗЪ >Щ*–Є#Уs ЏЩ!™Єs2˜ЄѕцрO{црoёц2šЄ{ц_yўрТб }ў Ъб }ў`Ти yНЪи ЏЩ:˜ЄцЪъ :™ЄцЪъ ЏЩ:оЃЗЪ!:™ЄцG:˜ЄцИЪ!ЏЩ:šЄўЪ,!ЗТ!Ъ,!ўТ!{ўТ,!:šЄўТ/!{ўТ/!>ЩЏЩoyцяўЪ`!ўЪk!ўЪv!ўЪ‡!ўЪ’!ўЪЉ!ўЪК!ўЪЫ!Ум!}ў€Тi!>ЩЏЩ}ў@Тt!>ЩЏЩ}ўРТ…!{ўЪ…!>ЩЏЩ}ўРТ!>ЩЏЩ}ўРТЇ!{ўЪЇ!{ўЪЇ!>ЩЏЩ}ў@ТИ!{ўЪИ!>ЩЏЩ}ў€ТЩ!{ўЪЩ!>ЩЏЩ{ўкк!{ўвк!>ЩЏЩy!9ОТш!>ЩЏЩK!›Єq*уЃ###nѕ}2Єёѕ}цР}ц?yцРo}2œЄyц?_сl}цЪ%"{ўв#"{ўТ%"ЏЩ}цяўЪN"ўЪQ"ў Ъ\"ў Ъx"ў ЪЁ"ў ЪФ"ў Ъч"Ує">ЩyўТZ">ЩЏЩ*œЄ}ў@Тv"{цўўЪv"{ўЪv">ЩЏЩ*œЄ}ўРТŸ"*Є}ЭМCх:›ЄЭМCыс{ЅozЄg}ДТŸ">ЩЏЩ*œЄ}ўРТТ"{ЭdIo&MD)) NЉ ~ЗЪТ">ЩЏЩ*œЄ}ў@Тх"{ЭdIo&MD)) NЉ ~ЗТх">ЩЏЩy*ЄНТђ">ЩЏЩХM*œЄ}Э1!СЩ?valmatchPѕцo&)~† N#Fi`ёц№ЗЪQ#ўЪT#ў Ъb#ў0Ъp#ў@Ъ|#ўPЪ#ўЪž#ў€Ъ­#ў`ЪР#ўpЪв#Уф#>Щ{Н zМТ`#>ЩЏЩ{Н zМЪn#>ЩЏЩ}“|šкz#>ЩЏЩKyН xМТ‹#>ЩЏЩJyН xМТœ#>ЩЏЩыЭєƒ}=ДТЋ#>ЩЏЩыЭєƒы!Э<ЂкО#>ЩЏЩыЭІpЭ<Ђва#>ЩЏЩыЭ7}ж|овт#>ЩЏЩ!џ"Э'ƒЩх~ўТќ#ыз™Эf Уp$~ў Т $ыт™Эf Уp$еЭпЂб!е^еЭЃб~хЭІ сСЗЪo$еЭпЂбХх! ^еЭўЂб#~Эъ!бСЗЪo$ц ЪT$! ~#foУ\$! ~#foх!~бЭ #ЗЪo$>Уp$ЏСЩ"žЄ!" Єх*лЃысЭ<ЂвГ$х)уЃ ^#VсMD) х*žЄMDс ###Эы#ЗТЉ$ЏЩ* Є#" ЄУ{$>ЩЭCхЭC"ЂЄсЭyC*ЂЄЭyCЩo}ўwТщ${ўNЪф${ўRЪф${ўIТч$>ЩЏЩ}ўuТ%{ўNЪћ${ўRТў$>ЩЏЩ}ўbТ%{ўCЪ%{ўBТ%>ЩЏЩ{НТ%>ЩЏЩ2ЄЄ!ЅЄs!@‡~ЗЪR%:ЄЄ_~хЭЫ$сЗЪK%х:ЅЄ_#~ЭЫ$сЗР У+%ЭDƒЩ?conevaPыYPў Ъ’%ў Ъ—%ў Ъœ%ў ЪЁ%ўЪЉ%ўЪА%ўЪС%ўЪЯ%ўЪо%Уы%CЭRЂЩCЭRЂЩCЭfЂЩ}/o|/g#Щ}/o|/gЩ}Л |КТН%!Щ!ЩЭ<ЂвЫ%!Щ!Щ}“|šвк%!Щ!Щ}ДТч%!Щ!Щ!V%Э'ƒЩыYPЗЪ)&ўЪ+&ўЪ2&ўЪ6&ўЪ:&ўЪ>&ўЪC&ўЪH&ўЪO&ў ЪV&У]&Щ}“o|šgЩЭЙЂЩЭmЂЩЭ“ЂЩЭmЂыЩЭ“ЂыЩ}Ѓo|ЂgЩ}Гo|ВgЩ}Ћo|ЊgЩKBыЭ_%Щ!ЎЄqы"ЌЄ!"ЏЄ!"БЄЗЪч&*лЃMDуЃ!ІЄЭA*лЃ+$%њч&х)ІЄ N#F! ^#VХе*БЄ]T"БЄ! ~ЭёCЗЪП&!УТ&!бы*ЏЄы"ЏЄС! ы*БЄы{ЖO#zЖGi`"БЄсУ&*ЌЄы<Ъ0)цo&)уЃ N#Fцўў€ЪE'ў†Ъ$)ўˆЪ$)ўŠЪ$)ўŒЪ$)ўŽЪ$)ўЪ$)ў‚Ъn'ў˜Ъ„'ўšЪ„'ўœЪ„'ўžЪ„'ў Ъй'Уф'! ~#foы*ЏЄы"ЏЄ! ы*БЄы{ЖO#zЖGi`"БЄУ$)! ~ц?ўТ$)*ЏЄ#"ЏЄУ$)ы"ИЄы! ~ц Т™'!УО'! ~ўЪЉ'!УО'! ~цўЪЛ'!УО'!ц‡‡…o&)’† N#F YPы"ЌЄУ$)*ИЄыы"ЌЄУ$)!"aЄ*хЃехKB:ЎЄ_! 2ЎЄ~*уЃхi`"ЌЄсMDЭЗС*хЃх2ЕЄ!ЎЄ^*ЌЄMD! ~*уЃхi`"ЌЄсMD!ЎЄsЭЗС*хЃх2ЖЄ!ЎЄ^*ЌЄMD! ~*уЃхi`"ЌЄсMDЭЗС*aЄхOХ2ЗЄ!ЖЄNХ!ЕЄ^*ЌЄMD С!ЖЄqЭ9DСС"КЄС Х*ЗЄѕ:ЖЄ_ёўVЪ™(ўWЪЂ(УЮ(!"ГЄУ)*ГЄы:ЕЄЭёCЗЪИ(*ЏЄ##"ЏЄ*БЄы*КЄы}ГO|ВGi`"БЄУ)}2ЗЄ*aЄхi`"ЌЄ*ЗЄMХKХ:ЕЄ_*ЌЄMD СЭ–EССы*ЏЄы"ЏЄ*ГЄы*КЄы}ГO|ВGi`"ГЄ*БЄ}ГO|ВGi`"БЄбы"ЌЄ*ЌЄыы"ЌЄУч&ЭЃы*БЄыs#rЭ Ѓы*ЏЄыs#rЩ!НЄs2МЄi`"ОЄЏ2ТЄ*пЃыы"РЄы{ВЪE**сЃ{Н zМТv)>2ТЄ!~*МЄНТ7*!~*НЄНТ7*!ы*ОЄы~Л# ~КТ7**РЄы!N#FЭ ЃyН xМТ7**РЄ N#FЭЃyН xМТ7**РЄы! N#FХ! N#FЭђЂхЭЃбЭvСЗШ:ТЄЗТE*ЭўЂы*РЄMD! s#rЭђЂы! s#rЭЃ ы! s#r*уЃы! s#r*хЃы! s#rЩ*РЄ^#Vы"РЄыУ`)*лЃх*пЃх*хЃх*уЃхЭЃхЭЃхЭЃхЭЃхЭЃх*ОЄMD*НЄ]:МЄЭЖы!9љы"пЃЩ"УЄ*УЄ"УЄх*хЃх*УЄ#~*уЃMDЭЗС2аЄс~o}цЪШ*}ц=o&)уЃ ~#fo##n}цї2ХЄ!"ЦЄх*лЃысOЭ<Ђв+)уЃ N#F ўЦТј*:аЄўФШ*ЦЄх)уЃ N#F ц*ХЄЕ2ХЄс#"ЦЄУд*!џџ"ЦЄ!"бЄ*УЄх##~ц№ў@ЪN+ў Ъ“+ў0ЪЊ+ўPЪС+ўЪи+ў`Ъс+У,*еЃ ~*уЃ####^#V*хЃ####N#FЭђ%"ШЄ*лЃ}=ДЪ„+*уЃ##~цЪŠ+!У+!"ЦЄУ,*уЃ####~#fo"ШЄ!"ЦЄУ,*хЃ####~#fo"ШЄ!"ЦЄУ,*хЃ####~/O#~/Gi`"ШЄУ,!"ШЄУ,Х*уЃ###~ЭdIo&MD)) LЉ ~#fo#N#Fi`"бЄ:ЄЉЗЪ,>У,>СБ2ХЄ!"ШЄ*ЦЄ}Є<ЪQ,х)уЃ N#F! N#Fi`"бЄс)уЃ N#F ц*ХЄЕ2ХЄб!~цЗЪo,ўЪ},ўЪ‹,ўЪ™,УЄ,*уЃ ~#foУЄ,*хЃ ~#foУЄ,*уЃ####~#foУЄ,*хЃ####~#foЮЄеХЬЄХ"ЪЄ:аЄOХ! KB^#V! 2аЄ~цСЭd&СССХ*ЬЄх*ЮЄх*ЪЄх*бЄх*ШЄMD!аЄ^:ХЄЭG)СССССЩ"гЄх#~сў,Т->РўХа_ѕ*гЄЭ*ё<<У-х#~сў-Т0->€ў…а_ѕ*гЄЭ*ё<<У-х#~сў.ТL->AўHа_ѕ*гЄЭ*ё<<У;-Э*Щ"еЄkb"сЃ!"лЃЏ2оЃ{ВЪŸ-kb"уЃе*еЄ~<ژ-хЭr$с]TЗЪ‘-хЭѕ,б!~цژ-! Уr-с^#VУd-*пЃЩ{YP"пЃG‡‡€o&)‡ ^#V{ВТТ-*пЃЩ{Ђ<Тш-*пЃы*‡ЭR-ы*‡ЭR-ы*‡ЭR-ы* ‡ЭR-Щ{<Ђ<Т.*пЃы*‡ЭR-ы*‡ЭR-ы*‡ЭR-ы* ‡ЭR-Щ*пЃхыбЭR-Щх!џ"зЄ!џџ"йЄ!"лЄс}ДЪ.ехЭf СХЗЪ†.i`"нЄХ*йЄх*зЄMDХ*нЄMD! ^#V! ~#foСЭvССЗЪ†.! ~#fo"зЄ! ~#fo"йЄi`"лЄс~#foбУ-.*лЄЩ?convselP{2сЄ"пЄ!"тЄЭ<Ђвл.ХMDХ!сЄNY*пЄСЭЃ-"пЄСYPХЭ.С}ДР*тЄ#"тЄУЊ.!“.Э'ƒЩхMD*лЃyН xМЪ:/i`)ы*йЃ^#V{ВЪc/i`)х!9q#pсуЃ s#rе!9N#F! х!9q#pсЭт.с^#V!9N#FУќ.*зЃ~<Ъc/хЭr$с]TЗЪ\/хЭѕ,б!~цЪc/! У=/СЩ:  n n ?loadoperPў;ТА/Эk„ў-ТЎ/*еЉ++~#fo####~/O#~/G*еЉ++~#fo####q#p>Ћ2эЄѕЭk„2юЄў ЪФ/ў ТЬ/Э=„> 2юЄёў:Тp0:юЄўAкп/ў[кp0ѕЭk„2фЄЭC"ыЄЭCы!~ц?ў к0!~црЪ0!~ўТ/0kbеЭyCсЭyC*ыЄЭyC:фЄЭ=„!e/Э^„Уf0kbъ™Э.ы!~ці€!wkb6#6kbЭyC*ыЄЭyC:фЄЭ=„!h/Э^„ё2эЄ:фЄ2юЄ:эЄў>Ъ”0ў[ЪŸ0ў]ЪЂ0ў!ЪА0ўrЪО0ўlЪО0Уж0ЭЖ$><2эЄУж0ЭЖ$!k/Э^„><2эЄУж0!n/Э^„>=2эЄУж0*юЄѕ}Э=„ёі€Э=„> Э=„>C2эЄ!юЄ^ѕЭ!%"еЃ*еЃ ~#fo"зЃ*еЃ####~2нЃ*еЃ##n&"чЄх*еЉыс){•ozœg"йЃы*йЉ{•zœв#1ЭDƒ!ы"щЄы}ДТе1ехыЭ<ЂкH1Эu!q/Э'ƒ*еЃ###~*чЄ"чЄ+$%њ”1х"хЄѕ*щЄMD*хЄ"хЄ)ы*йЃ^#Vkbц_ЭЃ-х*хЄ)ы*йЃбs#rёцсУU1с"пЃ*чЄ"лЃ:эЄўТЋ1>УЌ1Џ2оЃ!Эт.:нЃЗЪШ1ЭЖ$!Эт.ЭЖ$*пЃбы"щЄыУ.1ёхўТё1ы{ВЪё1!~цћwы^#VУн1*йЃ"еЉсЭyCЩХхЭfCсх ~#foЭйЭSсх N#F! ~#foЭй*ЭЉХХХ>MеЭхЂ бЭ%FСССЭ“с N#F! ~#foЭй*ЭЉыеЭ Ѓб s#r>€2ЉЭCЭАCЭCЭАCСЩЭ‚}=ДҘ2>2ёЄ!˜™"яЄ>GУЅ2>2ёЄ!“™"яЄ>ФѕЭC"ђЄхЭC"єЄЭCЂ™Э.ы!~црсСHўРТЫ3y2јЄ"ђЄы"іЄы*яЄMDх:ёЄ_2ёЄ*ђЄЭ."ђЄС!ёЄ^*єЄЭ.ыХХ*ђЄх"ђЄеХХХХХы"єЄы>ЭЖы!9љыХХх*іЄыеќ1Хы"іЄ*ђЄ"ђЄ ^#Vе*єЄы! N#Fы"єЄ*іЄы! ~#fo ы"іЄыб х*іЄы! N#F*єЄы! yЖO#xЖGХ*ђЄ СyЖO#xЖGХХХ!јЄNY>ЭЖы!9љыЭyCЩ!~#ЖЪл3*єЄУо3*ђЄЭyCЩх!ъџ9љеЭЃбхеЭfCбЪ4!У4!еЭйЂбсеЭхЂбх ~#foех!9s#rс}ДЪ@4х!9s#rс ~#foУ&4е!9^#V!N#F ўЪ]4>У^4Џ!еЭхЂб!х!9wс~#foЭхЂбеЭўЂбЭ<ЂвЯ4еЭЃбхх!9s#rсЭйсх###N>TЭ HЭЃ #ЭхЂ ! 9^#Vс ~#foеЭхЂбУ}4е!9~!9wЗЪ25*ЭЉ*Ѓ#"Ѓ+еЭхЂбХхХФ>QЭ%FСССФ>TЭ HЭЃх ~#foЭйб!~#fo###N>TЭ H>!9wбkbе+$%њ‰5хЭхЂЭЃх###ѕ~ццG!ЭfЂёЕ!9wЭЃ)ы!9бs#r!^#V!9s#rсУ=5б!9ЭбЪМ5ХеЭђЂбхХФ><Э%FССС!9~і!9w!9~ЗЪ№5ХеЭЃбх!9~OХеЭЃ"б###^>RЭ%FСССУ96!9^#V!N#F! N#FХ!~#fo####N#FХ!9~OХ!N#F ціO!^>NЭ%FСССб!~ўФТI6>УJ6Џ_еЭўЂб)Э!9љЩЭт3ЩЭт3ЩЭk„Э=„ў Тw6!Уz6Э‚"љЄЭЮ„Эk„ўUТ6>УŽ6ЏЗژ6!У›6!"џЄХХХХЗЪЗ6!Z6УК6!`6хХџџХХХ*љЄ}ДТи6>Ух6}=ДТу6>GУх6>Ф_>ЭЖы!9љыы!"ћЄы"ЅыеЭ>…ы{ВЪ…7*џЄхЭ<Ђв7!Џ™У87{жВТ(7!З™У87{жВТ57!П™У87!Ч™хы"§ЄЭCбЭ."Ѕ N#F*§ЄысЭ<Ђв_7!Уb7! еы*ћЄы"ћЄ*Ѕ ы*Ѕыs#rы"ЅбУ7*Ѕ 6#6ЭCЯ™Э.ыС! s#r!~ўТЕ7!УИ7!ы*ћЄыы! s#ri`ЭyCЩGXYTAPQO@ R+  a *йЉ"гЉ"еЉЭk„ўMТѕ7Э=„>#ў#ТO8Эk„ѕЭ=„ёў-Ъ8Э(ЗЪ8Э>…У8Э‚ХХХХХХХХХMDЏЭЖы!9љыЭyCУ~9ў"Т‘8ЭЂ ХХХХХХХХ*Ѓх>BЭЖы!9љыЭyCУ~9Ь7ѕЭ „ё$%њ>9Э=„Ѕ!ЅЭ ]T:ЅхўЪЙ8#^#Vсўк9 ~ЗЪ9ХХХХХХ ХХХЭ…I_ЏЭЖы!9љыЭyCУ~9ХХХХХХХХе>@*ЅЕЭЖы!9љыЭyCУ~9ўТL9*ЅЭyCУ~9ў'ЪV9ў.Тe9ЭC"Ѕ!е7Э^„У~9ў?Тp9Э2У~9ўcТ{9Эf6У~9Э|/Эk„ў Тш7> Э=„ЩЭп7ЭCЂ™Э.ы!~црўРТЏ9ыЭй!џџЩ!~#foЩехЭп7ЭC™Э.ы!~сw!N#Fсq#p!~#foЩхЭп7с"Ѕ}=ДТі9!˜™Уљ9!“™хЭCх*Ѕ}=ДТ :>У:>_сСЭ.ЭйЩЭп7ЭCЊ™Э.ЭйЩ!тџ9Щ"Ѕы"Ѕы^#Vы"Ѕые*Ѕыыб{О# zОЪP:ЏЩы"Ѕы*Ѕ{•zœв•:kb)еы*Ѕы##N#Fбы)ы*Ѕы##yО# xОЪˆ:ЏЩ*Ѕыы"ЅыУX:>Щыkb~#fo)##Щ"Ѕ{2Ѕх~#fo:Ѕ_Ky•xœвщ:хk&){2Ѕы*Ѕы##N#Fе!Ѕ^{=o&)б##q#pсУА:с^#Vr+sЩы" Ѕыыkb~#fo)##еы* Ѕыs#rбы^#Vr+s{жPzоиЭМƒЩхы"$Ѕ^#Vс""Ѕхs#rы"(ЅЭ(:х*(Ѕ)ы*"Ѕы##б}“|šкN;ЭМƒ!ы*(Ѕы}“|šв;"&Ѕх)ы*$Ѕы##N#F*&Ѕ)ы*"Ѕы##q#pс#УQ;ы)б##Щ!Мў9љ*ЭЉ"*Ѕ",Ѕ!ЭхЂЄбх*УЉы*ХЉ{•zœв6=Џ! Ов>! 6!ыУ>*УЉ 6Џ26Ѕ*УЉыы"7Ѕы*ХЉшџ {•zœвЉ>! е~ЗЪ›>!^#V!~ўMЪx>ўPЪ›>ўLЪ†>У‘>! ~#foЭљ=У›>! ~#foЭљ=*7Ѕ Эљ=б!ыы"7ЅыУB>:6ЅЗТ5>*УЉы*ХЉ{•zœа! ~ЗТх>kbN#F! 6kb~#fos#rkbN#F!q#p!ыУД>Э>*УЉы*ХЉ{•zœв3?!6џ#6џ!е^#V!~ўMЪ#?!~ўLТ*?! ЭЇ=б!ыУє>Э>*УЉMD*ХЉy•xœвЗ?! ^#V!~ХўLТ­?е! ";Ѕ!;ЅЭ<="?Ѕ ~бўMТ­?! N#FХ*;Ѕ С}Й |ИТ­?*?Ѕх 6! ~юwс N#F! q#pС! MDУ;?Э>*УЉыы"9Ѕы*ХЉ{•zœв}@!е^#V!~ўMЪщ?!~ўLТo@! N#Fеi`";Ѕ*9ЅMD! "=Ѕ!=ЅЭ<=х!;ЅЭ<=ысС{Н zМТ$@! 6Уo@! ХN#Fi`";Ѕ!;ЅЭЇ= ~СўPТM@! ~ЦwУo@! N#F! ~#І<Тo@*Ѓ#"Ѓ+ы! s#rС! ыы"9ЅыУУ?Э>Щ?potoblkPMD*УЉы*ХЉ{•zœвБ@kbyО# xОТЉ@ыЩ!ыУ‘@!@Э'ƒЩ?partitionP*ЭЉ"УЉЏ2GЅ*зЉы*УЉMD{ВЪ”A*йЉехi`"CЅсy•xœкё@ЭМƒб!~цw*CЅMDi`s#r!q#p! 6! :GЅw! 6#6! 6#6! 6ы"AЅыы^#V!~цўdЪNAўeЪXAУgA:GЅ<2GЅУ_A:GЅ=2GЅ!~ц€w{ВЪvA!~ц€Ъ1A! Хх*AЅMDсq#pi`Сq#p! MDУз@*УЉХ СХ}‘|˜кЋA!И@Э'ƒс"ХЉ"ЭЉ*УЉы*ХЉшџ {•zœвsB!KB^#V!~ХўLЪрAўMЪ*BУYB! х! ы"AЅыбs#r!! 4Х*AЅы! ~#foы"AЅыЭ‹@ыС! s#rе*AЅы! бs#r! 4УjBХ! ~#foы"AЅыЭ‹@ыС! s#rе*AЅы! бs#r! 4УjB! ы! s#r!! 4С! ыУЖA*ЭЉMD*УЉы*ХЉ{•zœвНB*йЉехi`"EЅсy•xœк›BЭМƒб! х*EЅMDсq#p! n&) MD!ыУ|Bi`"ЭЉ*УЉыы"CЅы*ХЉ{•zœв Cе!}ж|овCх)ы*CЅы ^#V{ВЪ C! ^#Vr+sыы*CЅыs#rс#УйBб!ыы"CЅыУЫB*УЉMD*ХЉy•xœвRC! ^#Vх! n&){•_zœWсr+s! MDУ%CЭˆ;Щstack overflowAЭ(:ы*еЉ}“|šи!VCЭ'ƒЩхЭfC*еЉбs#r#"еЉЩ?popP*йЉы*еЉ{•zœкЃC!‰CЭ'ƒ*еЉ++"еЉ~#foЩ}ДШхЭCс+УАC2HЅц?ўкЪC!ЩўТгC!0ЩG!ЭfЂы:HЅцРўРТяCkb){ЕozДgыыЩ2IЅы"JЅцРТџCЏЩ:IЅЭМCы{ВТD*JЅ}цПўПТD>Щ*JЅ}ц0Ъ)D}і@ODi`{ЅOzЄGyАЪ7D>ЩЏЩ2LЅ!MЅs!"NЅў=ЪvDў7ЪvDўЪDў ЪБDўЪрDўFЪEў0ЪEў6ЪEў\Ъ-EУ;E{Љц?Т;E!Щ{ЙТЂD!9~ўТЂDЭЃХЭІpы!СЭ<Ђв;EyўФТ;E!"NЅУ;EЭЃЭєƒы!Э<ЂвЧD!"NЅЭЃЭєƒы!Э<Ђв;E!"NЅУ;EЭЃЭєƒы!Э<ЂвіD!"NЅЭЃЭєƒы!Э<Ђв;E!"NЅУ;E{ўФТ;E!€"NЅУ;EyўFТ;E!€"NЅУ;E{ц?ўТ;E!0"NЅ:LЅ2LЅўWТYE*MЅ}ц?ўвYE}цўіР2MЅ:MЅц?ўТkE:LЅўWТtE:MЅЭМCУwE!х*LЅ&)pЁ ы*NЅы{Ж_#zЖWс{ЕozДgЩ2PЅўFЪАEўЪКEў7ЪрEў=ЪрEУF{ўФТF!Щ{ЙТF!9~ўТFЭЃЭІpы!Э<ЂкFЭЃЭІpЩ{ЙТщE!Щ{ўФТѕEyўТЪF{ўТТFyўФТF!Щ*PЅ& Ё n&Щ*ЯЉ"ЭЉ*ЯЉ##~#fo"ЯЉЩ!RЅs2QЅ!SЅqўVТ;Fyц?ў а:QЅўWТIF{ц?ў а!"бЉ*гЉы*ЭЉ {•zœвdFЭМƒ*ЯЉ}ДЪG*ЭЉы*ЯЉs#r:QЅўVТG:ЉЗТG:žЉЗТG*ЯЉ ~ц€2Љ*ЯЉ ~ц2TЅўWТОF*ЯЉ ~*SЅНТОFЭFЩ:TЅў7ЪЫFў=Т G*ЯЉ ~!SЅ^ЛТ G*ЯЉ n}ц?ўЪ G}ц?ў в G}ц?ўТG{цТ G}2SЅЭFУGЏ2Љ*ЯЉы*ЭЉ##s#r*ЭЉ"ЯЉ:Љ*QЅЕeхѕ}2QЅё*ЭЉ w*ЭЉ####6€*ЭЉ 6*ЭЉ :RЅw*ЭЉ 2RЅ:SЅw!92SЅѕ~*ЭЉ wЭђЂх!9nх!SЅN!RЅ^*QЅ}Э9DССы*ЭЉ s#rСHyцќўЪРGyўЪРG!9~цќўЪРG!9~ўТщGЭўЂы*ЭЉ s#rЭђЂы*ЭЉ s#r*ЭЉ "ЭЉУѓG*ЭЉ "ЭЉёўMЪўGўLТH!€УH!}2ЉЩ2UЅyХХХO:UЅЭ%FСССЩх~#foысх{–#zžв=H!џџУ>Hыысs#rЩхыYP{ВЪeH}жЊ|о*к\H!џџУeH)MD) УHHысЭ&HЩы! N#FХ! nх! NХ! KB^! ~i`"WЅСЭ9DССы*WЅMD! s#rЩ*УЉы*ХЉ{•zœа!~цŸwkbе^#V!~ц€ЪиH!~цПwы^#VУПHб!ыУЉHы!~ц€ЪѓHы^#VУтHыЩц?2YЅѕ{ц?oёНТIЏЩўТI}ўЪI:YЅўТ"I}ўТ"I>Щ>ЩЋц?Ъ.I>ЩЏЩ‡<Щ‡Щц?ўТ?I>ЩцўЩo&MD)) NЉ ~ЗЪXI{Э3IЩ{Э0IЩ_ЭBIЦ Щц?ж цЩo&MD)) NЉ ~ЗЪI>РГЩ>@ГЩѕЭdIбZЭlIЩ?tagrPцРў@ЪЊIў€ЪБIўРЪЕIУЙI{ЭЮpі@Щ{і€Щ{іРЩ!IЭ'ƒЩ!\Ѕqы"ZЅы!_~ц€ЪJ>2]Ѕ:]Ѕ*\ЅНЪJе=2]Ѕo&ы*ZЅы ~ЭdIбЛТйI:]ЅЩ>џЩ insert B(B, B) on W, before W{2`Ѕ"^Ѕ##~#fo"ЯЉЏ2Љ!aЅqХХХ!aЅ^:`Ѕ!9NЭ%FССС*ЯЉх*ЯЉы*^Ѕыs#r!бs#r*ЯЉЩы!6ЏўвJo& 6<У|J!6#6Щхkбы"bЅыхе&}2dЅMD)) NЉ ~ЗЪНJ!?џУЭJ:ЄЉЗЪЪJ!џУЭJ!Пџ}2eЅх:dЅЭРIсбС<Ъ#Kх! ~ц?сўТѕJ}цЯ2eЅ>ўвKo&ѕ ~ы"bЅЭМC}/*eЅЅ2eЅё<*bЅыУїJ:eЅЩХ! ~ЭdIСЙТOK*bЅы! ~ўЦЪIK! ~ўЦТOK:eЅцЯЩ:eЅЩ{"fЅЭ5Iѕ*fЅ ~СЭJЂцЩ{2hЅYехЭSKСбўТ}K{Щ:VЅЗТ‘K*УЉyО# xОТДK! n{<ЪДK}цРўРТ­K:hЅЭBIЩ}‡‡oӘK>џЩыы"™ЅыЏ!œЉОвфKo&iЅ 6o&)yЅ 6#6o&w<УОK*УЉы*ХЉ{•zœвŽL!n&"›Ѕkbе^#V!~ц€Ъ…L>=ўџЪ~Lo&ѕѕ ~ы"ЁЅыЭdI_{сlўвvLе,-ЪBLk&iЅ ~ЗТWLk&)yЅ х*›ЅMDсЭDHЏ!œЉОвlLo&iЅ 6<УXLбk&iЅ 6ё*ЁЅыУLы^#VУLб!ыУшK!ŸЅs{!œЉОа{<2 Ѕ!œЉОв?Mk&)yЅ е^#Vo&)yЅ ѕ{–#zžв6M*ŸЅ&}2ŸЅ)yЅ ~#fo"Ѕ* Ѕ&х)yЅ ^#V*ŸЅ&}2ŸЅ)yЅ s#rс&х)yЅ ы*Ѕыs#r*ŸЅ&}2ŸЅы*™Ѕыы"™Ѕы^с&ехы*™Ѕы~*ŸЅ&wс&бsё<2 ЅбУŸL!ŸЅsУ”L*ЃЅљџ ы*ЭЉ{•zœаЭМƒЩ2ЇЅ*йЉѕљџ ы*ЃЅ{•zœк?N:ЇЅ‡Ц O!ЊЅq!~цеЗЪ§M!~цЪ—M>VУ™M>`!nХхы"ЈЅ_е*ЈЅы!2ЋЅ~#foы"ЈЅыбЭ$JС"ЌЅСХ*ЈЅы!Nы"ЈЅ:ЋЅ<_е*ЈЅыkb~#foбЭ$JСы*ЌЅMD! s#r!q#pУ;N!е~#ЖЪN!nх!~#foXЭ$JСбkb~#ЖЪ;N!ЊЅNХ!Nkb~#fo\Э$JСсУbMёЭЁYЭu]ЩхеХх!9sсЭйЂЭfCЭЃ##^#V!9s#r!~ц€ЪюN! ~ЭdI!9^ЛТWNеЭўЂб ~ўXЪJOўcЪJOўVвWN!9sЭGM*ЃЅљџ "ЃЅеЭўЂбхN#F*ЃЅ###q#p*ЃЅ6#6*ЃЅ 6с####~ц_е!9^{бЭlI*ЃЅ wУJOеЭўЂб n&{•zœвJOеЭўЂб N#Fkb) е^#V!~ц@ТEO!~і@w!9s#r!9~_е!9^#VkbбЭGNбУёNСССЩKBыђXOыЩ! ~ўVЪƒOўTЪƒOўWЪˆOўUЪˆOўJЪˆOўSЪOўRЪ—OУœO!ўџЩ!Щ! ~#foЩ!ЩыЩех~#foхы~#foы! ~ц?i`"ЎЅС*ЎЅхўТзOyі0Oi`"АЅ{цЯOBi`"ВЅУ Pы"ВЅыХ ~ЭМCхх*ВЅMDсyЕoxДgMDi`"ВЅс}/O|/Gс}ЁO| Gi`"АЅб!~ўNЪ"P!~ўRТxPы"ЎЅе*ЎЅы! ~бѕЃБOё‡ѕ{‡‡_ёТ5PyG‡€цПOХ*АЅ}БO|АGi`"АЅСy/Ox/G*ВЅ}ЁO| Gi`"ВЅУНP>ўвНPo&ѕ ~ы"ЎЅЭМCхы*АЅы{ЕozДg"АЅс}/O|/G*ВЅ}ЁO| Gi`"ВЅё<*ЎЅыУzPсы*АЅыs#rсх*ВЅMDсq#pЩMD!"ДЅ!ДЅŸЉЭžO*ДЅЩy2ЙЅ{2ИЅ"ЖЅ ~ўVв/QЏ2КЅўв/Qo&ы*ЖЅы ~ЭdIўв%Q*ИЅНЪ%Q>Щ:КЅ<2КЅУQ:ЙЅ_:ИЅЭlI*ЖЅ ^#VЭёCЩ{2ЛЅ]Tх!~ц€Т_Q!^#V!~сўLЪpQўMЪ­QЩ!~#foХхy2МЅЭвPх!МЅNY:ЛЅ2ЛЅЭlIбЭёCсСѕ:ЛЅ_ёЗТЉQхЭчPбЗЪ­Q!ЩыЩ"НЅ*НЅy2СЅы"ПЅыAХе"НЅ~#fo"ЦЅ!9~2ЬЅЭGM*ЃЅљџ бs#rё!9^ЭlI*ЃЅћџ w!"ТЅ>2ФЅ!"ЪЅ!"ШЅ>2ХЅ*НЅN#F! N#FХ*ЦЅ"ЦЅ С~Й# ~ИТШR:СЅ_!9N*ПЅѕхЭGQбСH}Л |КТШRы"ПЅ*ТЅ}ДТ`R!УcR!хYе!9N*ПЅыkbбЭjK2ЭЅ<Т‚R!У…R!}*ФЅЕсЕ_:ХЅЛкЋRцТШR*ПЅ##N#F ц€ТШR:ЭЅўџЪИR!9w{2ХЅ*ЦЅ"ШЅ*ПЅ"ЪЅ:ХЅц *ЦЅў ЪUSх*ПЅ##^#Vы"ПЅы!~ц€сЗЪ9S*ТЅеЭNO"ТЅб!~ўVкS!~ўcТS! ~ЭdI*СЅНЪUS*СЅ]!9N*ПЅЭчPЗЪR.}2ФЅУRшџ ыы"ЦЅы*УЉ{•zœкUSkb"ПЅУR:ХЅѕц*ЬЅЗЪmSх!9~сНЪНS*ЃЅљџ "ЃЅ*ЃЅ###ы*ЪЅыs#r:СЅ!9^ЭlI*ЃЅ w:ХЅѕі*ЃЅ wёцЪВS!УЕS!ы*ЅЅ"ЅЅ*НЅы*ШЅыs#rёцЩy2аЅы"ЮЅы"вЅы"жЅ*йЉ"ЃЅ!"ЅЅ*ЅЅЭ<ЂвЎT!9nХх*жЅы!вЅЭЏQССЗЪ TЏЩ*вЅ}ДЪЎTХЏ2бЅЏ*вЅ ОвnT!9^ѕ*вЅ N#Fo&) ~#foЭSKсleхўЪiTх*вЅ N#Fс&) ~#fo"дЅ:бЅ<2бЅё<УT*дЅ:бЅС=ТЎT"вЅХхy!9^ЭlI*вЅ ^#VЭёCсбЗТЎTх!9NсеЭGQ"жЅС}ДТшSЭЅH*йЉ"ЃЅ:аЅ_*ЮЅѕхЭGNЭGM*ЃЅљџ "ЃЅ*ЃЅбs#rё!9^ЭlI*ЃЅ##w*ЃЅ###6#6*ЃЅ 6>Щ"иЅ!~цoХх*иЅЭЬSС;ё3Э[MЩ?replaceP2кЅ>2VЅ*УЉыы"лЅы*ХЉ{•zœвхUkbе^#Vы"нЅы!~ц€ЪзU!е~2рЅўcТŠU! ~ЭdI*кЅНТŠUхЭЅH*йЉ"ЃЅб*нЅеЭGN;ё3Э[MУЫU:рЅўVвЫU*нЅ]Tх:кЅ2кЅЭРIсѕ:кЅOё<ЪЫUХх####~ц_схЭSKсСўЪЫUы*лЅЭ§Tс^#Vы"нЅыУHUс ыы"лЅыУ3U*УЉы*ХЉ{•zœаkbN#Fе! ~ц€Ъ…V! ~ХўVв~VЏ2пЅўвyVo&ѕ хi`"нЅс ~ЭdI*кЅНТlV*нЅх####~цТDV!UЭ'ƒС! ~ц_*пЅ&}2пЅ Х ~Э–I*пЅ&С  wё<2пЅ*нЅMDУVi`ЭkHсN#FУїUб!ыУщUKыы"сЅы!~2уЅ!~ўcЪШVў\ЪиVўaЪиVўWЪиVўXЪуVў`ЪуVўVЪуVУыV! ~ХЭdIСЙТыVЏЩ! ~2уЅУыV! ~2уЅ*сЅы!~ўVвW!~цЪW:уЅцG>Э_ЂУ!Wы"сЅYе*сЅыkbбЭ™Jѕці@GёцЊц G‡€ЩKыы"фЅы!~ц€ТEWЏЩ!~Хў=ЪgWў7ЪzWў\ЪzWўaЪzWўWЪzWУWХi&MD)) NЉ С~ЗТWХ! ~ЭdIСЙТWУ•W*фЅ ^с&MD)) NЉ ~ЗЪЕW{цG{цЊцАG‡€Щ{цЊцG‡€ЩХKy2шЅ"цЅЭўЂ6С 2ьЅЭ Ѓ~2эЅ*УЉХы*цЅые{Н zМТ&X!шЅNi&MD)) PЉ ~2ыЅўџЪ&XцўўТX *ДЉЭ<Ђв&X:ыЅцўG>Э_Ђ2эЅ*йЉ"еЉсN#F! ~ц€Ъ”Y! :эЅ_s! YP~е2юЅўVв…X.}ўв…X&х ~ц?сў кX!эЅ^{цЊ2эЅ:ьЅцЊ2ьЅУ…X,УUXб:шЅѕеЭРIс"щЅбZе<ЪЅXЭŽV*эЅЕ2эЅб*щЅх{2шЅЭ2Wѕ/*эЅЅ2эЅё/*ьЅЅ2ьЅ:юЅс]T2юЅўVвэX ~ц?ў кэX:эЅцЊ2эЅ:ьЅцЊ2ьЅ! ~еЭdI!шЅNЙТYЭђЂ6*йЉ"еЉY*щЅЭŽV2эЅЏ2ьЅ!юЅNyбеўVТGY! ~ўТGY! ~Э5IG:эЅЭJЂцo&ЭyCУYыyўWТY ~ўТY*йЉы*еЉ{•zœвY*щЅ ~Э5IѕЭC}сlEЭ_ЂѕE>Э_Ђ/*эЅЅсД2эЅсN#FУ0X:ьЅСЭ Ѓ:эЅwЩO!яЅq*УЉы*ХЉ{•zœвZ!6џ!6!ех!х!хы"№ЅYе*№Ѕыkbбy2яЅСЭПWССб!6џ#6џ!~!ЖO!q#p!ы!яЅNУЊY*УЉ ^*УЉ s#r*УЉ 6#6Џ2ђЅ*УЉ ы*ХЉ{•zœв‘ZЏ! Ов‰Z!2іЅ~ѕ! N#F:іЅo&) N#F! ёОв‚Z!6>2ђЅУ‰Z:іЅ<УHZ!ыУ=Z:ђЅЗТ1Z*УЉы*ХЉ{•zœвНZ!~ЗТЕZ!6џ!ыУœZЏ2ђЅ*УЉ ы*ХЉ{•zœвP[џЏ! Ов[! ѕy2ѓЅёN#Fo&) N#F! ѕ:ѓЅOyІOё<УжZ!yО# xОЪH[!q#p!N!~ЁO#~ G!n&yЕOxДG!q#p>2ђЅ!ыУЩZ:ђЅЗТНZ*УЉы*ХЉ{•zœа>џ2єЅ!ы"№Ѕые~2ѕЅŸЉХѕЅХєЅ:яЅ_е*№ЅыkbбЭПWССб!:ѕЅw!ыУ[[2їЅЏ2VЅ*УЉыы"јЅы*ХЉ{•zœаkbе^#Vы"њЅы!~ц€Ъ”\:їЅеЭРI<Ъˆ\>2ќЅ>2§Ѕo{ўвˆ\х:їЅеѕЭBI_ѕ*њЅ"њЅЭSKСH*њЅбZЗТu\хХKы*јЅЭЬSСсЗТ+\ х~*ќЅЕсw*йЉы!љџы*ЃЅ{•zœкu\!~#ЖЪX\!~#fo####~і wkb~#ЖЪ/\kb~#fo####х~*§ЅЕсwУ/\б:ќЅ‡‡2ќЅс}‡2§ЅУщ[с^#Vы"њЅыУЦ[с ыы"јЅыУГ[*УЉы*ХЉ{•zœвС\!6#6!ыУІ\Џ2І*ХЉы!шџMD*УЉy•xœкm]! 6#6{ўв-]k&) ХХ С~#ЖЪ(]k&) хi`"ўЅс N#F! N#FХ*ўЅMD! С~Бw#~АwСУф\YP!~/O#~/G!~ЁO#~ G!yЖO#xЖG!yО# xОЪЩ\>2І!q#pУЩ\:ІЗТС\Щ*УЉы*ХЉ{•zœвз]!"І!"І!N#Fе! ~ц€ЪЖ]І!ІХЭžOС! N#FУ—]С! ы*Іыs#r! ы*Іыs#r! ыУy]:ЅЉЗТф]!Уі]*КЉ}=ДТѓ]!€Уі]!0ы*ХЉ++s#rЭЂ\*УЉ ~#fo"МЉЩ*УЉы*ХЉ{•zœв_!"І!"Іkbе^#V!~ц€Ъъ^!~еўcЪS^ў\Ъ„^ўXЪЕ^Уу^! ~ЭdIG!ЭfЂх*І}/_|/Wс}Ѓo|Ђgы*Іы{ЕozДg"ІУу^! ~ЭdIG!ЭfЂх*І}/_|/Wс}Ѓo|Ђgы*Іы{ЕozДg"ІУу^! ~ЭdIG!ЭfЂх*І}/_|/Wс}Ѓo|Ђgы*Іы{ЕozДg"Іс^#VУ1^б!х*ІMDсq#p!х*ІMDсq#p!ыУ^ЭЂ\*УЉ ~#fo"ОЉЩ{2ІЭSKo&ы{жzокB_!Щ{=ВТZ_*!Ѓ}ДЪU_!Щ!Щ:Іцo&)!_ ~#foЩ2Іы"Іы! ѕ~ХЭdI! ІСХОТ­_!™_х*Іх! ^:ІЩg>”_еЭђЂMD* ІбЭDHС! ~ХЭdI! ІСбZОР!ж_х*Іх! ~i`"І!ІsЩg>”_е!І^*ІЭ)_бхЭЃMD* ІбЭDHЩ+[W:B:B]y2!І"ІехЭсH n&""Іб!~цPСЗРХ!~і@wе*Іы*йЉ{•zœк=`ЭМƒ*Ібs#r*І##Сqkbе: І_ЭŽVo:!ІЅѕ}2%Іё*І###w*І####"Іб: ІЭРI*%І<Ш: ІЅO! І" І!$Іs{ўаеyцAХўЪЂ`У^a*Іы!~ў7ЪИ`ў=Ъз`Уі`ы"І*"Іх!$І^{Э3I*ІMDѕHЭm_СУUaы"І*"Іх!$І^{Э0I*ІMD%IЭm_СУUa! ~ЭdI! ІОТa*"ІMD* ІЭDH>ўвUao&ѕы*Іы ~ЭdI! ІОТPa:$І_: ІЭBI_*ІЭ)_ы*"ІMD* ІЭDHё<Уa* ІЭ&Hёц?O* І##" Іб!$ІsУ`хеХх!9qсх!9sсЭйЂЭfC!9^#V!~цТpb!~/!9^Ѓ!9wЗЪpb!9^#V: ІеЭРIсЗЪpbх<Ткaх####~ц сў Тэaх!9~сOх!9~с_Э`сх####~ц€сЗЪb: І_Э2W/!9^Ѓ!9wЗЪpbЭЃ~#foЭйЂУŒaЏўвpbo&)ѕх!9^#Vс ^#V{ВЪkb!~ц@Тkb!~і@wkbх!9~сOх!9~с_~#foЭuaё<У bСССЩхеХх!9sсЭйЂХхЭfCбС!~цТfc!9q: ІеЭРIсѕхх!9Nсх!9qс<ЪРbх!9~с_Э`сх####~/!9^Ѓсх!9wс: І_Э2W/!9NЁO!9qё!9^ЗЪfcЪfc<Тc ЪfcЭЃ##^#V!9s#r!~ц€ТˆbЏЭЃ ОвfcЭЃ N#Fo&) ѕ^#V!~ц Тac!~і wkbх!9~сOх!9~с_Эtbё<УcСССЩ makeweb(q:W) хЭЅH: ІO.}ўвšcyЅГ_yцO}‡oУ…c*ЭЉ"І"Іс: ІOЭ`*Іы*І{•zœа!NеХ!KB^i`~#fo~#foСЭuaб!Nе!е^с~#foЭtbбУЏc[B]=W/?assregP choose BO!&Іq*УЉы*ХЉ{•zœвkdы"-Іые!~цРw!~еўcТOd! ~ХЭdIСЙТOd*-І####~іwс^#Vы"-Іы!~ц€Т#dб!ыУdyAХЭЁYЭu]ёѕЭЃ[>џ2,І*УЉы*ХЉ{•zœвеekbе^#V!~ц€ЪЬe!~цеЗТХe:&ІѕеЭРIсбZ<ЪХeхЏўвбdo&) І 6#6<УЛd{2 ІсхЭŽV2 ІсЭyc!"'І!+Іs{ўв`ek&) І еы*'Іы{–#zžк4eе!+І^k&) І б~Л# ~КТWe!+І^{*,ІНЪ4e:*ІНЪWe!+І^k&) І е^#Vы"'Іыб!*Іs:&ІЭBI2)Іб!+ІsУэd:*І2,І*'І}ДТte!їcЭ'ƒ*Іы*І{•zœвХeы"/Іые:*І‡ѕ:&І_е*/Іыkb~#foбЭŽVСЭJЂцс]TЗЪОeN#F ц№і*)ІЕУxeс^#VУ’dб!ыУ‚dёѕЭЁYЭu]ёЭ"UЩЭu]Џ2?І*йЉ"еЉ*ХЉы!шџы*УЉ{•zœкh!е^#Vы"7Іы!~ц€Ъh!"1Іы"=Іы!~еўVТЁgеЭC";І ~2@Іб! е~2AІЭC"3ІЭCыы"5Іы!"9І:@ІѕЭёC*AІы*3ІыЗҘf:@ІНЪ€fхЭёCсЗҘfх*7І"9І:@ІсНЪГfЭМC"1ІУГf}*5ІыЭёCЗТГf*;І"9І"=І*7І";І*9ІыСHс{ВЪіfyцРўРТаf!67Ужf!6=! :AІw! еq*;ІЭtJсЭkH>2?ІУЁgХ 6T*;І";І 6U:AІСХ*;І2AІЙЪcgyц?ўТcg:AІOцЪcgХх*3Іыyц>і€ЭёCсСЗЪFg 6JУcgy!AІqЭЮpі@oх:AІц>і€O*7І=Э$JСс}eхѕ:AІ_ёЛЪšg}цЪšg{ц?ўТšg}ц>і€OХ}ЭЮpі@O*;І~#fo=Э$JСёЭМC"1Ісх ~схўWТУgх!ЭyC!ЭyCсЭyCУh*еЉњџ ы*йЉ{•zœкh*=ІMD!еŸЉЭžO*7І ы*1Іы~ГO#~ВGс~Бw#~Аw+УЦgс##^#Vы"7ІыУfбУѓe:?ІЩЏ2BІ!"GІ*ХЉы!шџы*УЉ{•zœкi!~#fo"CІе]T####~ц€Ъiе*GІ"GІ}ДЪhх*CІысх ~#foЭNOыС! s#r! ~#foУVhб!~*GІMDўaЪ™hў`ЪБhУi! 6#6!q#pы"GІыУi!Х~#fo"EІ С~#ЖТi*EІyН xМЪчh! 6ў#6џ! N#FУШhх N#Fi`"GІ!6Vс 6W>2BІ!~#fo"CІУChбУ(h:BІЩ2IІЭЁY*УЉы*ХЉ{•zœаkbе^#Vы"JІы!~ц€ЪЄi!~еў\ЪXi!~ўaҘi! ~ЭdI*IІНҘi*JІх ~ц?_схЭSKСўҘi! ~ХўaТ”i! ~#foЭtJсЭtJс^#Vы"JІыУ9iб!ыУ&i remvst:Э^*УЉы*ХЉ{•zœа!~#fo"LІ!е^#Vы"NІы!~ц€ЪЉj!~2PІеўXТj! ~ЭdIG!ЭfЂы*LІы}Ѓo|Ђg}ДТj*NІыыЭtJУ›j:PІўXТNj*NІ ~ЭdIG!ЭfЂ}/O|/G*LІ}Ёo| g"LІУ›jў\Тvj*NІ ~ЭdIG!ЭfЂы*LІы{ЕozДg"LІУ›jўcТ›j*NІ ~ЭdIG!ЭfЂы*LІы{ЕozДg"LІс##^#Vы"NІыУнiб!ыУНiЭu]*ХЉы!шџы*УЉ{•zœи!~#fo"QІ!е^#V!~ц€Ъ k!~еўcТ k! ~еЭdIo&MD)) OЉ 6сЭtJУ~k! ўXЪk! ў\Т~kы"SІы~хЭdIo&MD)) LЉ х###6сх~#fo#N#F*SІы!q#p! 6#6с##~ЗТfk!44:ЄЉсЗЪtk>wУ~kх!4>сwС! ы*QІыs#r!QІŸЉХЭžOС! ^#VУйjбУЙj*ХЉMD!шџ ы*УЉ{•zœи!N#Fi`"UІе! ~ц€ЪGl! ~Хў7Ърkў=Ъ#lУ9l! ^! ~ХЭѕHсЗЪњk=ЪlУ9lЭtJУ9lMD! ^#V! ~ЭёCЗТ9l*UІMD! 6bУ9l! ^! ~ХЭ%IсЗТ9lЭtJс##N#Fi`"UІУУkСУЉk allocation order = [ B ] *** allocate B ***:œЉЗЪm!WІЭЗK:œЉ=ўџЪтlo&WІ ѕ^k&MD)) PЉ ~<Ъоl{SеЭ]I_ё2gІЭlIOХ*gІ&MD)) NЉ O~ЗЪдl>7Ужl>=_*УЉЭ$JСёУ‹lЏ!œЉОвmѕ>:ЭN…сl&хWІ ~Э d;ё3<Ууl>;ЭN…Џ!œЉОв"mo&WІ ѕ~Эiё<У mЭтeЗЪ0mЭhЗТ"m*УЉы*ХЉ{•zœв~mkbе^#V!~ц€Ъum!~ў`Т^m!6X!~ўaТnm!6\ы^#VУDmб!ыУ4mЭЖiЭВjЭЄkЩ inc hl dec hlNld e,(hl)Ninc hlNld d,(hl)Nld (hl),dNdec hlNld (hl),eNinc deNld R,RNinc aNdec aNinc RNdec RNld a,RNld R,aNand LNadd a,LNsub LNadd a,aNadd hl,hlNld h,lNld l,0NrrcaNxor aXY(hl)bcdehlMabcbcdedehlhlhlaf !9"nІЭ Ѓ#ЭпЂ+~2mІЗШўRЪбnўWЪњnўDЪoўLЪ*oўHЪ=oўSЪQoўMЪboўCЪЏoўNЪРoўXЪЩoўYЪЩoУp*nІ##"nІ++~цўТьn!YnЭ†У‰no&^n ~ЭЎ…У‰n*nІ##"nІ++~ц?o&MD) gn ~Э†У‰n*nІ^#V#"nІыЭ †У‰n*nІ##"nІ++n&Э †У‰n*nІ##"nІ++#n&Э †У‰n*nІ^#V#"nІыЭ†У‰n*nІN#F#"nІ 2mІ{!ТЉОв—o ЗЪ—o ў_ТŠo>@У‹o еХЭЎ…СбУro{!ТЉОв‰n:mІў?Ъ‰n>@ЭЎ…У‰n*nІ##"nІ++~ЭЎ…У‰n!nЭ†У‰n*nІN#F#"nІ! ~ўЦЪёo! ~ўЦЪёo! ~ўЦТ‰n:mІўXТp!ˆmЭ†!jІ4У‰n!‘mЭ†!jІ5У‰nЭЎ…У‰nх!Э‚nСЩ}ц€Ъ+p&џЩ&ЩЭ"pЭ7Щы!џЭ<ЂвIpыЭ<ЂкLp>ЩЏЩEtoo big char constant SD in F -хЭ5pсхЗЪЁp"pІЭ7х*pІ$%ђp!npУ“p!ppхNpХ!ЭзСССсЭ"pЩLхi`"rІс}ж|окСpхi`"rІсЭ.pх*rІЭ.pбЩo}ц?жўвлp}Щ}іЩ?getoffPMD*ЩЉы*ЧЉ{•zœвq!~Й#Тq~ИТq!~#foЩ!ыУюp!пpЭ'ƒЩNpush W}цПODi`{ўае}ц"tІЗЪUqKХqХ!Э‚nСС*hІ##"hІб*tІЭRЂУ0qNpop W}цПODi`y<ШХ}цР"vІЗЪ–qХcqХ!Э‚nСС*hІ++"hІС *vІ))УsqЪЌq#~#foЩ###ЩLHN@Dы"zІыўАЪ rўЈЪrўЌЪ/rў”ЪDrўЁЪKrўЄЪyrўЂЪ rў–ЪЖrў•Ъоrў—Ъњrў˜Ъsў™Ъ sў Ъ sўЅЪ.sўІЪKsУhs! ~#foЭqp*zІ N#FХАqХ!Э‚nССЩ! N#FХВqХ!Э‚nССЩ!ДqЭpЩ! ~#foеЭ5pСЗТhr*xІ~! ОЪmr>УnrЏ_*xІЭЁq"xІЩ*xІN!yІO#xІGyАТ”r>У•rЏ_*xІЭЁq"xІЩ!­rх*xІN#FХыЩ*xІ##"xІЩ! ы"zІы^#Vе*zІMD! ~#foЭшpбы*hІЭ †Щ! N#F! N#FХЖqХ!Э‚nССЩ*hІ##"hІЩ*hІ++"hІЩ! N#F*hІ}‘o|˜g"hІЩеUnХ!Э‚nССЩ*xІ#"xІ+KB^! {І_#zІWыЭ'qЩ*xІ#"xІ+KB^! {І_#zІWыЭjqЩЭЎ…ЩRWR?expand at W: (B)PnzznccpopepmMDы"~І*~І~цќўќЪu~цХхo& хi`"|Іс ыы"€Іс~#"~Ібў€Ъ'tўЪ'tў‚Ъ'tў„Ъ=tў…Ъ=tў†Ъ=tўˆЪStў‰ЪStўŠЪStўŒЪltўЪltўŽЪltўЪГtў‘ЪГtў’ЪГtўœЪиtўЪиtўžЪиtУєt*€ІыOХlsХ!Э‚nССУu*€ІыOХnsХ!Э‚nССУu*€ІыЭЮpoхpsХ!Э‚nССУu*€Іыц?ы"€Іўв”t*|Іы!nхеrsХ!ЭзССС*|Іы!N#F! ^#Vе*€ІыбЭ” Уu!…sы*€Іыц?жOyАЪвt~#ЗТШt УУtЭ†Уuы*€ІыцОТщt>УъtЏ_ЭЁq"~ІУu"xІЭЙq*xІ"~І*|ІMDУŸs~ўўЪuў§ЪuЩ>2lІЩ:kІ2lІЩNdec deNld e,(hl)Nld a,eNadd a,LNld (hl),aNinc hlNld d,(hl)Nld a,dNadc a,HNld (hl),a N#Fi`"‚ІyжxовЬu!šmЭp!ы*‚Іы}“|šв­uх!вmЭpс#У•u!ЖmЭp!ы*‚Іы}“|šах!!uЭpс#УЖuХХ)uХ!Э‚nСССЩNld a,(hl)Nadd a,LNld (hl),aNinc hlNld a,(hl)Nadc a,HNld (hl),a N#FyжxовLv!šmХЭpСyАЪEv!вmХЭpС У4v!ЖmЭpЩХХмuХ!Э‚nСССЩNpop SNpush hldehlNNNdefw D+2MD! е^#Vе! ~#foЭшpбы*hІб}ДТЮv{ўsТНv!kvУРv!nvх\vХ!Э‚nССЩK Э<ЂвшvхХqvХ!Э‚nСССЩхХ{vХ!Э‚nСССЩsЭŽvЩlЭŽvЩXNld a,RNcp HNld a,RNsub LXNld a,RNsbc a,Hы! N#F ТTwХ! nхеwХ!Э‚nССССЩХ! nхеХ! ~ЭЮpoхwХ!Э‚nССССССЩNor RNand RNinc aNld a,RNcp LXNjr nz,$+5Nld a,RNcp H"„Іх N#Fсхi`"†ІсХ ~2ŠІѕ>2І*†ІMDi`"ˆІёѕЭЮp2ŒІё2‹ІСxЗЪxЏ2ІХHi`"ˆІ:ŠІ2ŒІЭЮp2‹ІС ТЇx:ІѕЗТ&x*„ІхUnХ!Э‚nСС:ŒІOХўmХ!Э‚nСС*ˆІ}ДЪmx}=ДЪNx}<ДЪWxУ`x!щmЭpУmx!тmЭpУmxхnХ!Э‚nССёЗЪ…x*„ІхUnХ!Э‚nССУ•x*„ІхWnХ!Э‚nСС:‹ІOХxwХ!Э‚nССЩ>2ІХi`"ˆІ:ŠІѕЭЮp2ŒІё2‹ІСx<ЪчxЏ2ІХHi`"ˆІ:ŠІ2ŒІЭЮp2‹ІСy<ТŠy:ІѕЗТџx*„ІхUnХ!Э‚nСС:ŒІOХўmХ!Э‚nСС*ˆІ}<ДЪPy}жўДЪ(y}ДЪ1yУ:y!тmЭpУPy!щmЭpУPyџy•OxœGХnХ!Э‚nССёЗЪhy*„ІхUnХ!Э‚nССУxy*„ІхWnХ!Э‚nСС:‹ІOХ~wХ!Э‚nССЩХ*„Іы! nхеХ! ~ЭЮpoх‹wХ!Э‚nССССССЩы"ŽІыы! N#F! ~цi`"І! 2’І~це!zх*ŽІые2“Іы"ŽІыЭЮpOХ:’І2’ІЭЮp_*І"І&СЩбеUnХ!Э‚nСС!&zх*ŽІые!“ІN!’І^*Іl&ЩЩNcplNxor L,-ТLz{ЙШХKХкmХ!Э‚nСССЩехХўmХ!Э‚nССс}<Тjz!'zЭpУwzх,zХ!Э‚nССбKХnХ!Э‚nССЩ3zЭВyЩNld R,255Nld a,RNor LNld R,ay2–ІMD&}<ДЪТz}ДЪбzУщzKХŽzХ!Э‚nССЩ{*–ІНШMХKХкmХ!Э‚nСССЩi`"”ІKХ*”ІMDХ*–ІMХ˜zХ!Э‚nССССЩЌzЭВyЩNld R,0Nld a,RNand LNld R,ay2™ІMD&}ДЪD{}<ДЪS{Уk{KХ{Х!Э‚nССЩ{*™ІНШMХKХкmХ!Э‚nСССЩi`"—ІKХ*—ІMDХ*™ІMХ{Х!Э‚nССССЩ.{ЭВyЩE>>M in F Nrlca ~#foMDЭ<ЂкЮ{Х“{Х!ЭзСС!NnЭpЩхЭ<Ђвщ{yАЪ|!HnХЭpС Уи{i`y•OxœGyАЪ|!ž{ХЭpС Ує{сE!џЭRЂхnХ!Э‚nССЩE<~Э'ƒб{ВЪ€~:žІц2lІ!Э<Ђв ~е:žІOХ№mХ!Э‚nССбУ€~№е:žІOХїmХ!Э‚nССбУ ~ ~#foЭqp$%ђс~}/O|/GХnХ!Э‚nССУю~хnХ!Э‚nСС>2lІЩNinc WNdec W?poadwiPMDi`"ŸІ! ~2ЁІ! ^#V! ОТФ! ~ўТФkbеЭІpы!СЭ<ЂкФYP!€Э<ЂвfХ:ЁІOХ№mХ!Э‚nСССУDi`€џЭ<ЂвˆХ:ЁІOХїmХ!Э‚nСССУfYP!Э<ЂвЊХ:ЁІOХє~Х!Э‚nССС Уˆ№Х:ЁІOХћ~Х!Э‚nСССУЊ:ЁІўФЪв!Э'ƒ*ŸІХšЭ™sЩ M: @D: Эq…*ЁЉхмХ!Э‚nСС*ИЉы*ЖЉ}/o|/g#"hІ*УЉы*ХЉ{•zœв! е~ЗЪ!е~#І<ЪE€!N#FХсХ!Э‚nСС>џ2kІбы^#Vы"ЂІы!~ц€ЪЏ2jІ>џ2lІ!n&)я™ е^#Vы"ЄІы!Лš{•zœкС€ Ё{‘z˜вС€*ЂІы!~ў0ТЌ€! ~ц!kІОЪЬ€ы"ЂІ*ЄІые*ЂІыыбЭ™sУЬ€!Ь€хе*ЂІыыЩ:jІЗЪє€*ЂІы!~ц0Ъє€:jІ=Тю€!‘mУё€!ˆmЭ†:lІ2kІс^#Vы"ЂІыУT€б!ыУ€!цЭpЩхi`"ЊІсы"ЈІы"ІІ>2АІх!'"ЌІ}ж|ок—]Tх*ЈІ"ЈІЭ“Ђыы"ЎІы{ВЪYЏ2АІ:АІЗЪo*ЌІы*ЊІы{•zœк~*ЎІы{Ц0*ІІw#"ІІб*ЈІеЭ“Ђы"ЈІс Э“Ђ"ЌІУ5Џ*ІІwсЩ compiler error: warning: more than D bit at F D:D ХХХХХ!9ЭЭЂЭЃ#ЭхЂ+~ЗЪ!ƒўDЪ.‚ўWЪL‚ўBЪj‚ўSЪ‡‚ўCЪœ‚ў?Ъ­‚ўFЪЖ‚ўEЪб‚ўMЪп‚ўPЪљ‚ўAЪƒУƒЭјЂ^#V#еЭхЂ б!9ЭЭ]УуЭјЂ^#V#еЭхЂ б'!9ЭЭ]УуЭјЂ##ЭЭЂ++^d!9ЭЭ]УуЭјЂ^#V#еЭхЂ быЭ]УуЭјЂ##ЭЭЂ++~ЭHУу!žЭ]Уу*ЁЉ}ДЪу>"ЭH*ЁЉЭ]>"ЭHУу>2#Ѓ!АЭ]УуЭјЂN#F#ЭЭЂХКХ!ЭзССУу*ѕх*хЫХ!ЭзСССёѕ!еЭ]ЭtёЭHУуСССССЩх!ЭзСЩ illegal .tco fileP!0ƒЭ'ƒЩ S overflow in F ...specify S than D by -rAmorelessлЉ"БІ*зЉ}‘o|˜gхЪœƒ!wƒУŸƒ!|ƒх*БІхKƒХ!ЭзССССЩfunction!ГƒЭƒЩsymbol table!ХƒЭƒЩЩЩ}ж|окђƒЭRЂУрƒыЩ}ДЪ „}цЪ„ЭRЂУїƒыЩKB2ГІi`~ЗЪ-„i`:ГІОТ)„ыЩУ„!џџЩ?ungetciP *1„ѕЭ<ЂкP„!3„Э'ƒ*1„#"1„ГІ ёwЩ~ЗШ~#хЭ=„сУ^„*1„}ДЪŒ„*1„+"1„ДІ ~ѕўТˆ„ЭDƒёУИ„!єІЭ4}ў ЪŒ„*#"ў ТБ„*#"!"ўџТИ„>ѕўТУ„>Э=„ёЩЭk„ў ТХ„ЩЭk„ў ШЭDƒЩхЭk„сў Ъі„ў Ъі„ў,Ъі„ў"Ъі„w#Уи„хЭ=„ЏсwЩ"ОІ^#Vў-Т …!2РІж0ў в'…)MD)) O У…х*ОІs#r:РІсў-Р}/o|/g#Щ!СІ"ŸЉЭи„!ŸЉЭў„Щ2ЫІ:РЉЗШ:ЫІЭHЩ~ЗШ~#хЭN…сУ]…џNcseg:j…ЗЪƒ…k…Х!Э‚nСЏ2j…ЩNdseg:j…=Ъ …ˆ…Х!Э‚nС>2j…Щcall ѕ!9wў<ТШ…!Ј…Э†!ЬІ"І…У†ў>Ту…*І…6X!ЬІЭХ!"І…У†*І…ѕ}ДЪћ…*І…х!9~сw#"І…ёѕў Т † Ј> ЭЖё ЈЭЖСЩ~ЗШ~#хЭЎ…сУ†ы!эІЭЭ†Щџџ€џџџ‡‡з†м†‡‡‡‡‡с†ц†я†‡‡‡‡‡в†з†м†‡‡‡‡‡ј†ц†я†‡‡‡‡7Ф 8Ф 9Ф & ФФ&:Ф ФФ&;Ф ФФ&7Ф  Щˆ2‰Є‰Ž‰ЄŠH‹џџЈ‹ь‹ўџА‰т‰%Š]Š.ŒЩˆ2‰Ž‰Ћw џ@ŒЋb џћŒ+wŒ+b Щ-wћ-b 2Ž*wiŽ*b хŽ/I;/Nv/b ь%I7%Ng%b Н&w§&b Ъ‘|w ’|b Є’^w ц’^b  =“ђw „“ђb ц“ьw ”ьb z”_w Б”_b Э”~wщ”~b •=w!•=b Ѕ•GџGGџ˜GGšџœGGФžџVФџ1‰pе‹Gpк‹G у‹џџ=GGGџ=GGGџG,$Œ@,$ŒB,$ŒD,$ŒG)Œџ=,џ@GџР:ŒџŒLџ 21‰X`ЏŒXДŒ /A21‰ФXB`НŒФXBЪŒФXC`зŒФXCфŒ№ @ФёŒТ@ФіŒџџФ7Фџ8ФФФ:Фџ8ФФФ:Фџ9ФФФ;Фџ9ФФФ;ФџHФџIТФџXp(GX-FX@Фp:GX@Ф?џџ=GGG=GџFFџ=GFGG=FGџc(с1‰џWФBФџ ƒ(с1‰џWФDФџH1‰H1‰H1‰ФHФФФHФФџФФ џH1‰H1‰GHGіF€Фp:џGG џH1‰H1‰,H (Ž№€Ф-Žџ, џЦЦ џH1‰H1‰GHG_ŽF€ФpdŽџ GG џFF$џH1‰1‰(1‰‡HG1‰H1‰-HЭŽФHФ€вŽФHФзŽФФТрŽџ=, џ ФФџ<Т ФФТџ ФФТџH1‰1‰(1‰GHG€(GHG-GG@6џGGџ@@GG@џGG@џH1‰(1‰ФФhФФТqџ<ТФФТџФФТџH1‰(1‰G‡1‰1‰.ЯФФеФФоФФТчџ‚=, џ@@ ФФ@џ<ТФФТџФФТџH1‰(1‰GG$GG)GG@2џGG џ@@GG@џGG@џH1‰ТФYТФТbџ<ТТФТџТФТџH1‰H1‰ 1‰,ФЊТФЏТФТИџ,"џ<ТТФТџТФТџH1‰GGъ@Gя@G@јџ!GG"џ@@@G@џ@G@џH1‰1‰@1‰P1‰(1‰ 1‰ 1‰‡@Ѓ‘‡@Ѓ‘GP­‘GP­‘,Ж‘, Л‘№€ФР‘№€ФХ‘џ‚=G !GGџ=G !GGџ,џ, џЦЦџЦЦ џH1‰@1‰(D1‰GG’GG’џ!GGџ GG џH1‰81‰8D1‰8T1‰(1‰‡†’ G‹’,’, •’№€Фš’№€ФŸ’џ=-Gџ=.Gџ#,џ", џ#ЦЦџ"ЦЦ џH1‰(D1‰(@1‰GGм’GGс’џ%GGџ$GG џH1‰(1‰,)“, .“№€Ф3“№€Ф8“џ',џ&, џ'ЦЦџ&ЦЦ џH1‰(@1‰GGDu“GGz“GG“џ+GGџ)GGџ(GG џH1‰(1‰1‰G‡1‰.в“ФФи“ФФ@с“џ‚=, џ@@ФФ@џФФ@џH1‰(1‰GG”GG@”џGGџGG@џH1‰(1‰1‰‡G1‰-k”ФФp”ФФ@u”џ=, џФФџФФ@џH1‰(1‰GGЇ”GG@Ќ”џGGџGG@џH1‰,Ш”џ ,џH1‰Gф”џ GџH1‰,•џ*,џH1‰GG•џ+GGџH1‰Iв•IGPз•G1‰IGм•Iв•I‡@畇1‰I‡м•I›•I  •џ-Iџ,I џH1‰Iв•IGз•IGм•џ0Iџ/IGџ.IG џH1‰1‰1‰1‰O/–O/–KФТ5–џ‚6O џ3KФТџH1‰1‰1‰J‡–K}–K ‚–џ2Kџ1K џ2K !џH1‰1‰D1‰JGй–KGЯ–KGд–џ5KGџ4KG џ5KG!џ(1‰џ(1‰1‰џ (1‰џФBФq—ФCФv—  1‰  `Š— {—8 €— @Ф…—8— –—џ:Фџ;Фџ7 џ<џF,ФџџœCФžџV œW AФ V žW џGBG˜  p ˜ ˜ ˜ @G˜ `G˜8 !˜   (˜џ?Gџџ@џ= џ˜DGšџœEФžџV œW DФ V žW џ@(1‰`(!1‰џ(A1‰ (a1‰h ƒ˜h ƒ˜џcџ,•Š 1‰,ŸŠџ.ј.֘џ@,џ=,џ 0сс瘟€џH1‰Р1‰Р1‰Р Р™РР ™РРР!™џџ€џ€Ž†џH1‰ Р1‰Р 1‰РР™РР™РРРi™џ€ˆџH1‰#1‰РР™џ€ŠџФGРсAРCТGФB@@Ф`a@Фa@ФЁЛš юšК~G~їš#›O›V›‚›ž›І}Ј› }В›М›Ц›В›М›Ц›а›Џ|й›&|т›ь›і›Є{џ›Œ{)œ0œ7œ {_œeœkœ‡z•œœœЃœЩœЮœЏwђœјœ"G0weђœ"Ÿoўvzјv…*Ÿ—Ёž0žLžsžhžИћvwuŸŒžŸžЇž­žЕžМžСžЫžжžѓžќžЁЁ2ŸpŸСŸтŸ  ^ Є Х ЁЁљ ЁЁЁ”add hl,†џлš”ld hl,Ž”add hl,…џ”ld bc,Ž”add hl,bcџ”add a,‚ў”ld a,‰”sub Š”ld ˆ,a ”ld a,”sbc a,‚”ld €,aџ”ld a,Ј”sub Š”ld ˆ,a ”ld a,Ќ”sbc a,‚”ld €,aџ”sub ‚ў”ld a,‰”cpl”ld ˆ,a ”ld a,”cpl”ld €,a”inc „џ“›”xor a”sub ў”cpl”inc aў”џ”џ”џ”џ”џ”џ”џ”џ”џ”џ”ld a,‰”and Š”ld ˆ,a ”ld a,”and ‚”ld €,aџ”and ‚ў”and Аў”ld a,‰”or Š”ld ˆ,a ”ld a,”or ‚”ld €,aџ”or ‚ў”or Аў”ld a,‰”xor Š”ld ˆ,a ”ld a,”xor ‚”ld €,aџ”xor ‚ў”xor Аў”ld a,‰”cpl”ld ˆ,a ”ld a,”cpl”ld €,aџ”cplџ”ld a,‰”cp Š ”jr nz,$+4”ld a,”cp ‚џ”cp ‚џЁ”or aџЄ€ ”cp АџЁ”dec aџЁџ”inc aџ7A”inc ”dec џ”ld a,(hl)”or aџ”ld a,‰”sub Š ”ld a,”sbc a,‚џ”џ”ld hl,()џ”ld (),hlџ”ld „,џ”ld a,()џ”ld (),aџœ­”ld €,АџЁЅ”xor aџœи”ld ˆ,(hl)”inc hl”ld €,(hl)џ”ld a,(hl)”inc hl”ld h,(hl)”ld l,aџ ž”ld a,(…)џ”ld €,(hl)џ”ld (hl),Š”inc hl”ld (hl),‚џ”ld (hl),‚”dec hl”ld (hl),Šџ”ld (hl),Ј”inc hl”ld (hl),Ќџ”ld (hl),Аџž”ld (…),aџ”ld (hl),‚џ”ld hl,–”add hl,spџ”jp ‘,•џ”jp •џ”call џ”ret ‘џ”retџ”ld hl,@џ”ret @:˜˜џ”ld hl,”add hl,sp”ld sp,hl™џ”push …—џ˜”pop „џ˜”dec sp”pop af”inc spџ”ld ˆ,‰”ld €,џ”ld €,џhŸЅ0”ld hl,–”add hl,sp”ld (hl),‰”inc hl”ld (hl),І0џЅ ЂјvІ џЖŸ•ŸЅ0”ld l,c”ld h,b”ld (Œ),hlІ0џ”ex de,hl”ld (Œ),hlЄ<ЕŸ”ex de,hlџ”ld (Œ),hlџЅ0”ld hl,–”add hl,sp”ld (hl),І0џюŸ Є0 Ѕ€”ld a,”ld (Œ),aІ€џ”ld hl,Œ”ld (hl),џ”ld (Œ),aџœV Ѕ0”ld hl,–”add hl,sp”ld ˆ,(hl)”inc hl”ld €,(hl)І0џЅ ЂўvІ џœoœƒ Ѕ0”ld hl,()”ld c,l”ld b,hІ0џЄ0 ”ex de,hl”ld hl,()”ex de,hlџЅ0”ld hl,–”add hl,sp”ld €,(hl)І0џœoœЄ0ц Ѕ€”ld a,()”ld €,aІ€џ”ld hl,”ld €,(hl)џ”ex de,hlџ§”:???џ 0 Я€Я€ЯУ€Я€Я€Я€€ЯПЯ0 ПЯ€ЯПЯПЯПЯПЯПЯПЯ2 0 ‚ЯЯВЯВЯ‚ЯЯ€Я€Я€Я€Я€Я€Я€Я€Я€Я€Я€Я€Я€€€Я€ЯЯЯЯ€Я€Я€ЯЯЯЯ 000МЯМЯ€Я0 џЯџЯ0 |ЊђDЂzМЩ|КР}ЛЩШЇУKЂШЇ|g}oУSЂШ‡У`ЂШ)УgЂ|ЗѕЊѕЭˆЂыЭˆЂыЭ“Ђёќ‹Ђёыќ‹ЂыЩ|З№+}/o|/gЩBK>ѕ){_zWкЌЂ{‘z˜кГЂ{‘_z˜W,ё=ТšЂЩDM!>)ы)ывШЂ =ТРЂЩ УыЂУыЂУыЂУыЂу^#V#уы9s#rыЩ! УЃ! УЃ!УЃ!УЃ!УЃс^#V#хы9^#VыЩ`ъ*њџ љУ{ЊMSX C ver 1.10r (code generator) Copyright (C) 1987 by ASCII Corporation Copyright (C) 1985 by LSI JAPAN Co., Ltd.!€N! 6!zЊ"еЏ!•Џў Т ЊУ–ЊЗЪдЊХ#"щЏ+)еЏ Сq#pЗЪХЊў ЪХЊУДЊ*щЏЗЪдЊЏУ–ЊеЏЭЦ­Э{Щхw#ЗТпЊ+ w#ЗТшЊсЩ y<Шw#УђЊЗЪЋў ЪЋў.ЪЋў:ЪЋў;ЪЋ>ЩЏЩўaиў{аж Щ y2яЏKBхi`"эЏсыы"ыЏыеYP!, {•zœвWЋЏУFЋбЗЪ€Ћ!~ў:Т€ЋеХЭЋж@СбўкzЋ>џЩы"ыЏХ:яЏў Ъ”ЋЭЋж@*эЏMDС! Х#ЋЭђЊС! ,ЋЭђЊЏ2№Џ*ыЏ~хЭ§ЊсЗЪцЋ:№ЏўвГЋѕ~#"ыЏЭЋGё<2№Џ=o&ы*эЏы#pУГЋ~ў.Т/Ќ#"ыЏЏ2№Џ*ыЏ~хЭ§ЊсЗЪ/Ќ:№ЏўвєЋ2№Џ~#"ыЏЭЋѕ:№Џ<2№Џ=o&ы*эЏы бrУєЋ~ЗЪ7Ќ>џЩЏЩеЭ0Ћб<ТEЌ>џЩ>еЭС<ТSЌ>џЩЭ Ѓы!% s#r!* 6#6!, ы!( s#r!' 6R! 6#6ЏЩеЭ0Ћб<ТЌ>џЩ>еЭб>еЭС<ТЅЌ>џЩЭ Ѓы!% s#r!* s#r!, ы!( s#r!' 6W! 6#6ЏЩ"ёЏ*ёЏ~#"ёЏЗШѕеў ТэЌ> ЭЖбёеЭЖбУзЌINRBC*зЉ"ЫЉ!лЉ"ЧЉ!їЌ~ЗЪ&­хХ~ЭДСс#У ­!ћЌ~ЗШхХ~ЭДСс#У)­sorry, too small memoryAbad drive: CAbad option: CAusage: cg [-oXrNkul] filenameA.TCOcan't open: SA.MACcan't create: SA ; ""Аы"$АЭ!ЊЭ]!'ЊЭ]> 2&АЏ2СЉ>2РЉ>2ТЉм*}“o|šgы"+Аыы!У­е{•zœвЎ!C­Э'ƒ!лЉб{•ozœgЭRЂ")А*"Аыы""Аы*$А##"$А{ВЪыЎхN#F сў-ТыЎN#Fi`"'А*'А~ЗЪ$Ў~#"'АЭЋўKЪ{ЎўUЪƒЎўOЪŠЎўRЪОЎўLЪЪЎУвЎ>2СЉУOЎЏ2РЉУOЎ*'А~хЗЪЄЎ~ЭЋ2&АўAкЄЎўIкЖЎ*'А~OХ\­Х!ЭзССс#"'АУOЎ!'АЭў„")АУOЎ>d2ТЉУOЎ*'А+"'А~OХj­Х!ЭзССУOЎ*)АлЉ "зЉ*еы*+Аы}“o|šg"йЉб{=ВЪЏ!y­Э'ƒХ*$А"$А^#V˜­!њЏЭоЊєІ Э9ЌС<ТGЏњЏХ­Х!ЭзССХ*$А^#VЌ­!АЭоЊ:&АO ЈЭ„ЌС<ТyЏАХБ­Х!ЭзСС Ј!Т­ЭдЌ Ј!ЊЭдЌЭўЌЭЩЭЩџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ; ; ck.mac MSX-C ultra main program (Ver 1.1) ; public xmain WBOOT equ 0000h ;MSX-DOS warm boot entry xmain: ld hl,(6) ld sp,hl ld hl,WBOOT ;push return address on the stack push hl ld hl,0080h ld a,(hl) ;get size of command argument inc hl push hl add a,l ld l,a ld (hl),0 ;null terminate the command argument pop hl jp @main@ ?ck: defb "MSX-C ver 1.1 CK" extrn @main@ extrn ?clib extrn ?crun end xmain џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ„врU„д”щ@д˜T>D ”B€„nT)МlpАРiLА-!ˆЦS€b.ˆdИР?CLIBŒSє5%TшШ @MAIN@Ž€U„д”щШžџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ…LPRS dд”ф @xеŒZc7›€pЈt|7N€рЈt|K€%Р@р@ p0ДHФa2†SiРоr0œ"!Швv2ˆ ŒТnѓ”м: fpœш 6˜MfQа€.—K‚€%С€ра pxЕ E€ 4rŸVŒ*оЭ4E€€XBА@…f€,х  каыW„‚nБ uЕEX F"СБKЌU‚€a–‰ЬFr``hыuˆА0Ќ4ЗeVёё•X@_УЖUaW &ы``№№Uƒ@т1aаp№љ…{РnБu†ŸУцо КФX|aP@№јUƒ@т1№јю#` `€‹ Х.БV u†]bЌы9ˆЮNЗ(Ћ:нlл*ы", КФXжwП„L*Vy“иtјќ\aSрвн•O€CA7X‹:Ют0вн•T€A€жUHќ aQpyмF"С ЌЭvDU‚X Rб €1АЊ*РРБV f€ГYˆEOуу „нb, ы ?Œ+HuˆА0Ќ|aP@VˆА iЊЭX0Ђў 2Ў UЌ@f€ у*щ„нb, ! Р,:С€q•aо ` ё№eC€у**РРч№•BЯрK*„dƒ†‰3@ж Щ/ˆ 4€@ аIРЂЌх€€ а‚С>­Tд#$П "RЭОр! Р`m$€@ к  € QVrˆ@@m`АOЋFbЩ)8†›3ihFH0RР…X›T@„ 6™4EX š@m`f€ аUXќы`Р 4ˆlЃеЃ*ЮZР%Ѓ*ŸZР5Ѓ*ЄАъАU€a šн•p@ƒb2~˜Vд& ?Œ+‚*Р а‚ АX0nШ``е^2@/уу ј9D48›oР‚48U€€ ††€3@›C€B 4fп !aе`6Ј€ Аѕr  Њ4*РЖmэаVhŸW"ёpЪЊРcЌў>2ЉшЋ Хlк0УЊРaЗX‹:ЧЧР“ЋˆjЈ”T%y“„df+%’*РР кp!О Lа“ЖШi hŠQ”p €†–Šœ­sШi‰ъhБ—,€ŠœˆЈЅ`ШЋЈhё•а<€ŠАŠ†ЁјШшЊˆЩб•0 €’œ’ЈЅTЈ )шHд0 €š‚’œZШ hЊˆ*QŸА,€І–’ Ї\Ш ЉЪ*Љё–а*ŠА’ЈAШЩъЉШ• ,Œ ЊЈІgЉЈ))Ш* ЊЈ†чЪHЉШ)ЈБ— І„Є–JЪhЊ‰IЊ—€ІЈЄ† ГЇЪ‰ъЊ Бр,Њœ˜’œ—8…ŒS”USрdTхTљ@еЌZ]*ŸТ&Œ?-йU ќў2ЈрјИЪІ€ :Т АЉ0јУЄр ђx0ЪІрLFУЁ 3ђн•B@ФцUQ™UDќReUёЩ•V@t$| Фl:>„‚b6 ?ТA6 W„™1а €ЊœЂЊŸ8…QVPе dU„T5d @ д \.—K@ TE€a1 љў?жЬЊ.aаpI€E€€"Ќы`hЩŒ’€dU„T4шEXECV@œ…QVPг dU„T4Ф @еZe<LfСа€рr7™ЭЦi”@i9ˆ І“™Ьвn3€ •š4Љ FH0h4€@ аТ+rˆ@РЩ4ˆЭ,а“ Чшj i‘“р ~˜‚ЊЈiBШЋЈh’` €’ž„ШЋЈiˆ“ ŠА’Ј,ШЪ ЊŠh€…LVPрdU„T4 @е\.–€9M&pЕB 4WŒ‰эdЪІРЌ~­…lЊlх?ЬЦіЋ4h†м"1‹0ш˜D€ а“:ШihЉЪба €ŠАŠ† ШЋЈjР €ŽŠЈŒ)Ш hЊˆ*Q“а ˜žœŽ”›8…ŒVPбрdU„T4y@е№ZC0›„чA”№e1Ž„ pИZ"РSќrљ`rˆ@@Ы­ТЭь*n!.Б№=šU0#$4š АFH0NДј‡]€%Р…f€`›TР#D‰€–h!ЎРQ 9rˆ@€Ы$BV_,˜Ъј@CHAI@ŒЌ€dDTdd8шh@EXECGŒЂT”є$Щ@SETUPŒ˜€T$Dѕ4Ъ8FPUTS@ŒГdдTд5™Р…ŒQ‘рdDTdd9@д\.–€АЌФB+4pЙDaсfаРVf€ hЩŽ€dDTdd8Щ@PARSEŒŽ€d4Д•8ШИMEMSETœ…ŒбUT d4UD)@даZы с0Oр JŽЛ*Ž„qёќiRабнnЪЅ 0›ŽXЧё’ЩŽ€d4UD)Р…ŒбU“ dtUDdщ@ е Z€@ !“ЩВр pИZ"Ргќrљ`0ы` XF€9D хš@@Ы­ТЭЂЌы€€–hсuˆDРЫхжЩŒž€dd”ФTшш`@GETFNŒ˜€d%4XЩ@MEMCPYœ…ŒввTрd4Д•9@д4Z~T$ќ `иt:ввTч…VU TU„•D @д8Z] O` \B3@Ld  !ЅЂЇ+G@**ТJЂd,&'Ї#Ѕ&Ю…ŒVPд dU„T5 @ И\(ШЋЈj€…ŒвбS• d4ДTхi@ И\ШihЉЪг€…”дааS‘ e544фi@дXZЂ rM"@9f€ LdH )ЁЇ FBР2ššrd )ЊЃЂЊG@2šš r4р…ŒеQбU d5TtUI@д$Zы/ЪСГЌцЩŽ€d5TtUIР…Lдаг d544ф @д€Zх/ЪС3Ќц 8Vь*8~c?Ют3ѓ9ўwПпь“x˜ЩŽ€d544ф Р…‘”ааS‘ de44фi@дTZЌаšD€0rЭ,˜Ш(?LAUT4Œˆ€T44фшFSCANFŒ…TtUD4ШUNGETCœ…TааS‘ e44фd @дLZ "@€Ы4`Вc  %= 2Pаг#!Q :”ааS‘# U9Qp… аг T44ф @РеШ \.—K€%Ср pXИ0\.—K„€%Т€с` pРДE€ &uˆАЋФnQXЌќ#3ФXТ"ТE„€Р– `РЛ*З А0јF"РР vUn XWј|`А№ŒE€ТІZWŒАXјF"РР аe‚Х†UйV$ќUeYё•d@Х6UIйW‡~€GС– aй`№ eƒ@vX| `аЈЋ:ХXЪЭX8Ъ!€XPu‚,ё…sР­ajб…sР/їј‹ n`•Š*Р€ ‘h–ЌаxЪЈ@"E…€X4Оѕ`ры6щ€4KOчћ*Š€НBРVf€ аXa` rŠА”U",УЛрЌЗeT@!VuŠАА6ќ€:ХX@F#aXЌќ#3Юb3Ћ ФXH‡Q•у,УЈ€BЌы` m `ръxЪЈ€NQV?ЬЦё pŸTƒЦUЂ>П„ ЋD}[Vњў6­ы€-йV@њ*С q‹€lр ”U€€ЂЌЩ`рhрА№p:ЪЈ€JёV ;ŠА€ŒF"ТЌ$#a Dмр(Ћ9EX’M"L,yPUC‚Р СРы*• А€xFVˆА€Ќт*Т@1aв VdП„ ЊўЖЈшјвЃ BЌы` mQ`рDвР'(Ы А”U.ЗX‹:ХX L=ЏD#вё•J€у,*СРе ё…UР…XHњД`_яіH‹kX•š9EXж*СРжK• А&2ОгUU #$€8§5U1!3ва#" U%M:Pаг#+`Q=UAAp„ЬрD$4 @ддZў ЖЈPјЖкЂ€у j?m*<еf€ aЛE‡LУе-šTДЌ0aгѓ§’ЛlŸь˜ш@BC@Œ‹eDѕUYР… QдрT”u4 @ дЄ\.—K@b,ы` rŠА”U€€'е ё}T њўЖЏрsA‡B# %Mp…”д’S• e5$”хI@дXZ!$в D–hЭРLdDІ ЊЊFC€*š‚’d )ЉЈ) G@2š‚’JrЄр…Lдд d55$ @д8Zыz—„e`™ШVs МBJіLt )ЉЈ) N…‘”’S• de$”хI@д@ZЭ Є@ˆ!,а“Чщˆ*Њ†Qа €І ЄШЪ I)Ъ‘`  ЊЈ†8…”’S• e$”хDi@д8Z’BY &2PSа#!`MAI:”’S•Ѓ €AUQ p… д T5$ @ еt \.—K€%Ррр pXИ0\.—K„€%Т€аНŸу—ЩЄР"Р€Б`Ъ+Ÿ„fcx‹€8DXHUРТ1[ВЊАјJТЈBr"С Q"Т ё– `аV??…Ќ*И#`p№eƒ@ЯW№С…ZУjX,тў6ЌјtвА ЭvBАp”UРТ1``№Й…l@8›_X@|`РV?ФXe€ EТў,2ЎијžЪМт#*ђ€?ŠЌЊў)ВЉ ј†ЪЊ@+vU#aвp pA‡C€AР†a љnђЁ€"Ќ$~“Фgсy+8ˆЮсhЋ€Фb,uˆАp8*Т@сXF"Т@Э т`ЌUƒ€gДЉМєœ3ˆАpД€ЕEXHœ##ФXHв``hб=ЅMчЄсœEƒ€uфЪ*Т@1‹ Хgч мF"С БX‹+ХX$ю!",Џ`Рж [А­XЋ ФX8Fы€ аЅjРD6ˆЪ*Р@QVuŽАX$xТА#чћЋ АHљnЪО@#ЌЗe\pVuˆ@mi^€ иrŠА”UbЌ~dW„|џaеp!VˆА€Ћ€ФX$‡jРGX4nЪЄ€Ќ+`рЌB3n J’hа”U€€ЂЌы#Цљ?иu\ ^УЊрBnх` (Ћ:ЧX’АъИН‚С`АX,˜Ш0?CPSHDŒЮTuc$ш@SPR@ŒŽфU5$ЪSTRLENŒйeDѕUYР…LTд dU5$ @еˆZхjБZЌаЂыЂrqpГ@ъDј˜mSШXХf€Ж Uš4YД‡L@яQ9/€ Vm'hГiэъЭ Т2АLф+9†о/рSJЌ€1† :ЖЦ„ž#Ц ‚ЩŒŸ€cєEdф„HЩи?LAUT6ŒЂcєФUCˆШ˜?SAUT2Œ‚€cѕ4UChш@USPR@œ… еŒ Tuc$ @дЈZы€SYˆœ##šУ ја“H‚‘H$žZЎWYxFV œ…g7 E‡A# XЩp…бUрTtUE4 @дZ &2PSа# €QM:QбUа'…UрUUE4 @дZ’ а“Ј )шH@ Œ ЊЈІЊ ЊŠh€…‘бUв`dtUD4„@дZ! &2PSа# €Q :‘бUвg…•QбUв eTtUD4‰@дZ &2PSа# UQ "2•S‘бUч…”Uв`eUD4„@дZ’ а“Ј )шH@  ЊЈ†Ъ Њˆi3€…Q‘бUрddtUE4 @Pеx\.—K€%Ср  h”в``@‹:ФXж"СЌ+` ъб•NРXšА0ѕHЉŒ*Д*РЕш€z^0Ња„dŠА&:‘‘бUа#$@Q p…Q”UрdeUE4 @дt\.–€АЋ„b,ЗeQАЋ4hT |џdЋй1а Œ ЊЈІЊ Њˆh€…Q“дS ddѕTф @Pеh \.—K@%РРр€ pPДE€ 4mQ`X„fаp•€ –h"Р@Ќх>VŒ*^>)0щА4?3@–hЕOcе“*Њ3i€ŒќЭІ€т ЊBW€б–hžкР5“ Д€3jЖ@A€P ‘рИв'ЄУJЧ@ ЩљnЪБР`2ыaз0 ‘рК8OiвaЕg@ %Ъе` hб 8VьЋв2­јiќa\0ж˜W B2GXќRa]УК€њ*Р  Q;ˆ@€Ши#l–Ћ4uАD `$ц#9жL+ў!"Pы``YЬFr`@ёI•H_ФU_йU|‡R˜ЂЌ ­‚!'1ШіЂ0Њ@„ Ÿ„fc{4€ ‘№U@Ђw‘АF60ъИЄРў АЏ‹9EX"3i@ ЌU‚ €$ц#98Oj!у*№ŠА(АZЪД€"Ќ'с˜о 4aаА!VrˆЦР ”F#ˆЦРи*С ањЄ0­А BOТђјŒќ/+„Ф €$ќ#3Р 6Я€АшX‹9EXš:ХX Nb3“„іЂ0ЈX Ÿ„fc{6Ёˆ@Hј*Р  QV&‘ $ю!.БVuœФg! ršL,сb“„df(ЋH‚С8ˆЮ W€“№ŒЬofаP!Щ4˜1‘ ~† І‰Чщˆ*Њ†Q–@ ~˜‚ЊЈmЃШi jhБ˜№ €’ž„лШ hЈЉhžА ‚˜˜ž†шШjHЈ*ˆа Œž ŠœQЈЪHЈЈ› ŽŠЈ†qЉъЉШ”p ЈžЊ  ‹8…Œвдб`d4„Е4Y@ж|ZC'“€Т™PP)€Љ`N*“р pДPE€-Їјхђ*РQ9uИY н•L€Яі™€@—X†€3@Л*Ѓ€@ ˜€@—X†‚3iин…Y@ хж!Ё к ЗeVАУГrыаРm_[ВЌ„aй€9uˆh€6К-йVTB0ьР„>ˆDРЫх“Шi jhБ’p €ІŠЈЊЁ‰Ш jŠHЊ3€…Œе‘T`d5E$U@дД\.–€ШNАвн•H€b, БY Ћ:Тbћќ2С_2ЈН’ TЈ^ЩY1а €ІЈЄŠЃЪ‰ъЊ Г€…‘”бU’`de4UD$™@дZ#?=‚u{&:‘”бU’g…‘”бU`de4UEDY@дZ#?9чu{&:‘”бUg…Œгдб`d4Фѕ4Y@е \.–€@ ‘р€€в'ЄУJ’@ ЫTќЗeQА[4hˆA€Ы­‡@Р ‹ZСCуxаrГ@ъб•PXš8Db,УЅ@а €†˜žІ‹3ШшЊˆШq@ €’ž„>Шi‰ъhЈ‘ Œ†˜žІ‹8…‘гдб`dd4Фѕ4Y@еа\.–€:Яk& ?й р‡CMUЛ Е@ ЩљЬj­йTьBOЮ`ƒUnТІ@рг4pГ@x‡O.(ё…T €$ќ#3й ЏAIјFf7ГjXЫ8@ `$ќ#3й „F6p8ђЩŒšddХU4ˆЩ€@PUTC@ŒЌ€d4Фѕ4TшFCLOSEŒДTe$TT Р…бUрTtUD4 @е0\.–€А”F~s+vUf€ ‘VrГhpDњДaR>ЕƒKFU0>ЕЋFU8dŸY …ўџdšЬMVmhŸZРЅЃ њЭІ@h“<ШшЊˆhа ŽŠЈ†FЪЉШшЊˆs€…•S‘бUрeTфtUD9@еŒ\.–€Ф8т!€'ч0…D€ЯіHinЪЄ€р *Њ€?€lЊЊУЌ02N‘„ dђ–žЭ*І:Р2K!„e`йШVs @€IxFV œ…g5{$ “ˆŒрЏdŸь˜шUNGETCœ…LбUрdtUD4 @ешZM"–ьЊ(ўВЊXјЪЉ` :ь!'сй…K@ &+4`TДBџВD @$ќЦФgцsќю!%сX&rœУaЃx˜Щ’№ŒЌ{Y2Ћ „€1Аж&2ACжmf€ ‘№ šФРH…ўџdЦH€22Jbbt #ЂЊ! FZ€2:*Ђ|eРЁ"'Љ N…UрUUD4 @ди\.—€K@Xж"Р З№)…HР dќц0ЉјЭŒ*F>ВEXж:Р к4ВUь˜Щ`@FLUSHŽ€dUD4ЫhBDOS@œ…Œ’S dd”ФФ)@еЌ\.–€:Ф dќц0ЈЈ„ ŸœР?й"P2N‘˜Ђ02K!„ea ?ЬЦї)ЄР"Р 4uŠА4ˆ!'1ШіВaU ?=€‡qѓ§’!%’8FF€€“ˆŒрЏdЧ@22JbbdшЉ" Ђ N…Œ“Tв ddХU4‰@еє\.–€:нb,ы€@“ѓ˜ТЃ@2~s˜Tt|џdˆA@Щ8FF“ЪXž#<'ˆьQ%‹Т2А„Ÿ„fc{ŠЭ'•ш€x^2ЊиЋЯЯ`Aм|џdŠАЌBIТ20„ œDg('ШТ 2qœь˜ш@FLUSHŒЂeu$•DT Р… Sа T”є$ @ерZЈ )шH€…Pд‘PU d5$TD @ е<\.—K@XšTƒЦПпь—+4.•XU€ …ж*Р@ЕЛ ›5\ЃрГ4pДGŒ*zЭ/їћ%Ъ!€#`„ €"1АТЩŒ‚dФє4hЩИ@FREEFŒ‰dtUDd8Шш@SETUPŒ—T$Dѕ4шCREAT@œ…дS TѕTф @ е\.—K@X(}QРЭTpЊЭ'е ё…H/їћ%Šхf€в ‹ А4pКХXжС[АЊPЊхй …ЂС0Њˆ4Ппь—)фx!€'q8Dc`…“ Чшj i‘‘0 €‚˜ž†KШЪHЈЈб’0 €ŽŠЈŒ‡.Ш hЊŠЊ” „ˆžІЉъЉШ€…Pгдб`d4Фѕ4T @дЌ\.–€А4>­T8|џdКЧСh*РVhё0Љ0…ўџaв}dЦF@22’**4d #ЂЊ#!ЦD€*"zšt!І'ЉЂ N…LбQRрd4TTД @(жŒ\.—€K@% ‘–кTdЊЭnБuИOk&?й",е` Л žD`Ши#"dl€ :Кў0Њш„ “„da„8ˆЮ2N‘„"0dт#8 А‹ Џ*ц!€%сX6rœи"^•œЎЗ(ЋHŽK­ТrœЯiвaЅh@X šDˆР’№ŒЌ9 ЮjіLd, #ЂЊ#!Ч@2š**Zр…‘PQ U$TD @ дь\.—K@b,ыbГ@ ѕhЪЃР RщP%OЮ` nТЄ@ћ§’ХuˆАЋ:ЧСІhС` XјNЭ1p €ŽŠЈŒ‡.ЈH‰ъh“€ „ˆžІЊHЈ(ˆ€…Uд’U`eu$•DT @ дь\.—K@b,ыbГ@ ѕhЪЃР RщP%OЮ`nТЄ@ћ§’ХuˆАЋ:ЧСІhС` XјLЭ1p €ŽŠЈŒ‡.ЈH‰ъh“€ „ˆžІЪъI*ˆЈ€…”‘SSQ`e$TфдY@е|\.–€А…hџОEXE€ хЊы`hс[АЉh”B(]nm[ВЉљўУЋ `B&]b€rЭ хж> Г@у Њ€_яіX€б 09|Вc$рMQUB2’P‘да#'р55 Af:”‘SSQg…•S“S’рeTфФ”фЙ@д№\.–€А…ДџОEXЪ!.З 40Ј№љўУІРrый ё…L€/їћš€@ш„LОY1‘0 €ІŠЈЊЁ&ЈH‰ъhа Њœ˜’œ—8…‘VT‘рdU…$y@`дР\.—K€%Ср  p`ДE€*Gјхђi0А ЋАЌE€€ ‹ АЌE€‚Wе%` ŒE€€bВ№ŒЌ!€-W+­ЂЭ/чѓ §€3@E‚€XE‚ хж> 3@„9u‚,кК‚oLy`—€+ТNЖLt #$І"ЇN…ŒбUT d4UEU @е€Zх5˜ƒР˜хf€(Œ< ‚Р кбpЕY D4хjГ@‹„xТЅ чћ%Ъ!€!рXp:ЪЈ€сј~ЪЈ€ж4pŸ–ьЊ !Пиux8eUА љўУЋРњЩŒ‘d4„ДE(Ши@PARSEŽ€d4UEUШЈMEMSETœ…Œвб d4„ДE)@дЌZЗaP`{$zў6ЈxљўЩzƒ атGf€з0•I€ ”€_яѓы&20дд“’Ѓ  !-J2&‘дв'…ŒT”б`d%4Y@еф\.—€K@Xќеf€ bЫ0VьЊXўДЉ`Ћ9Dgч јtТЅ€ЌˆФXU€ЬW+4pАXЋvUWrˆ@ K< ‚ а‚!€.Зf€ц ј\РrˆA K< €Р кС‚@—[„F€ЕT“3Ш *hЩШ—` € ‚ЄІcШ *JhБ–€ šŠšІŠЉЪ‰ъЊ Г€…ŒT”Ь`d%3@е\.–€:ФXжхbŸ™ ТЗd9A€жU6БOЬаU€ь№Љ…M€€Рk*›GУѓИŒE€t˜U€b,сАш(d$ $ЉЃ' G@2‚ ’™Œdd*'ЊЈ("Ю…LTб“ d•4dф @е ZўВЉрјvЪЇ€сc*ž?…lЊxўВЉрјDЪЇ€тл*ž?‹ЌЊxў2Љрј\ЪЇ€ућ*ž?Ÿь*|ЏdП„-*ŠЏd€,˜ш@ISFN@œ…ŒSаб dФє4i@е \.–€@лX(zoTќжb€@IјFЖaSА˜ы`[Uš9EXжы€h€%Ђsœœ'Е“*Ÿ€2Bl:!Пй1а €‚˜ž†-Ј )ш’0 ‚˜˜ž†8…Œ”‘QQ de$TTi@дh\.–€А4>­ аU€ 6ЦРLt #)"ЂЃFA2:*Ђ2dD ,$Ї FB€*2’**р…ŒбUрdtUDd9@дpZ$ОЈpD(f€ Њ$!" ?ЬЦіLd$ЁЈ)Є"G@2:*Ђ2dP ,$Ї N… SрT„”є @д ZЈ )ш€…ŒбUгрdtUD4љ@( еР\.–€р0p( ДU@ЋFM?ЦX#€РІh€Lк*!Р с0E@T€€",*Р`#`hŒE€РEX l PŒE@8E€РEX F"Р`"Г№Њ€ ФTќaVР" ћ§’o1а €ŽŠЈ†ŸЈH‰ъh€…”бS”бP e4Tх4T)@дZ>Г@Ld Ё"'Љ G@2š*rš*р…Rа’U dД$„•D @дZ>Г@Ld Ё"'Љ G@2ZBJЂр…‘бUв`dtUD4„Y@дZ>Г@Ld Ё"'Љ G@2:*ЂB,р…QбUв dtUD4„ @дZ>3@Ld Ё"'Љ G@2:*ЂBр…PSарdФФє4 @ з(\.—K@b1Эdв!ЄР"Р@ E€ЋF2€,хбРR0"’R xFV€€“ђDF~L6Ќ0„ Ÿ—"1ќИaUаYˆœ## АФFpaзА?$Nт3ђ`ю!'с˜о)†]b2qœXEI€ @e’*ЏрЕш€z^0­№ЄР)Г@ъxТД`’хˆмЂЌM"8N"3ƒ„F#ˆиЌаUaРlX‹:нeсY‡M@# Р§MI9! 3tSау%р M:Sаа#6рI3.Tа”’а'…”‘Q`Te$TT @ з№\.—K@bБXЌšDЗX‹:ЯiвaЅH f#ЪXFxO6Њ8ЌФ{KЯIце;=ЄOI†еG5˜)aс<кЈрВ№ŒЌы` [‡€ЬNSI€E€$сŠ*Рв „Ÿ„fcxЄR ršL,с`ЕOЋ‘јИaZpVrˆФeсYЪ*Р@,~™т1јFf7†]nЌц*Р@с˜оN‘œ'С‡l@dсU€"3ƒDBOТ31МR) Е\ЂЌM"8OЋ‘јИa_ j—„eg(„Ÿ„fcxeжс9 Юf“8FFhКЮ"3ƒћ:Ю"3ƒEж" р ˜ЯШ@ALLOCŽ€Te$TT Р…ŒSарdФФє9@дZG@2 bbzр…LTб`d$4T @ И\ШH*hЈ€…””е”ерe%5e5DЙ@дZ"1 €ЈžЄŠ™ЪJjЪj‰s€…а”’рU4%$Д @дЬZH‚Њы€“ъLО|MХ@э*o=' чд‰ё0вЄРћ§’* QUˆЈ…“ШЉШ‹‘0 €ЈžЄŠ™ЊhJIh€…Œд‘S dDѕ$TЩ@дZшЧ@2Ђz’*dр„гPV Dд„ @д$ZхuДY AжЩŒ‚cє54„HшMAX@œ„гRS Dд”ф @дZЭЖLdЁЈ)Є"G@"jJrр„аP”рD%4 @д,Z$МЂѓy№^gВc  Mp…TTгд• e4ѕ%D @pдф \.—K€%Ср  p`И8Z"Рƒќrљ4˜Xж"Р@Ќы€“˜Œфе,”ЂЌыПпс–‹4h†Y Ј!X0H%}S0'(Ѕж!!’pŒŒсКФ"€ф2yKЯ цеc`РX‹0щШЋ9E.Б9 ЙEXšDpŸ’%ёљ0WuˆА@…Ъ)uˆE@Шdќ#3ФX(E€X ж*С@ГъLјšiRpX‹:С,QbЙD7ЪЭ Р(Ћ:ХX ’б`‰Џ+œ*С–ЉbЕEX(ж{H“ЯI‚9ЄР"С@Ќ}HŸ *.!П` W+6й€QVušL —X„`Г@•`@ЪTžxNЭ& aн№‹„і‘=&TŒš0XvLE‚",хКФ" ф2Х'ШТЌыpЕYД„UƒX0Rы‹Ыќ‘/ˆЯЩ‚ЛTUƒ.Б9 —„ecЪLоxMк,квК`&“‹ А`‹9E.Б9 “„daV Š]b r8ˆЮ Š]bPrrŠА@4ˆ*Р€”Љ|№œ+ˆА „ц#9LБVu†\ЂЌ)uˆ@€ШeЂsœ˜tЌв`bКХXжrŠА`‹Х.Q 9uˆА ­ЂhœФg!V `Р(Ѕж!!’pŒŒ*С€1KЌB.C'СТ)uˆE€Шe‚ы`@Yх&_<&Šч1ЩТ#`Р9”—Ы&2мадв#=р§1U!22TгUS#%р§MU!22‚Pед# EM=IQp… ед T5u @дLZ}kOр`4ѕž ˜ VУ а €ІЎ 8…”е“S e5E$ФTщ@дHZ]*–ьЊ#aа ъLо|Mй1а ІЈЄ˜Š8…”ед`e5E$5™@д,Zх Ют5Л €€8Y1а ІЈЄ† Г8…”еаU e5E$4I@дPZх?-йT(FУ   ™мFЗaP  &:”еаU'…”егT e5E$4е @д”ZхuДCKц -иTDB2Bb6?РРбМL>ЄMчФС“ЪjŠHiЊ€…•геб`eDєФѕtY@д$Zў ЖХЖƒ@ЩŽ€eDєФѕtYР…•еT`eDѕUY@д$Zў0ЖЧЖƒX@ЩŽ€eDѕUYР…Uв`TDє” @ е€\.—K@bE€ ‹ŸТU ?,*:aаагјZЪЅ`с[*˜€0щ…ўџ` ˜iќ0mUPгјtвЊ Ќ)&‘"Hh&жРРH‹0щЋ:ХXš2c+ §5U1!:PUвP'…T d”ф•E(9QJP5kfа РI›IP•ц"Є ˆ"Мй"ЁЬEK4ШD#yВD ˆJѓdˆ@цЩІ€ кV*Ѕ€ кШy‡ PУ‚Ѓ3i Њ–:ХB7šкRДЌB@6*Є  R№ŒЌыhКc+  -9Z: S‘Ѓ %9%QJ2О“г‘в“g…”бU“T e4UDЄе1=9)6P5#`Б]brы8ˆЮ3˜Œф!$сF~™я–+ЌњД`й1б0 ˜žœŽ”›ЪhЊ‰IЊ€…PвRS d4„” @дРђЎPˆ8Dc`D™ PDжzk›ppš-йf@ 0:вRP'…“QSTбU dдTе4UHMQ56P5<’ШEѓЪСs.•`ЖЩЈЉЊhЊ‘а šžЌšŠ›ЪhЊ‰ЈЉГ€…“QSPд`dдTд5˜5=Y56P5užV ‡jС“ЩЈЉЈj 1а šžЌšŠ›8…еU TѕUE @дšэ,Вc =UQAp„вS” D”х @дšэ<2c %9Ap…аS T4ФФ 11P5=ЙXЂ0rN‘„eсYТЩŽ€T4ФФшCALLA@œ…’SдрT$”ѕ4 @д,–_ @d2tЧ@*Jzšр…‘дрT$Dѕ4 =M!P50Iь0(:P‘да#  =M!p…гP•‘`Sє4Ф”)@дPšS, Hb0’BŒЇ!Ф\1у § 1% pž@d2tЧ@*Jzšр…‘дрT$Dѕ4 =M!P50Iь0(:P‘да#  =M!p…гP•‘`Sє4Ф”)@дPšS, Hb0’BŒЇ!џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/**********************************************************************/ /* */ /* COLOR changes the color of the screen */ /* */ /* Sets FORCLR, BAKCLR and BDRCLR, and calls BIOS CHGCLR. */ /* Returns the previous setting of these colors. */ /* */ /**********************************************************************/ typedef char TINY; typedef char VOID; #define FORCLR (*(TINY *)0xf3e9) /* foreground color */ #define BAKCLR (*(TINY *)0xf3ea) /* background color */ #define BDRCLR (*(TINY *)0xf3eb) /* border color */ VOID chgclr(); TINY *color( fore, back, bord ) TINY fore, back, bord; { static TINY prev[3]; /* previous color */ prev[0] = FORCLR; /* save previous colors */ prev[1] = BAKCLR; prev[2] = BDRCLR; FORCLR = fore; /* set new colors */ BAKCLR = back; BDRCLR = bord; chgclr(); return (prev); /* return previous colors */ } џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ…Pггд d4єФѕ$ @д˜\.–€=GN—˜ЫO1–:оc,ё:^gБ“Љцy:оlаC€1’ †Ž†˜ЅШiщ‰ъH€žџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџУ '*.25=@HVY]besv !&+.14:ENSVYbeknvy€”ЂЉЎИЛОФемуёєї§  *-58;CFIP\c‚“šŸЂЌЕИНРЩЬЯдиуцъяљќ "03=ADGNQX]eux€ƒ…”š ЈЋЎЧЪЯгруцыюђѕњ§"%(?Vcjm„™žЁЄЇЏДЗРУЦЩаилосхшыђѕў!$';>Qfpsvy†‰ŒœЊСФьяѓїњ !'*-69<FKORWZ]`cfknqt{~„Š’•˜ЂЅЊ­ГКТЪкнфчяђјў   #&).47<?BEHLORZ_bkr~ƒ†‘”ЋАЕИНРЦЩЬдхяєљ      ) 1 < @ J P Y ] g t w } † Œ ’ Ж Л П У Ы б м х ё њ   " % . K g u x | ƒ † Š   Ђ Ж М П У й м п э ђ §   6 @ E K Y † Œ ‘ ž Ѓ І Љ Ќ Џ П Ы і   + N Q ] i z ‚ “ – œ Ÿ Ж Ш г и п ј  ! ' / 8 Z e h k q v – е и о ц "%/4>ADIN^oty~„ˆŒ”˜ѕј§ !.2=PXcvЃ­ЗСЫепщѓ§%/!AЭЭ(2!>ЭЭ(|уЃУЭ Р Э!"-"/#"ЏЩ!Џw#ќT!Q:W!эАGжO!^#V#zГ( ы|€g~wыю`.щёЩ€еЭмбЭ€ў"(ў'ФœO{‡(€ЏѕЭkў Ъ‘Й Э4Й GёХЗФ1ёВуСѕx‡x(ЋЭ1ёў,(КЩЭмЭ”+Э>*yў, еЭuCбУu+:iBЗ(zГШ*В?#"В?:Ь>ЗФЛь*В?:Б?GУ‘)Эі*:Ь>ЗР:ё?ўUР<2ё?ЩЭмЭ>*Э–#ЭЈyў,(яЩ:г>=њр+G2г>:д>=И 2д>:д>1!"PЫ8ЫэC~#ƒ_~#ŠW xБ ѓэS:ЗТ<2„ Э!w/ эА/ЭЗ !"P"R#"=>2У> 2:8ѓЇ ݘУAUTOEXECBAT COMMAND version 1.11 $7ѕ:?З(!Э–ЭW ц  ЭB(ёŸ‘ё?ŸŒ:?ЗТ”+СЏ!А"&?У,і7ѕЭц, э"&?xБ(кді7ѕЭц, меХ~ў, #"&?Эц, "&?yСс1џЭ23ЭrHЭŒ!хЭ22ЦAЭ}>>Э}*Q"т:З P>€ Э:Qў€8 >2Q> 2бУђ/ЭЗ0Тщ!"=1ЭRЭПў% .ЭПў%('ў (#ж08ъў 0ц‡!…o~#foД(й~#ЭО(в8аЭрђЭрў Ф{жS2QЭПУђхеХ/!'ЭСбсЗ :1ўРЏ2> Щх!аЗэRс0ў РУ}Эw:QЗ *т"QЩ ЭУr!RчЏЭjхџ~#ў їx2€сЭ2ф\>ЭjЭ2хl>ЭjЭ2цЏ2|!ч~З &#~ў Ш!šшО #ј^#Vыщ#§## цўџ‡Ъ_#~ў ЭЩ:№ў /№Э  ЭчЭЗ !AЭЭ(2!>ЭЭ(|уЃУЭР Э!"-"/#"ЏЩ!Џw#ќT!QN#эА!T #~ЭО8 їЭ’ЭО #Э’8 ыs#r#ы+р! /%эА>2ЩDЭŒ*}Д 2*ЮэR0(!Эљы!„ эА! %эАЭ*л'УМУг€УЭЭ]Э !Э\> Эj:х!фЖwц>(:АѓЦц <2526>27Џ24:\і€2\ЭуТп :цТй !44Эі:фцТЅ :ц( н Э:нѓ=ЪЅ Ц!АѓОвЅ *)э[+Э(*%}Д(x:нѓ=(rЦх!АѓОс0hЭ{}ц_L)))|цWЫ9!М Э:ѓЗ(Э##Э*#}Д(3:нѓ=(-Цх!АѓОс0#Э{DЫ8Ы8Ы8)))|ц?o`ЭSЭ:рЭ}!65(> Э}':526:нѓ= LЭŒЭr:фц( !75 6Эq ЭйУс :4ЗјЪ*5|Н(ЭrЭ :Аѓў"ѕд{ёмr:\ц_Эх_ЭВбЭВыi`Э(ьУЭЭЭ\ЭЗјТ!"}"#"j\!'Э}Д(ў( Э}+}Д ђоУrnУщЭЭ\ЭЗШУЭЭ !]>?О# њ ЭЭѕЭrёц_ўNШўY х\ЭЗШјУ!]~ўO #~ўN( ўF #О #~ў .ЭЩ)Уэs<Џ2T24!">"L!Э\Эm "NЭ] ћ Эm y2ц Э ! @э н!]Э• !AЭѕ_юO!]ЭѕЁO:TБ2S2P‡Г2U:фЭЇ :хЭЇ 2фЭујТ:Uц(ЭіЭrЭЛ !@э н! Э• Џ2Q2RЭ =:Uц;ЪI >2Q:SЗ(2R"# Э*>!ы!эА!6Э:Uц(E! V эА*NЭ] (х! ]Tн!VЭ• Ээ сшЭy:ф2SЭйЪr $ЭујТЭэ Эй(ј*N\Э` "N пЭyЭСЭ ПУэ{<*>"L ЭЭrр Э’ў+ &>2T#е>Эjбўџ(З :2<ЭЭЇ ў ЩЏЩ‡УI  ~#ў? н~н#ёЩцъЖ ц2S(2P:SЗЩ*LвЗэRдС*L">ы!-"L!!Џw#ќе§с*L§u%§t&ЩЭ :QЗР] ЭЩ*>  ОР#љЩ!"-"/Џ2 ЭЗР*>)ы! эА!"э[LеЭб!џЗэR 'Эы*L:SЗ({В( *LBK>эБ +§*>:RЗ "L§u%§t&џэRРЭСŠх*>-ысхэR§^!§V"§u!§t"0§4# §4$сџэRЪЏ2RЩ*L6џ!"L~<Ш">-эАЭќ:(З( !44*%р!">!-"%"LЩ:'З <2'ЭЗ‡ТI ЭЗ›ТI !"*>-ы*%эRхЭс&Эѕ:PЗ !)эАЭёЗШ:QЗ ЭЇУI §*>§6(:цЭЇ Ш*L6#"L§u%§t&Щ!Эi AЧ Э*ЭхO‡O!) ЭЭ{сЭ :ѓЗ :Аѓў0##ЭхЭSШ8QG:ѓЗx ЭB8DЭu8?W~#И 9Эo84_WЭu8+_~#И Э>8  е*Эхнсб:ѓў8{ZWнхс+ЭЗШи ЭœЭoиGЭˆ8+ЭoихOХHеdЭВбс&хH!lyўP0!а хнссЩ~#Gў/(ў.(ў-7РУo!Эi "ј Э,ЭЭS Э*р"нЭSШ8AG~#ў: Эo82_~#ў: Эo8&W~k`ў (ц_ўA( ўP |ў 0З( Ц g-ЭЗШ  ЭІ|ў 0ёж цgу!Э’Эo87З(4ўQ00ў)8G:јњЗ(%xGЭ’ў xў!0 2Џѓн!o2Ўѓн!l§*РќУ)УЭhѓУ"@!ЭhѓЭ%@ЭkѓУrеыЫO 6#ЫWЬ Ы_Ь p#p#p#pыбЫG( Э’ЭО #Э’Э›8(O#~+ў:y ##жA8х!3Ос8>џ<Эж~ў. #ЭнyЩЭ›8"( Э›(!8#(єў*( ў?(чЭ р{€_аЩШ>  >?ќЩ6 # њЩЭ’ЭО #Э’ў/ #Э›(8#х!NО(#Ы80јсжxБOсаyЩBAVPW Эг>  ЭЭw!еЭ’ў ШЭˆиOЭˆ8 ѕy‡‡‡Oё ЩіyЩ~ж0иў ?и#Щ~#ЭЧ(љ+Щ~ўa8ў{0ж ў:Шў.Шў"Шў[Шў]Шў_Шў/Шў+Шў=Шў;Шў,Шў Шў Щ:\<Рб‡У!]Эѕ=РХ ЭС\ЭЗЩ >?О#>Шї=ЩеdMDЭШ]QС:ѓў0"еPYСЭ†ЭJхз!иэА>-2м> 2псЩ(xAOЭ†*о"н> 2п> 2д>-)|ў >a8>p2р|ў 0З Цж MGЭ†>.2н> 2д>:2з2к!еЩ!еxЭЃyЭЃzЭЃ{ЭЃ>0!еОР6 Щ/ж 0ћЦ:p#w##Щ!x0ЫЫЫєGЩ!xЫЫЫ8 эR0?ЫяGЩЗэRє ЭЭУr! ЭЭ{~#Э}љЩ:4o&Э(ц Э:4=Ш>sUэC8эC: )ЫЫх!8~'w#љс ъ!;~Эg> O~+ЭgыЩц(і0‘ > Э}> > ѕХех_ЭсбСёЩЗШе_ЭбђDIR ’ COPY № TYPE % REN w DEL Š DATE ˜TIME ‡RENAME w ERASE Š PAUSE q REM VERIFY Х MODE BASIC RFORMAT X Insert disk with batch file and strike any key when ready $Strike a key when ready $Invalid drive specification$Bad command or file name$Program too big to fit in memory$ $ file$ bytes free$File not found$Are you sure (Y/N)? $Rename error$Invalid parameter$File cannot be copied onto itself$Content of destination lost before copy $File creation error$Write error$Insufficient disk space$ copied$Current date is $Invalid date$ Enter new date: $Current time is $Invalid time$ Enter new time: $SunMonTueWedThuFriSatCOMBATy5x5A€ COMDATA ѕ?06DC4' COMMAND version 1.11 for MSX-DOS amended by Hal-F 07/30/85WORK AREAABLEDNDATCHERSџћыA-DOS amended by Hal-F 07/30/85џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/* (C) Copyright by ASCII Corporation, 1989 All rights Reserved. File: conio.h Console and I/O Port Functions */ #ifndef HEADERtype #include #endif /* HEADERtype */ extern char getch(), getche(); extern BOOL kbhit(); extern VOID sensebrk(); extern char inp(); extern VOID outp(); џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ MSX-C Compiler Ver 1.1 Contents file name Command Files - - - - - - - - - - - - - - - - - - - - - - - - - - - - CF.COM MSX-C Compiler Parser CG.COM MSX-C Compiler Code Generater FPC.COM Function Parameter Checker MX.COM Module Extracting Utility Library Files - - - - - - - - - - - - - - - - - - - - - - - - - - - - CK.REL MSX-C Standard Kernel CLIB.REL MSX-C Standard Library CRUN.REL Runtime Library CEND.REL MSX-C Standard Library LIB.TCO Library for FPC Header Files - - - - - - - - - - - - - - - - - - - - - - - - - - - - STDIO.H Standard Input/Output Header BDOSFUNC.H Header for MSX-DOS Function Call Batch Files - - - - - - - - - - - - - - - - - - - - - - - - - - - - - C.BAT Batch File for Compiling AREL.BAT Assembling Skeleton File for MX CREL.BAT C Compiling Skeleton File for MX GENLIB.BAT Batch File for C Standard Library Generation GENLIB01.BAT same as above GENLIB02.BAT same as above GENLIB03.BAT same as above GENLIB04.BAT same as above GENLIB05.BAT same as above GENLIB06.BAT same as above Source Files - - - - - - - - - - - - - - - - - - - - - - - - - - - - LIB0.MAC MSX-C Standard Library Source File (Assmbly Language Part) LIB0.C MSX-C Standard Library Source File LIB1.C same as above LIB2.C same as above LIB3.C same as above LIBK.C MSX-C Standard Kernel Source File CK.MAC MSX-C Standard Kernel Source File (Assmbly Language Part) CRUN.MAC Runtime Library Source File CEND.MAC MSX-C Standard Library Source File Sample Files - - - - - - - - - - - - - - - - - - - - - - - - - - - - HEAD.C WC.C ECHO.COM ECHO.C SEARCH.C SEARCH.BAS SEARCH.BAT Q.COM Q.C LINE.REL LINE.C COLOR.REL COLOR.C CALBIO.REL CALBIO.MAC RND.REL RND.MAC BK.MAC MKQ.BAT ROM0.MAC ROM1.C Document File - - - - - - - - - - - - - - - - - - - - - - - - - - - - CONTENTS.DOC Contents of MSX-C Compiler Ver 1.1 Total of 52 files џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџcg -kr900 %1 m80 =%1/z del %1.mac џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ ; crun -- MSX-C run time library (Ver 1.1) ; ; (compiler known subroutines) ; ; 25-Oct-83 ; 26-Oct-83 add CRUNVER ; 28-Nov-83 debug ?DVBAB ; 1-Feb-84 topological sort ; 8-Jul-85 debug ?SRIHB ; 20-Jun-87 use Z80 op-code MODULE CRUNVER ; ; This module contains version number of CRUN.REL ; ; 26-Jun-87 MSX-C Version 1.1 ; public ?crun ?crun: defb "MSX-C ver 1.1 CRUN" ENDMODULE MODULE LAUHL public ?lauhl public ?laut ?lauhl: ; load 16-bit automatic variable ; hl = var pop hl ld e,(hl) inc hl ld d,(hl) inc hl push hl ex de,hl ?laut: add hl,sp ld e,(hl) inc hl ld d,(hl) ex de,hl ret ENDMODULE MODULE LAUT1 public ?laut1 extrn ?laut ?laut1: ld hl,1+2 jp ?laut ENDMODULE MODULE LAUT2 public ?laut2 extrn ?laut ?laut2: ld hl,2+2 jp ?laut ENDMODULE MODULE LAUT3 public ?laut3 extrn ?laut ?laut3: ld hl,3+2 jp ?laut ENDMODULE MODULE LAUT4 public ?laut4 extrn ?laut ?laut4: ld hl,4+2 jp ?laut ENDMODULE MODULE LAUT5 public ?laut5 extrn ?laut ?laut5: ld hl,5+2 jp ?laut ENDMODULE MODULE LAUT6 public ?laut6 extrn ?laut ?laut6: ld hl,6+2 jp ?laut ENDMODULE MODULE LAUT7 public ?laut7 extrn ?laut ?laut7: ld hl,7+2 jp ?laut ENDMODULE MODULE LAUT8 public ?laut8 extrn ?laut ?laut8: ld hl,8+2 jp ?laut ENDMODULE MODULE SAUHL public ?sauhl public ?saut ?sauhl: ; store 16-bit automatic variable ; var = hl ex (sp),hl ld e,(hl) inc hl ld d,(hl) inc hl ex (sp),hl ?saut: ex de,hl add hl,sp ld (hl),e inc hl ld (hl),d ex de,hl ret ENDMODULE MODULE SAUT1 public ?saut1 extrn ?saut ?saut1: ld de,1+2 jp ?saut ENDMODULE MODULE SAUT2 public ?saut2 extrn ?saut ?saut2: ld de,2+2 jp ?saut ENDMODULE MODULE SAUT3 public ?saut3 extrn ?saut ?saut3: ld de,3+2 jp ?saut ENDMODULE MODULE SAUT4 public ?saut4 extrn ?saut ?saut4: ld de,4+2 jp ?saut ENDMODULE MODULE SAUT5 public ?saut5 extrn ?saut ?saut5: ld de,5+2 jp ?saut ENDMODULE MODULE SAUT6 public ?saut6 extrn ?saut ?saut6: ld de,6+2 jp ?saut ENDMODULE MODULE SAUT7 public ?saut7 extrn ?saut ?saut7: ld de,7+2 jp ?saut ENDMODULE MODULE SAUT8 public ?saut8 extrn ?saut ?saut8: ld de,8+2 jp ?saut ENDMODULE MODULE MULHD public ?mulhd ?mulhd: ; 16-bit multiply ; hl *= de ld b,h ld c,l ld hl,0 ld a,16 ?01: add hl,hl ex de,hl add hl,hl ex de,hl jr nc,?02 add hl,bc ?02: dec a jr nz,?01 ret ENDMODULE MODULE MULAB public ?mulab ?mulab: ; 8-bit multiply ; a *= b ld h,a xor a ld c,8 ?11: add a,a add hl,hl jr nc,?12 add a,b ?12: dec c jr nz,?11 ret ENDMODULE MODULE DVNHD public ?dvnhd ?dvnhd: ; 16-bit unsigned division ; hl /= de ; de = hl % de ld b,d ld c,e ld de,0 ld a,16 ?21: add hl,hl ex de,hl adc hl,hl jr c,?22 push hl ;carry is always cleared sbc hl,bc pop hl jr c,?23 ?22: and a ;clear carry sbc hl,bc inc e ?23: ex de,hl dec a jr nz,?21 ret ENDMODULE MODULE ABSNEG public ?abshl public ?neghl public ?nothl ?abshl: ld a,h or a ret p ?neghl: dec hl ?nothl: ld a,l cpl ld l,a ld a,h cpl ld h,a ret ENDMODULE MODULE DVIHD public ?dvihd extrn ?abshl extrn ?neghl extrn ?dvnhd ?dvihd: ; 16-bit signed division ; hl /= de ; de = hl % de ld a,h or a push af ;remainder's sign xor d push af ;quotient's sign call ?abshl ex de,hl call ?abshl ex de,hl call ?dvnhd pop af call m,?neghl pop af ex de,hl call m,?neghl ex de,hl ret ENDMODULE MODULE DVBAB public ?dvbab ?dvbab: ; 8-bit unsigned division ; a /= b ; b = a % b ld l,a ld h,0 ld c,8 ?41: add hl,hl ld a,h jr c,?42 cp b jr c,?43 ?42: sub b ld h,a inc l ?43: dec c jr nz,?41 ld a,l ld b,h ret ENDMODULE MODULE SLHB public ?slhb ?slhb: ; 16-bit shift left ; hl <<= b inc b ?51: dec b ret z add hl,hl jr ?51 ENDMODULE MODULE SLAB public ?slab ?slab: ; 8-bit shift left ; a <<= b inc b ?61: dec b ret z add a,a jr ?61 ENDMODULE MODULE SRNHB public ?srnhb ?srnhb: ; 16-bit unsigned shift right ; hl >>= b inc b ?71: dec b ret z srl h rr l jr ?71 ENDMODULE MODULE SRIHB public ?srihb ?srihb: ; 16-bit signed shift right ; hl >>= b inc b ?81: dec b ret z sra h rr l jr ?81 ENDMODULE MODULE SRAB public ?srab ?srab: ; 8-bit unsigned shift right ; a >>= b inc b ?91: dec b ret z srl a jr ?91 ENDMODULE MODULE CPSHD public ?cpshd ?cpshd: ; 16-bit signed comparation ; test hl : de ; set into cy & z ld a,h xor d jp p,?101 ld a,d cp h ret ?101: ld a,h cp d ret nz ld a,l cp e ret ENDMODULE end џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ…Pдв cє54„I@д8јЊyP€вё’|]0ЋЖLtЁЈ)Є"N…дP Sѕ5$)@дd2Чс‡дtŸЉЉ ЁN…Tд’R cѕ5$”„)@д$d2ХŒАшaёЧъjI)S€…Tд“’ cѕ5$ф„)@д$d2ЧŒАшaёЧъjIЩS€…гP Sѕ4Ф)@дd!УИш?SLABœ…г Sѕ4Ф„)@дd CИш?SLHBœ…QP cєEd$)@дTо&“ррИвq`4@ѓ>‘1а ~ˆЌ„‚…8…Q’R cєEd”„I@дlјЗzЊžЌажЭ РЖhё~[ђ‰:й1  ~‚„І™ЧшŠЩ)‘р ~ˆЌœ‰ЧщШЈщ “€…P”г‘Qрcє%4„Ш§9!2?NOTHL”MBР‹w€Ќњ/7ŸцvLt Ё)Є&G@Р1њr*:BdtЇ'Њ$&N…Q“’ cєEdф„I@дp„K€р€Ѕжэ5ЮWi Т8)нЄ уЌz v2c §Y9!p…SUSP cєеTФ)@д4ЮЏт‘€ >1а ~šЊ˜‚…8…SUS cєеTФ„I@дHˆM€р€Ѕж)uŒ ‘шьЩŽ€cєеTФ„IР…TаUU cѕ4UC‰@д" 0РШ ?SAUTŽ€cѕ4UC‰Р…TаUU рcѕ4UCy@д" 0РШ ?SAUTŽ€cѕ4UCyР…TаUU  cѕ4UCi@д"0РШ ?SAUTŽ€cѕ4UCiР…TаUU `cѕ4UCY@д"0РШ ?SAUTŽ€cѕ4UCYР…TаUU cѕ4UCI@д"0РШ ?SAUTŽ€cѕ4UCIР…TаUU рcѕ4UC9@д"0РШ ?SAUTŽ€cѕ4UC9Р…TаUU  cѕ4UC)@д"0РШ ?SAUTŽ€cѕ4UC)Р…TаUU `cѕ4UC@д"0РШ ?SAUTŽ€cѕ4UCР…TаUR cѕ4T„Ш§MURP5 q—„eaж99ˆЮNЖLtЉ ЊЄ&GA€)њš ЊЄр…SUU cєФUC‰@дB 0РШ ?LAUTŽ€cєФUC‰Р…SUU рcєФUCy@дB 0РШ ?LAUTŽ€cєФUCyР…SUU  cєФUCi@дB0РШ ?LAUTŽ€cєФUCiР…SUU `cєФUCY@дB0РШ ?LAUTŽ€cєФUCYР…SUU cєФUCI@дB0РШ ?LAUTŽ€cєФUCIР…SUU рcєФUC9@дB0РШ ?LAUTŽ€cєФUC9Р…SUU  cєФUC)@дB0РШ ?LAUTŽ€cєФUC)Р…SUU `cєФUC@дB0РШ ?LAUTŽ€cєФUCР…SUR cєФT„Ш§1URP5 p—„ea•ж9/ЪЮЖLtІ ЊЄ&GAР)њb ЊЄр…д•S•‘`Sє5%Tщ@дHšS, HbБ”ф ‹†"HЊNŽ€Sє5%TщРžŽ€cєФUCР…SUR cєФT„Ш§1URP5 p—„ea•ж9/ЪЮЖLtІ ЊЄ&GAР)њb ЊЄр…д•Sџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/* (C) Copyright by ASCII Corporation, 1989 All rights Reserved. File: ctype.h Character Type Header */ #define isupper(c) ('A' <= (c) && (c) <= 'Z') #define islower(c) ('a' <= (c) && (c) <= 'z') #define isdigit(c) ('0' <= (c) && (c) <= '9') #define isxdigit(c) (isdigit(c) || 'a' <= (c) && (c) <= 'f'\ || 'A' <= (c) && (c) <= 'F') #define isspace(c) ((c) == ' ' || '\t' <= (c) && (c) <= '\r') #define iscntrl(c) ((c) < ' ' || (c) == '\177') #define isalpha(c) (isupper(c) || islower(c)) #define isalnum(c) (isalpha(c) || isdigit(c)) extern char toupper(), tolower(); /* kanji first byte 0x81~0x9f 0xe0~0xfc */ #define iskanji(c) ('\201' <= (c) && (c) <= '\237'\ || '\340' <= (c) && (c) <= '\374') /* kanji second byte 0x40~0x7e 0x80~0xfc */ #define iskanji2(c) ('\100' <= (c) && (c) <= '\176'\ || '\200' <= (c) && (c) <= '\374') џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/* (C) Copyright by ASCII Corporation, 1989 All rights Reserved. File: direct.h Directory Manipulate Functions */ #ifndef HEADERtype #include #endif /* HEADERtype */ extern int expargs(); extern STATUS chdir(), mkdir(), rmdir(); extern char *getcwd(); џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/* echo - echo back arguments 10-Nov-83 fprintf -> fputs */ #include #pragma nonrec VOID main(argc, argv) int argc; char **argv; { char *exargv[100]; unsigned i, exargc; if( (exargc = expargs(argc - 1, argv + 1, 100, exargv)) == ERROR ) { fputs("too many arguments\r", stderr); exit(1); } for(i = 0; i < exargc; i++) { puts(exargv[i]); puts(" "); } puts("\n"); } џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџУ*љ!х!€~#х…o6сУMSX-C ver 1.1 CKtoo many arguments ")!8џ9љ*)")!9х!ы*)+dЭћС"+}Є<Т€т !-Эђ!ЭУ!ы*+ы}“|šвЉх)ы!9^#VыЭщ!AЭщс#Уƒ!CЭщ!Ш9љЩcan't open: caconw*:|out<*:|bad temporary drive rcan't open: can't make: "Л!хЭGх}ДТ3Эм!Ф"З"Е!"Н!€Э"Пх!€ЭыЏы"Тые*Н#"Н+)ы*Пыбs#r*ЛЭЖыы"ЛыЗЪ%ў|Ъ%ў;Ъ%ў<Т‡ы"Л><*Тw#"ЕУЫў>ТГы"Лыў>ТЂы"Л>a2Ш>>*Тw#>>w#"ЗУЫ*Н#"Н+)ы*Пыы*Тыs#rых*ЛыыЭЖыс"Йы"Лыw#ў"Тяy/OУў\ТЗЪы"Лыw#ЗЪ Тлў Ъў ТлЏw#"Т*ЙЭ'УU*Н"Н)б6#6е*Лы*ТЭЃыkb"Йў|ТЬы"Лыў|Тhы"Лы>a2Ш*Й#"ЙеЭг2Сбў@Ъ–еж@Эѓб<Ъ–ы"Л!Ъ"З:Сw2вУЅ!Ь"З>|2вЏ2г*Л~ў ЪЬ~ў ЪЬт !жЭђ:Ст Э1 !ЭУыХ*Ех!ЭСС}ДТљт !эЭђт *ЕЭђ!ЭУШХ*Зх!ЭСС}ДТ&т !њЭђт *ЗЭђ!ЭУб*НЭE!ЭУЭсЭE *Й"Л~ы2СсMDl&}=ДЪa}жДЪЧ}жДЪ УХ*ЕыЗЪ…!~ў:Тyў|Т…*ЕЭГС Р:СЗШ*Л#ѕЏ2€ёў|ТЕх!вЭГв*ЗЭR!бЭ6с#ЭЖбЭzЭЖ"ЛУеФ*Е}Й |ИЪо*Е+Э6Ф*Зб}Й |ИЪ:Сў|Ъ*З++Э6Уы"Лы>|У!х*%ѓN#FХЩЩ*ЛЭ6!бЭЁЩ]T~ў"Р#~ЗЪ~ў"ЪCў\Ъ[Уˆ ТM>УNЏO ЪW~#У0#~ЗЪ0ўNЪxўnЪxўRЪ€ўrЪ€У0> #У0> #У0~#У0ЏЩЭCan't exec: "’!Њџ9љ*’"’х!9ысЭ“ЗТЫ!9ы>ЭА<Трт !”Эђ*’т ЭђУ \!ЭlЭ0j!&9ЭЉ! х!(9х!9Щ!V9љЩЭ("kbхЭžсх#  Эž*ЭЖбЭ!Щы!€n& |ўвR:€ЗЪR> w#|ўвcwЗЪc#УR}Ц2€ЩЩы! COM"j!кџ9љ*j ы"lыnх!9ЭЉ!9ысЭ!х*lы!9Э:сы!&9љыЩ~ў ЪПў Р#УЖ]zіW!хЭZЩ9ысЭ х*Ђы!9Э&сы!&9ж ЭђЩѕ"№*№~#"№ЗЪ еЭ1 б<Тѕ>џЩЏЩ ?ЬЦіL"ЭЪк/ы!ЭЪв3!ЩЭ"*х}=ДТH>RУOЭ~Эг2бе{=ВЪmЭ#~ЭгўBТm!Уp!}2б{жВТ‚ЭУ…!"Ъ хB{‘z˜вЇ!~ЗЪЇ! ыУŒBс{‘z˜кЖ!Щхе*Э‰ бсЗЪ<ЪиўТм:ўRТм!Щ:ўRТъ!Уэ!}*Е!w!6#6ыЩеЭDыС! s#r{ВТ!Щ! ы*ыs#r:ўRЪ9ўAЪxўWЪxУa Х*Э™ыС! s#r{Ђ<Тa! ~#foЭ!Щ>*Е! w! 6#6Уp i`ўAТљ"х*Э™ы* s#rс{Ђ<Ъљ*,-ЪН* ~#foЭ/У$ *х#6сх####6#6*Э }Є<ТЯС! ~/_#~/W! ~#foЭ/У$ "х*ЭFы* s#rс{Ђ<Т$  ~#foЭ!Щ>*Е*MD! w! ы*ыs#r! хi`"сХN#FХ*MD! Сq#pСУp ! ~#foЭ!Щi`Щs#CONLSTPRNAUXNUL"s !кџ9љ*s х!9ысЭ“ЗЪЇ >џУ !9ы!u Э ЗЪМ !У !9ы!y Э ЗТк !9ы!} Э ЗЪр !У !9ы! Э ЗЪѕ !У !9ы!… Э ЗЪ !У !}!&9љЩC KBыЗЪ8 ы" ХЭг* ы!џџСОЪ ЏЩ ў Ъ@ ЏЩ>Щ}!Ъ B{‘z˜вi !е~ЗЪ` ыЭŽ б! ыУH !"C }ж|оахЭ‡}ДЪ… *C Эџс#"C Уo ~ы{ВТ— >џЩ! qеЗТј !~цеЗЪЩ !~цеЗТР >Эg сЭM O! qyсх<То  ~#foЭџУь  ~#foЭџ2 с ~#foЭс#6! NyЩ<Т" х#~цсЗЪ ЭД Щ* хЭД б}ДТ% У }жДЪ4 }ж ДЪ< Щ}ЭQ !џџЩkbеЭД б}ж ДШ}ЭQ ! ЩъO!P q!~цТc >џЩЗЪu ўЪІ ўЪІ УБ !N#F!y–#xžвЄ :P !KB^#Vr+s! ^#Vr+sЏЩ!q#pЏЩ>џЩMD ЗЪШ ўЪџ ўЪџ У* ! ~#ЖТс i`ХЭр С<Тс !џџЩ! ~Цџw#~Юџw! ^#Vr+so&Щ! ^#V{ВЪ ! 6#6k&Щ =Т! ЭвЩ>ЭАo&Щ!џџЩs2. ы"/ ыў ТT !~цТT > Эg <ТT >џЩ*/ ы:. Эg <Тe >џЩЏЩOЗЪ„ ўЪО ўЪЧ ўЪа ўЪм Уй !~#ЖТž kbХеЭM бС<Тž >џЩ!е~Цџw#~Юџwб!^#Vr+syУм Y>ЭАУм Y>ЭАУм Y>ЭАУм >џЩЏЩ~Юы!~цТѕ !~цТј >џЩ! N#FХ!KB^#V! ~#foхi`"о сСЭжы*о MD! s#r{ВТ9 ! ~іw>џЩ! YPN#F!q#pЏЩ ыы"K ы!~цТg !~цТj >џЩ! N#F!y–O#xžGХ!KB^#V! ~#foСХЭСyН xМЪЈ *K #~іw>џЩ*K ы!N#F!q#p! N#F!q#pЏЩ"BЭ(}Є<ТV!џџЩхЭ‡]T"D*BЭ“сы*DыЗТ|ех>ЭАсб<ТƒЭm!џџЩх!%6!6#6сЩ*xЭ"•њЕ!ЭЪкЕеЭ(С}Є<ТЙ!џџЩХхЭ‡]T"—*•Э“сы*—ыСЗТуХех>ЭАсбС<ТъЭm!џџЩхyџЩы>ЭА*§ѕЭmё<Т%!џџУ(!}Щ6#y2,ўвHеЭ‡ыы"-ыс{ВТK>џЩ"*е:,ЗТk!#6#6!!6#6УŒўТŒ!N#F!!q#p!N#F!#q#p**"*$%ђЂ!#^#Vr+sС!! ^#Vхых**MDс ысr+s{‘z˜ва*-MD!# ^#Vr+sЏЩ#Vrы"выХЭ‡С}ДЪєХ]T% ~цСЗТј!џџЩХы"д*вы>ЭАС*ды>'ЭАЩХЭsы"ыХЭ‡С}ДЪ3Х]T% ~цСЗТ7!џџЩХы"*ы>ЭАС*ы>&ЭАЩХЭ"P!Дџ9љ*P"P!9еы*PЭ“сЗТх!(9ысЭ“ЗЪ„>џУЋ !&9ы!9ЭЉ!9ы>ЭА<ТЇ!џџУЊ!}!L9љЩЗЪ"Б!кџ9љ*Бх!9ысЭ“<Тб>џУщ!9ы>ЭА<Тх!џџУш!}!&9љЩ9љ*чх!9ыс"я!Єџ9љi`"ѓ*я"яы"ё!"ѕ*я+"я$%њ *ё##"ё++^#V!!9ехыбЭ“СўўТіЭ `"љ*ѕ"ї!9ы>ЭА!!9ы>ЭА<Ъз*ѓы*ѕЭЪк{!џџУ#х!#9~!9w!I9ы!9Э:ы!I9{•ozœg#Эыс{Ђ<ТЏ!џџУ#х!I9ехыбЭЃЭ dбs#r#Эѓbс#"ѕ>ЭАУd+Х*ѕы*їы}“_|šW*љЭWСУ*ѓы*ѕЭЪк !џџУ#хЭ bq#p#Эѓbс#"ѕУ*ѕы!\9љыЩхы^#Vс~#foЭЎЩ*~ЗЪH~Ц@>:х# Ъ^~ў Ъ^ #УL!9qс :9O Ъ~ў ЪѕyўТƒ>.ё y29#УiЏыЩхkb&хЭžсх#  ЭžбсеЭ!бхеЭѓбс<ТР>џЩх! Ъз~#ў?ЪзУЧс~ЗЪу!џџУёЪю!ўџУё!}ЩЗТљЏЩ=ўк>џЩѕ>ЭАёGЭи}цЪ!У!џџ}ЩSk"~еЭгж@2 СЗЪMў вM*х#~сў:ТM: ##"*~ХхЭосСХЗЪxх! Х ЭžС! ысЭœ~Сў.Рх! Х ЭžС! ыс#ЭœЩы"šыхХ~ЭоСсЗШх Ъв Х~Эг*šwСў*Тв Ъв >?w#"šУТ*š#"šс#УЁў=Ъў;Ъў,Ъў+Ъў/Ъў"Ъў[Ъў]Ъў:Ъў.ЪўЪўџТЏЩў!в#ЏЩ>Щ`{жzовgkb)Ѓ ~#ЖТc!&ы"&ыеЭDх*&ыы)Ѓ бs#rс{ВЪgЩУ+!џџЩš"kЭ‡}ДШЭ*k)Ѓ 6#6Щ$%њ•ЭЪк™!Щ)Ѓ ~#foЩЗ> Э >Э!Иn&"М*МЙ "К*К6 #"К*К6 *М##"М!Й"К*К#"К+~*М+"МўТ(!"М!џџЩo&Щда# ###ЭE#MDi`".*њ",}ДТb!ќ",х!ќ"њ"ќ!"ўс^#V!~‘#~˜кЖ!~Й# ~ИТkbN#F*,q#pУЋ!~‘w#~˜w!~#fo))ы!q#p*,"њ!Щ*њ{Н zМТюi`))Э}Є<Тг!*а}ДТ>џ2ЫЫ> ЭА >ЭА!Ьn&"а*аЭ "Ю*Ю6 #"Ю*Ю6 *а##"а!Э"Ю*Ю#"Ю+~*а+"аўТ<!"а!џџЩo&ЩыУ ###Эи#MDi`"B*"@}ДТv!"@х!""!"с^#V!~‘#~˜кЪ!~Й# ~ИТЁkbN#F*@q#pУП!~‘w#~˜w!~#fo))ы!q#p*@"!Щ*{Н zМТi`))Э}Є<Тч!Щх##х*BMDсq#pс####ХЭ*ыСы"@ыы^#VУy_|šW++++MD*ыы"ы{‘z˜в2kby–#xžкYkb{–#zžкM{‘z˜кYkby–#xžкYы^#Vы"ыУ!kbхi`"сN#FХ*MD! ~#fo)) хi`"сСе}Й |ИТЙ*х##^#Vх*"~#fo##~#foысr+s*~#foN#Fсq#pУУыN#F*q#pб!~#fo))ех*MDс}Й |ИТ!е^#Vх! ~#foысr+si`N#Fбыq#pУыq#pбы"ЩT У+MD*ы!9}“_|šW*G{•ozœg}‘|˜в:!џџЩ*х* "сЩш<Ыј!Уa!"I!Аџ9љi`"Mы"K*Iы!9s#rеYPе*Kы!џџбЭсбЭѓ*!"U$%њŠх)ы!9N#Fс)ы!(9y–#xžкК*U+"UУ*Uх)ы!9х*MMDс~‘_#~˜Wы"Qсх)ы!*9~#fo"S"O*Qы*Sы}“|šв~ы"Sы Х"QХх!хЭ ^х*Oы*QЩбС$%ђ%*Q УХе*Sы{‘Oz˜Gi`"S*Q}‘|˜вn!RХхЭ `х*Oыi`Щы!СЭЪвn*My•OxœGi`"SУ6бс{‘z˜вzЭСУъ"Qс"Uх)ы!*9ХN#F*QысеЭ*U"U)ы!,9С~‘_#~˜Wе*U)ы!9^#Vy“oxšgбЭЪв*i`"Q*U"Uх)ы!9N#F*U#)ы!9q#pс"U#)ы!*9х*QMD*My•_xœW"Mсs#ri`ы*Mых*U)ы!9бs#rУ‚i`Хы*Mых*U"U#)х!9ы"Mыббs#r*U"Uх)ы!.9N#F*U#)ы!.9q#pс)ы!,9Сы*Mыy“_xšWs#rс#"UУ!P9љЩ}ж|оиѕ ё+Ухw#ЗТЄсЩхыбОТФЗТП!Щ#УБ~Oo&}‘o|˜gЩўaиў{аж ЩЭцЭ!*%ѓ"! "%ѓЩ*#ѓ"!"#ѓЩ!"%ѓЩ!"#ѓЩЭ*Э@yў8ер"Э*ы*#ѓЇэR( Э!хУZ*е^#VыбщСХы!9ыq#p#s#r!ЩN#F#~#foљХы}ДР#ЩљХх6#6Эбkzжиg'ЭЗШ€ЭУyKB_yАШs]T УЊыyАШэАЩ`iOУMSX-C CLIB ver 1.10s|ЊђвzМЩ|КР}ЛЩШЫ<ЫјDM!>)ы)ы0 = іЩу^#V#уы9s#rыЩ!У!Ус^#V#хы9^#VыЩMSX-C ver 1.1 CRUNАШэАЩ`iOУMSX-C CLIB ver 1.10s|ЊђвzМЩ|КР}ЛЩШЫ<ЫјDM!>)ы)ы0 = іЩу^#V#уы9s#rыЩџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџУ*љ!х!€~#х…o6сУjQMSX-C ver 1.1 CKёЩ€еЭмбЭ€ў"(ў'ФœO{‡(€ЏѕЭkў Ъ‘Й Э4Й GёХЗФ1ёВуСѕx‡x(ЋЭ1ёў,(КЩЭмЭ”+Э>*yў, еЭuCбУu+:iBЗ(zГШ*В?#"В?:Ь>ЗФЛь*В?:Б?GУ‘)Эі*:Ь>ЗР:ё?ўUР<2ё?ЩЭмЭ>*Э–#ЭЈyў,(яЩ:г>=њр+G2г>:д>=И 2д>:д>Ÿ<2?Э ,2е>У‚ЭЁЩ:е>ЗФЁ:г>ЗЬЁ!д>–(=Т‚4=2?<2е>У‚5ѓ:г>_ў2>аW!ж>7~ЩѕЭ ,е>0wЏ!г>4:?ЗЪ‘ё2?!д>З(4Щ:г>=–2 ?ЩЭ,zГЬЭ,zГ/(ФЏС:Ь>Э‚=И:Ь>Э‚ЗЏі7ѕ:?З(!Э–ЭW ц  ЭB(ёŸ‘ё?ŸŒ:?ЗТ”+СЏ!А"&?У,і7ѕЭц, э"&?xБ(кді7ѕЭц, меХ~ў, #"&?Эц, "&?yСсЙ ГО Џ# їЌЭКссБЭў<ФœЭfЗ Э4Эfў& Э4ы*&?+#~ў> T]ў, zГ ў ь#х*&?zГЬœы}“O|šGс:ё?ў ЩЭ–OХФœ7Э$ЭЉ/#~і@wСц ЬЮ~ц€ФАЖwyў,(жЩ @OY@;Э*&?+~#ў ( Й( (ѓюЏ#"&?ЩЭў(ТœЭkў'ТœOЭk-ЭxЭkў)ФœУ‚>2?AЏ2?;Џ2 ?5Э–Тщ- (ѕЭBФWТн-~і@wёў,РЭ–ТКц>2 ?Щ>џ2?Џ2?У‚>2?іЏ>џ:eB/o:Ь>З(ф}2eB2 ?л>€2Х>д>2Х>ЭЏ2Х>Ч>џ2в>Э”+Џ2в>zЗТœ:ё?ў Р{=јЪœўвœ<2б>ЏgkУпЭ”+zЗТœ:Ь>ЗШ{З(ў мœ:ё?ў {2?Э№ЭFУ$Э–Тœѕ:Щ?ў8ЭФ>!У?w#"?:Ь>ЗФRёў,(зЩ: ?ЗТКЭ*&?+ЭPЗ(ЭйPУг=2 ?*&?~#"&?ў!0єЩЭў(ТœЭkў'ТœЭ–Тœў'ТœЭkў)ТœЭ‚:Ь>ЗР:Щ?ў8>Ъ?!5AG~ЗТАw# љpЩЭm/Эў/ТœЭ–Фe/ў/ТœЭ‚Э$#~цаТАх~і$wЭ *с+"К?>2Б?!"В?У)ѕ>2Щ?ёЩ:Ф?ЗШСУП€Э– ѕЗеЭ$ЭЉ/б~Вw#~цd ~цГwёў,(оЩЭœііwЭАэ~цўBиЏwхЏ#w#w#wсЩЭ–Э~‡дК#~ў(ўФК€Уy/"#?Э0:ё?2?ўUШxц€ТЋxі 2?*#?"?ЭўыxУпЭ–#:š@ЗШУФ"#?~і€w|2?Э0xц€ТЋ*#?ЭЉ/#~ц”ТА~ц@Аі w#s#r#еы*О?ыs#rсУпѕЭ]MЏ2Щ>:вAЗФ2:г>ЗФ02ё!Ь>4~=Тч0!5A~З ! @~З !­B#5A~#ў (ў ( З( ў ( щ!.Ap#"?ЭRЭ *!кP"ѓAЭь8"?~цw#~ц@Тє1~ц(ш#^#VЭRм*И?ы ЭR *Ж?ы{ВФRУj*&?ѕд–#еХЭ№!џџ"?"?}2?Э$!|2Эƒ!?44!JA>Э‚=Э:?ў8д$!?44!q2Эƒ!ŒA>Э‚=ЭЭ<2*Э>|Е(хЭŒс:ŒB<23AФŒЏ23A!е1ЭX2!и1ЭX2*Я>|Е('>,ЭN:ŒB<>,Ф“LхЭŒс:ŒB<23AФŒЏ23A!ш1ЭX2Э<2Сбё0Э-ЭR*›@|ўј(ЏЭйђЭRЭП:dBЗ(ЭN>€ЭNЭ€MЭРMУNo Fatal error(s) Warning(s):Б?GЭRУЊ0ЭU2!2ЭX2Эд.REPT/IRP/IRPC/MACROUnterminated ЭU2!e2ЭX2Эд> Э> Э:ŒB<Ш> Э“L> У“L!"2хЭƒс:ŒB<ШУЄHConditionalSymbols: Macros: !тџ9ы*BЭВвQ6:вAЗ!"ћA"§A*аA *B+<2вAЏ2гA2нAы*їA$ЭВ0ы"аAЩ%ыхЭ<=сшЭР~З<№=ѕц(:нA<2нAёцюР:нAЗШ:нA=2нA<Щ#~ў ц:нAЗ р:чAЗ кё7Щ"аA:вA=2вAЩЭ4ў& .*&?~ў ($ў ( хХЭ–ЭW3Сс"&? >&2дAmў& :дAЗ >&Э/<ЗјѕЏ2дAёЩ*пA~З(Щ?О O+О  їxі€ПЩ+~ў0њн:шAЗР*щAР~З(Щ?О O+О  їЏxЩ+~ў0њп<Щ*&?хЭ–ѕЭW3 (Gёсѕ~#ў (ў хЭK3сяxЭK3ёGѕёТ?3ў&Т?3Уxёсѕ"&?Э4ў ( ў (ЭxЭK3ыЭь дЭьње3ЭK3ѕЭ4ў;(ЭЗ<ЭK3ў Ъ<Э4ѓЭЗ<ЭЗ<ў (љў (ѕЗЭо<"§AЪ<ў Ъ<> Э/<У<хѕ:шAЗ(еы*ѕA4бёцѕ‡њž4*уA~З($ёХG+( ~е/_џбѓ~З(=G+~(Э6єё+<=(+њ~сЩСсЩ>.Э6Э6ёц?Х*№AO DЭкEЭкСсЩхЭ–сФж4ѕЩ?Ъч5ў%(%ў,Ъё5ў Ъё5ў Ъё5ў;Ъё5ў!Ьkў Ъ6w+Э4У"С5ХЗ5ХЭ”+ы:ё?ў F:б>ў(7ў(іџPX 8ќхы|ЕФH5>:СQЏ)Ю0Эš5>ѕЏ) ћЦ0Эš5ё= юDЭ‡5EЭ‡5 Р>0%xЭ5xцЦ0ў:8Ц ў0ШOў:8>0ЭЌ5yх*С5w+"С5сЩСЭx*С5У 5Ow+Э4Й(ў (Bђw+Э4Й(ъУш4(w+У 5Ъ 5њі5У5Т5б{•=Сы*&?+~ў Ьxў ЬxыЩ(фЭипѕх!Њ?ЭВ0#6 +ысёЩсёЩЭЌ3ў&Ъ.6ў:ЪЌ3ў!аў ШѕЭB(ЭЪ‘ёУЌ3!W6У—?Stack overflow, try more P switches Э”+:ё?ў (ы"еAЭ†2СбсŸ6Хе> УaСš6ХЭ–ў:Ь–ЭЭ2( (?Э/<ў їЩЏЭ/<Э<Сбс!Лхе*ћAхх*еAх!Лх!р6хХЩЭ.7СсбЭВ !:оAЗ xБ *аAхЭ;сЭ 3Џ2оAбе*зAхыщеЭe<З(*(?Эz<Э6ў іхХ*йAх*лAх*зAщбс"зAс"лAс"йAыщ bkЃ:вAЗЪи2оAСсб_7ехХЏ2нAУ‚УК:оAЗ(TСлХЭ–ў:Ь–ЭРЗ№Oц yц yц yц@ Щ:нA=2нAЩ:нA<2нAЩ:нAЗР:г>ЗШУЙ+:нAЗР#~ўШ>џУ,Сбс!ЛхеХЩЗѕЭ†2"пAЭО4O:ё?ў (*пAЭ 3ёЩy6+ў,Фœёѕ()Эkў<Фœёwхѕ+:ё?ў cёѕG(Эр4 ў (Sў>(RђЭfж<2цAЬ4вЭ4ў (3ѕ:цAЗ(ёd8еў Шў Шў;Шў,Шбёў<( ў> ( w+Ц:цAЗ ЭФ6+ЭЕ2xЗФœёс"сA&i"еAСбсŠ8Ә6ЏТ>УУ7Сš6Х*§A>2шAхЭ.6ѕЭЭ2('ёсў Ъ4ў;Ъ4ў'( ў"(ЭЌ3щGЭ3ў Ъ4И(яѓёс"§AЏЭ/<Э<Сбс!Лхе*ћAхх*сAх*еAх!Лх!ѓ8хХЩЭ.7Ссб>2шA"уAсЭВ :оAЗ xБ *уA##~ў#0њ+Уј6ыеЭe<З((?Эe<ЗќL4Эо<Э6ў ях*уAхХУ"7 bkбМЭў ЪœOЭ“LЭkў (Э“LЙ ѓ> Э“L> Э“L:ё?ў РУ‚Эў Ъœ2хAOЭ4ў (ЙЪ‚ѓсбС™9Ә6Сš6Х!(?:хAO~Й(ў Ш#іСбс!ЛхеХЩЗЭї#"ЮA~і(wЭ†2"пAХЭО4С ў,(іЏw+2чA2эAw#wЭЈ;б(s#rы"ћAы*ћAеыЭŸ;бs#r{і_Щеѕ*§Aы{цЬГ;*ѕAёѕw{цў(ЬT<ы"§AёбЩ{цр_ЭЈ;zГЪГ;Щеы*ѕAы}ц }іoы~ыбЩЭe<ѕеы{цў(ЬT<ыбёЩы{цр_еЭЈ;{ВСШЏw#w*ѕAs#rХЭ;С*ћAыЭŸ;q#pЩ*§Aеы{цўЬв<*ѕAы"§Aы~ыбЩ{цр_ЭŸ;{і_Щеѕы{цў(ЬT<ыёбЩ*їAы*аA:вAЗ *B%ЭM;к”zЗЪ”W{_е*ѕAы*їAЭM;BKб*їAы"їAxБ(+w ѕ"ѕAЩЭ<=УЦ;е*!?ы*ѕAЭM;к”zўк”W{_сХх*ѕAыуЭM;BKб*ѕAх*!?х"ѕA "їAсбxБ( w#ѕСЩ2™@2š@O!^#V#хХЭЁ=Сс ђ:™@ЙФЩХzГЪ‘ых^#V{В їс}ДШЭЭ=++V+^{В(№Џw#w+++хн F#"?~ц@Р#~ц€ФЏ>~#^#VХхGц +ХЭ›>ё_ц€ d{ц e{ц@Фk>{ц (]{ц_!~ЭNЭV>сС###Х~#ЭNљС> ћ!™@5 :š@wЭ!?4:?ОЬ$*?~і@wЩ> > УN>*Ъ>MЪ>CЪ>UЭNЊеХ*?х#{цG#^#V#е^#Vы"О?бЭ-с"?#~ц ФRСб>IУN!ё?"я?Э“*я?6!ё?УƒХх~цG#^#VЭRсСЩeџ !џ<#џџЭQaх-? end exparg 112,108,101,116,101,13,0 Т* -A\% EXPARG ѕ?02F62' ЊSџће€€€€ К$FPC^AsS•SкPцPђPўP QR1TQUQ"Q.QЛQGQaQ:Qˆ\lR‚VШQџa_””жеQAQBQCQDQEQHQLQMbSPcPSWQIQR bBCbDEbHLbAFjIXDjIYdrNZqZrNCqPrPOrPEРжzFPC RELg!Њ3ej,FPC PRNFPC MAC€€`gшЉ@4ˆЈA PC MACRELCRFPRNГHŒшe4Tх4T(юА SKPL@Žнх4ЕD(ѕBSP@@e5D4ДЯ(nSTRCATŒнe5E$4еЮјnSTRCPYVŸх5E$”5HЭnSTRLENR U5”е№SYMTOPŒТ†eDѕUXѕrUBP@V eTtUD$ѕqўUNCHECŽ—хTфuD4ˆщ№WARN2@ŽћUt$ф РžASS1@Žцe53$ђ§POOL@S eєєХЪ€FPRINTFŽЅх$є4U8ژ]PUTC@Œд†е4%$ДьАSEARC^trn fputs@ public batfil public main@ extrn sbrk@ extrn strlen extrn exparg end ic nextli extrn senseb public search extrn strcmp public warn@ extrn printf public warn2@ public pass1@ public length public eqtype public chkpar extrn min@ public proces public pass2@ public amatch extrn touppe extrn ?saut2 extrn ?laut4 extrn ?laut2 public nextpa public match@ public docomp extrn strcat extrn strcpy extrn putc@ exP=FPC/Z )H?Command error?File not found?Can't enter file~цШЭ“L#УЄH!sHУОH!‚HУОH!’HЭЄHУпH"C*+љ++"ZB*Cх:fBЗТ2]B*ZBљЭ№K:!Hў ЪпHЏ2jB2aB2hB2gB2`B2dB2eB2cB2iB<2bBЏHХЏ2YBЭ†JиCЭiJCў Т.I>€2YBх!kBЭ]Jс> 2C2 CЏ2Cyж,З2cBТXI:YBю€2cBЭ†JиC:dBЗЪeICЭiJC:C2_Bж 2^BТ‚I:YBЦ@2YBх!ŒBЭ]Jсyў=7РЭ†Jў 7РЭiJCЗњЊIў 7Шх!­BЭ]Jс:YB‡!kBм=J‡!ŒBѕ:dBЗЪкI•BC>ѕ ё=ТаIём=J:aBЗТяI:^BЗТяI:_B2aBЭѕ Эё_ЭЏ2€Э)MЭЪLЭрLс*ZB##:bB2]BG7ŸхебсЩЉс5Z`ѕC ~ЗТWJЗњWJw# ТMJёЩ #УMJ w#Т`JЩ:\BЗШх! C~ў Т„Jцw#ТzJсЩЭЯKў:7>ТЊJxЗЪ†JыЭ|LOx=yТЫJў[аўAиж@ы2CдЯKxў кИJ ХыеCЪKЭ|LУПJўTТфJЭ|LўT7РЭ|LўY7РŸыЗУЊJўLТўJЭ|LўS7РЭ|LўT7Р>ўыЗУЊJўR7РЭ|LўD7РўR7Р>ўыЗУЊJсС> к%Kы6 #=ђKыyж.2\BЬЯKые Cxўк=KЪJKЭ|LУ>Kсyж/ЗyРЭ|LўLТcK2aBЭ|LOУKKўNТnK2hBУ\KўOТyK2gBУ\KўRТ„K2cBУ\KўCТ’K2dB2aBУ\KўMТK2iBУ\KўIТЈK2`BУ\KўXТЕK>џ2eBУ\KўZТСKЏ2`BУ\KўP7Р:bB<2bBУ\KхЭ|Lў[вэKў0кэKўAвщKў:вэKУвKOбЩХе!€~6ЗGЪL#~ў ТLУњK Hx+#ЪL~УL2fBУ?LЏ2fB:]BЗТ2LЭРL>*Э“L HЭ> Э“LбС: H!!Hх"qH…o>Œg6 #> wс:]BЗТ{Lх!!H~ў ЪzLжaкvLўвvLЦAw#УcLсЩ~#ў Ъ|Lў Ъ|Lў ТКL#"qHЩёхеХѕц_ЭёСбсЗЩх*qH+~цў #Ь№K#"qH+~сў7ШЗЩ> Э“L> У“LѕХехD!"D!ŒB:aBУѓLѕХехC!"C!kB:cBЗЪ$MхЭс~Зњ$MЭFMеЭбеЭ<ЪЛHсЭFMЭ<ЪЕHсбСёЩѕХех!"FFЭ!­B~Зњ$MУMхе Џw#ТOMwсбЩѕе­BЗњ}MХхеFЭбХхЭсСбёЩѕ:aBЗЪUJе:ŒB<Ъ}Mњ N> ЭN> ЭN>ЭNх*DDХŒBЭѓMDЭСсŒBУtMѕ:cBЗЪUJе:kBЗњ}M>Э‚Nх*CCХkBЭѓMCЭСсkBУtM|ЕШ}цЪўMЦ€ц)„`iУRN> ЭN> ЭN> ЭNбёЩѕ:aBЗЪUJ:ŒB<Ъ’LњњNухе*D|ўЬJN#"DDбёѕцwёсЩD!ŒB>ѕХехЭбеЭЗТFOбс€ ыСё=ТRN!ЩC>!kBУRNѕ:cBЗЪUJ:kBЗњ’Lухе*C|=ЬwN#"CCбёwсЩ:­B<ЪЅLњ5Oхе*F|ўЬЪN#"FFбУИLF>ѕеХЭ­BЭСб=ЪѓN!€ыё=ТЯN!Щё>УяNёхеХѕц_!jBў вOж ЪO<ЪO~=w4{ў Т-O> ЭN~цТOУ0OЭёСбсЩхеХЭСбсў7ШЗЩ!fOЭЄHбЦ@ў@ТWO> Э“L!lOЭЄHЭРLУDISK FULLхеХы!rOў:>Т1Pж@ўв•Pw#2\Bў.Ъ\Pў!к\Pw#Т5P2\Bў.ЪcPў!вJPУcP6 #Т\P:\Bў.ЪpPw#ТpPp–OЭrOЭўџЪ•PЏ2’O2“OСбсЩхеХ:“O=ђРP–OЭrOЭЦџкеP!–O"”O>2“O*”O~ўТаP7УеP#"”OЗСбсЩЩP AP BP CP ыDP ЭdEP Ъ%HP ЅУLP lIMшT` ЭёSPсQ` PSWP V!IP ўMR}R` foBC` МЅDER` бЭHL` ТЉAFh DIXh dСЅIYдQp ~#NZp ЬЅZp бsNCp *ЃPњQp ТЅPO0Wp !PEРaHELPMS9RРbSYMTOPРb@POOL@4SРb€>STACK@РbЌ?CHKINDRVРb­?STRICTSSРbЎ?UNCHECРbЏ?BAD@ёRРbА?CONTSUATРbБ?FILES@ЫUРby@NFILESРb{@CURFILРb}@FINDEXоWРb@LINE@YРb@COLUMNРbƒ@CURFUN˜`РbЄ@SYMP@РbІ@POOLP@РbЈ@SP@”]РbЊ@DONT@CdSРbЌ@UGETB@РbЎ@UBP@ЦSР!E?59999(XРaeERROR@љS@Ж@IOB@ T@НFPRINT@+EXIT@зSР!•?59998RTР!—?59997з\РaЇMGETC@TР!Ї@2Р!@0Р!Р@1@Ž FOPEN@@GETC@@c FCLOSETР!#?59996Рa.UNGTCHAWР!A@3зTР!O?59995Рa^GETCH@яWР!@4=YР!}@5„ZР!Ђ@6>ZР!Ћ@7љTР!­?59994 UРaКSKPTABUР!Ч?59993мUРaжSKPL@+UР!у?59992XР"А@?51rUРaёGETNAMР!ѕ@10/[Р!)@8ы[Р!@9žUРa7GETN@UР!8@12е_Р!L@11РaVGETDECНUР!Y@14Р!w@13Рa}NEXTLI%V@а SENSEBР!€@15Р!‹@16Р"Б@?71Р"Г@?72Љ`Рa–SEARCHDVР!œ@19Р!г@17Ж]@КSTRCMPР!Ч@18ЃVР!з?59991ДVРaіWARN@@PPRINTFХVР!?59990Рa>WARN2@жVР!g?59989чVР!u?59988ЭWР!™?59987Р"Е@?83Р"Ж@?84Р"З@?85Р"Й@?86РaЌPASS1@OWР!И@29Р!Ш@20Р!Л@21Р!т@22‡WР!ї@26Р!5@23Р!/@24Р!@25Р!f@27Р!{@28XР!С?59986РaЮLENGTHР!ъ@30Р!ю@31Р!ђ@32Р"Л@?107РaљEQTYPEР!@33Р!@34Р!@35Р!@36Р!7@37XР!9?59985ЁXР!Q?59984ВXР!k?59983УXР!‹?59982ОYР!™?59981Р"М@?111Р"О@?112Р"Р@?115Р"Т@?116РaЎCHKPARР!м@38Р!ь@39Р!ё@40Р!@41Р!3@42@SMIN@„YР!Z@45Р!q@43Р!•@44Р!Ћ?132ёYР"Ф@?140ЯYР!§?59980рYР!?599790]Р!9?59978Р"х@?133Р"ч@?135Р"щ@?136Р"ъ@?137РaJPROCES[Р!P@61Р!l@46Р!Ў@47Р!а@48Р!j@49Р!–@50Р!Ђ@51Р!Ж@52Р!у@53Р!ц@54Р!+@55Р!U@56єZР!m@58Р!|@57Р!‹@59Р!У@60РaЬPASS2@g[Р!Ь@72Р!м@62Р!j @63Р!т@64Л[Р!№@71Р!d @65Р!& @66Р!E @67Р!^ @68Р!= @69Р!V @70Рap AMATCH?\@ ?SAUT2l\Р!€ @82Р! @73Р!С @74#\Р!“ @76Р!œ @75Р!Н @77™\@Ѕ ?LAUT4Р!Й @78Р! @79Р!а @80Р!№ @81@… TOUPPE@ ?LAUT2Р! @83Рa NEXTPAР! @84š_Рa" MATCH@і\Р!" @87Р!= @85Р!5 @86Р"ы@?214Р"џ@?216A]Р!? ?59977R]Р!D ?59976c]Р!F ?59975t]Р!X ?59974…^Р!h ?59973Р" A?218Рax DOCOMP@п STRCPY@х STRCATР!Ж @88ё]Р!Ц @97Р!a @89Р!н @90Р![ @91@S PUTC@@я FPUTS@Р! @92J^Р!ў @95Р! @93Р! @94Р!2 @96Рa| BATFIL–^Р!† ?59972Ї^Р!В ?59971И^Р!Г ?59970Щ^Р!Ч ?59969к^Р!к ?59968ы^Р!ы ?59967ќ^Р!ћ ?59966 _Р! ?59965_Р! ?59964/_Р! ?59963Р! ?59962Р""A?233Р"$A?234Р"&A?235Р"(A?236Р"*A?237Р",A?238Рa* MAIN@И_Р!W @99Р!b @98Р!} @110Р!Њ @100Р!щ @101Р!# @102Р!+ @103Р!3 @104Р!; @105Р!C @106Р!в @107Р!] @108Р! @109Р!€ @111‰`Р!ƒ @114Р!§ @112@Ђ STRLEN@Љ SBRK@Р!Ъ @113@ EXPARGР!-@115Р!\@116Р!Б@117"ІMD* ІЭDH>ўвUao&ѕы*Іы ~ЭdI! ІОТPa:$І_: ІЭBI_*ІЭ)_ы*"ІMD* ІЭDHё<Уa* ІЭ&Hёц?O* І##" Іб!$ІsУ`хеХх!9qсх!9sсЭйЂЭfC!9^#V!~цТpb!~/!9^Ѓ!9wЗЪpb!9^#V: ІеЭРIсЗЪpbх<Ткaх####~ц сў Тэaх!9~сOх!9~с_Э`сх####~ц€сЗЪb: І_Э2W/!9^Ѓ!9wЗЪpbЭЃ~#foЭйЂУŒaЏўвpbo&)ѕх!9^#Vс ^#V{ВЪkb!~ц@Тkb!~і@wkbх!9~сOх!9~с_~#foЭuaё<У bСССЩхеХх!9sсЭйЂХхЭfCбС!~цТfc!9q: ІеЭРIсѕхх!9Nсх!9qс<ЪРbх!9~с_Э`сх####~/!9^Ѓсх!9wс: І_Э2W/!9NЁO!9qё!9^ЗЪfcЪfc<Тc ЪfcЭЃ##^#V!9s#r!~ц€ТˆbЏЭЃ ОвfcЭЃ N#Fo&) ѕ^#V!~ц Тac!~і wkbх!9~сOх!9~с_Эtbё<УcСССЩ makeweb(q:W) хЭЅH: ІO.}ўвšcyЅГ_yцO}‡oУ…c*ЭЉ"І"Іс: ІOЭ`*Іы*І{•zœа!NеХ!KB^i`~#fo~#foСЭuaб!Nе!е^с~#foЭtbбУЏc[B]=W/?assregP choose BO!&Іq*УЉы*ХЉ{•zœвkdы"-Іые!~цРw!~еўcТOd! ~ХЭdIСЙТOd*-І####~іwс^#Vы"-Іы!~ц€Т#dб!ыУdyAХЭЁYЭu]ёѕЭЃ[>џ2,І*УЉы*ХЉ{•zœвеekbе^#V!~ц€ЪЬe!~цеЗТХe:&ІѕеЭРIсбZ<ЪХeхЏўвбdo&) І 6#6<УЛd{2 ІсхЭŽV2 ІсЭyc!"'І!+Іs{ўв`ek&) І еы*'Іы{–#zžк4eе!+І^k&) І б~Л# ~КТWe!+І^{*,ІНЪ4e:*ІНЪWe!+І^k&) І е^#Vы"'Іыб!*Іs:&ІЭBI2)Іб!+ІsУэd:*І2,І*'І}ДТte!їcЭ'ƒ*Іы*І{•zœвХeы"/Іые:*І‡ѕ:&І_е*/Іыkb~#foбЭŽVСЭJЂцс]TЗЪОeN#F ц№і*)ІЕУxeс^#VУ’dб!ыУ‚dёѕЭЁYЭu]ёЭ"UЩЭu]Џ2?І*йЉ"еЉ*ХЉы!шџы*УЉ{•zœкh!е^#Vы"7Іы!~ц€Ъh!"1Іы"=Іы!~еўVТЁgеЭC";І ~2@Іб! е~2AІЭC"3ІЭCыы"5Іы!"9І:@ІѕЭёC*AІы*3ІыЗҘf:@ІНЪ€fхЭёCсЗҘfх*7І"9І:@ІсНЪГfЭМC"1ІУГf}*5ІыЭёCЗТГf*;І"9І"=І*7І";І*9ІыСHс{ВЪіfyцРўРТаf!67Ужf!6=! :AІw! еq*;ІЭtJсЭkH>2?ІУЁgХ 6T*;І";І 6U:AІСХ*;І2AІЙЪcgyц?ўТcg:AІOцЪcgХх*3Іыyц>і€ЭёCсСЗЪFg 6JУcgy!AІqЭЮpі@oх:AІц>і€O*7І=Э$JСс}eхѕ:AІ_ёЛЪšg}цЪšg{ц?ўТšg}ц>і€OХ}ЭЮpі@O*;І~#fo=Э$JСёЭМC"1Ісх ~схўWТУgх!ЭyC!ЭyCсЭyCУh*еЉњџ ы*йЉ{•zœкh*=ІMD!еŸЉЭžO*7І ы*1Іы~ГO#~ВGс~Бw#~Аw+УЦgс##^#Vы"7ІыУfбУѓe:?ІЩЏ2BІ!"GІ*ХЉы!шџы*УЉ{•zœкi!~#fo"CІе]T####~ц€Ъiе*GІ"GІ}ДЪhх*CІысх ~#foЭNOыС! s#r! ~#foУVhб!~*GІMDўaЪ™hў`ЪБhУi! 6#6!q#pы"GІыУi!Х~#fo"EІ С~#ЖТi*EІyН xМЪчh! 6ў#6џ! N#FУШhх N#Fi`"GІ!6Vс 6W>2BІ!~#fo"CІУChбУ(h:BІЩ2IІЭЁY*УЉы*ХЉ{•zœаkbе^#Vы"JІы!~ц€ЪЄi!~еў\ЪXi!~ўaҘi! ~ЭdI*IІНҘi*JІх ~ц?_схЭSKСўҘi! ~ХўaТ”i! ~#foЭtJсЭtJс^#Vы"JІыУ9iб!ыУ&i remvst:Э^*УЉы*ХЉ{•zœа!~#fo"LІ!е^#Vы"NІы!~ц€ЪЉj!~2PІеўXТj! ~ЭdIG!ЭfЂы*LІы}Ѓo|Ђg}ДТj*NІыыЭtJУ›j:PІўXТNj*NІ ~ЭdIG!ЭfЂ}/O|/G*LІ}Ёo| g"LІУ›jў\Тvj*NІ ~ЭdIG!ЭfЂы*LІы{ЕozДg"LІУ›jўcТ›j*NІ ~ЭdIG!ЭfЂы*LІы{ЕozДg"LІс##^#Vы"NІыУнiб!ыУНiЭusage: fpc [-istu] [-c outputfile] [-d func[,func...]] inputfile(s) ? file %s line %d column %d %s х*ЊAх*ЈAх*ІA)к@ N#FХ›BХY`Х!ЭLVСССССС!Э&VЩrcan't open: %s *ЄA}ДТYC*ІAы*ЂA{•zœкC>џЩыBХ*ІA)к@ N#FХ!ЭYСС"ЄA}ДТYC*ІA)к@ N#FХэBХY`Х!ЭLVССС!Э&V*ЄAЭ{]}ўџР*ЄAЭ]!"ЄA*ІA#"ІAУ§Bbug ungtch*зAѕ}ж|ок—C!yCЭЛB*зA#"зAдA ёwЩunexpected EOF*зA}ДЪзC*зA+"зAеA ~ѕ<ТгC!ЅCЭЛBёУјCЭ§Bў ЪзC*ЊA#"ЊAў ТјC*ЈA#"ЈA!"ЊAѕўџТDЭ„CёЩtab expectedЭДCў Ш!DЭЛBЩlabel expectedЭДCўLШ!DЭЛBЩpool overflow*ЯAхЭДC2йAў ЪDў ЪDЉ?*ЯA}‘|˜кqD!9DЭЛBУKD*ЯA:йAw#"ЯAУKDЭ„C*ЯA6#"ЯAсЩххЭДCсў ЪЂDў ЪЂDw#УŽDхЭ„CЏсw#сЩ!хЭДCсў0кЭDў:вЭD)MD)) ж0O УЏDхЭ„CсЩЭЗhЭДCў Шў(ТжDЭДCў)ЪжDУсD"кA)*ЭA{•zœв)Eы"мA*кAые*мAыы~#foбЭWm}ДТE*мAыыЩ*мAы!ыУђD!Щin <%s> "%s" calls "%s" : %s >2и@ехЌAХ*ІA)к@ N#FХ-EХ!Э\VСССССЩin <%s> "%s" calls "%s" : %d%s >2и@еХхЌAХ*ІA)к@ N#FХsEХ!Э\VССССССЩpool overflowin <%s> "%s" was multiple defined too many functions!i "ЯA!)"ЭAЭДCўџШўXЪFўYТGЭGDхЭD> 2пAЭДCў Ъ8F2пAЭDЭДC2оAЭгD!"рA*ЯA"тAЭДCў{Ъ‹FўPТ…FЉ?*ЯA}‘|˜кmF!НEЭЛBЭЌDЭDЭДC*ЯAw#"ЯA*рA#"рAЭгDУMFсхЭьDб:оAO}ДЪМF>2и@е*ІA)к@ N#FХЫEХ!Э\VСССУGХi *ЭAе}‘|˜кбF!яEЭЛB*ЭAбs#r*ЭA##Сq*ЭA###:пAw*ЭA####ы*рAыs#r*ЭA ы*тAыs#r*ЭA "ЭAЭгDУFillegal typeўIЪ@GўNЪ@GўRЪ@GўBЪDGўCЪDGУHG!Щ!Щ!GЭЛBЩўDЪ[Go{ўDТ^G>Щ:ж@ЗЪoG}ЛТmG>ЩЏЩ}2фA{Э$Gх*фA}Э$Gыс{Н zМТG>ЩЏЩconflicting return typeconflicting list functionconflicting number of argumentsbug parameterth argument conflictы"чAы"хA#~#fo"щAХх###~!9^ЭOGсхЗТ2H~#foGЭLEб!~ўDТBH>FУGH!~СЙЪXHы~#foЇGЭLEЩyўFР!~еўDЪ‰H!ы*чAы~Л# ~КЪ‰H*щAыы~#foСGЭLE*хA###"хAб!~#fo"ыA!^#V*чAЭЦjMD!y•xœиХх*хA~хўPЪЧH!сGЭЛB*ыA~_"ыAс"хA#~ЭOGСХЗТыH*щA~#foяGЭ”E*хA###"хA*ыA#"ыAс#СУАH?+-*/%&|^rl=!<>[]ms:;,'.RINC_~n@aM#"GTAPundefinedin <%s> "%s" ..sorry, can't check indirect call illegal operator!Љ?"бAЭДCo}ўXЪТIўYЪТIўpЪJўcЪ&JУРJ!эAЭD!эAЭьDы{ВТьI*бA6U:з@ЗТјISI!эAЭLEУјI*бA6X*бA#s#r*бA###"бAУ K*бA+++"бA*бA6PЭДC*бA#w*бA###"бAУ KЭДC2Bў Т9J> 2BУ Э„CУКKЭДCў ЪЌKЭDЭ IУКK> Э„CУКKЭ„CЭ IЭгDУFKЭгDУ"KхеKBх!9q#pсЭОn~ЗЪ_L~ў,Ъ_L~ў*ТLYPЗЪђKУщK{‘z˜кLеЭнnб#ХеЭЦKбСЗЪL>УjLУђKЏУjL~ў?Т&L ЗТFLЏУjL~!9q#pЭ|mѕ!9N#F Э|mсМЪFLЏУjL!9N#F!9q#pЭуn#ЭОnУжK ЗТiL>УjLЏССЩ~ЗШ~#ў,ШУmL~ЗЪ“LехЭЦKсбЗЪ‹L>ЩеЭmLбУxLЏЩ.TCOwcan't create: %s compressing... complete šLХы!BЭ8m•LЭCmх!ЭYСС"IBх}ДТ MBХœLХY`Х!ЭLVССС!Э&VЎLХY`Х!ЭLVССЭДCўџЪЗMѕЭЗhёўXЪ3MўYТБM*IB]TхЭЈ^!(BЭDбеЭiY(B*гAЭxLЗЪvMЭДCѕўFТiM*IBы>DЭЈ^УpM*IBыЭЈ^ёў ТTMЭДCў{ЪˆM*IBыЭЈ^УvMЭДCў}ТˆMб>{еЭЈ^б> еЭЈ^б>}еЭЈ^б> ЭЈ^ЭгDУMЭгDУMсЭ]ОLХY`Х!ЭLVСС!Э&VЩ* 6ЩMSX C function parameter checker ver 1.10s missing outputfile missing func list bad option: -%c too many files .TCOtoo many files pass 1 pass 2 complete "KBы"MBмMХY`Х!ЭLVССЏ2ж@2з@2й@2е@2UB!N"гA*MB##"MB*KB+"KB}ДЪИO*MBхN#F сў-ТИON#F ЗЪ­N ХЭ|mСХўCЪOўDЪ?OўIЪyOўSЪOўTЪ‰OўUЪ‘OУ™O>2UB*KBх}ж|ов(O NХY`Х!ЭLVСС!Э&Vс+"KB*MB##"MB~#fo"SBУГO*KBх}ж|овbONХY`Х!ЭLVСС!Э&Vс+"KB*MB##"MB~#fo"гAУГO>2е@УГO>2й@УГO>2ж@УГO>2з@УГO OХ0NХY`Х!ЭLVССС!Э&VСУгN*KB}ДТжOVBХY`Х!ЭLVСС!Э&V*KB{•zœвSPkb)ы"OBыеы*MBы~#foеЭ&m Э“j"QB}Є<Т PANХY`Х!ЭLVСС!Э&V*OB"OB)бы"MBы^#V*QBЭ8mQNЭCmх*OBыы)ы*MBыбs#rбУйOк@Хх*MBысdЭrcС"ЂA}Є<ТƒPVNХY`Х!ЭLVСС!Э&VЏ2и@!"ЈA!"ЊA!"зA!"ІA!"ЄA:UBЗЪВP*SBЭЮLfNХY`Х!ЭLVССЭF!"ЈA!"ЊA!"зA!"ІA!"ЄAnNХY`Х!ЭLVССЭ"K:й@ЗТQ:и@ЗЪQЭвMvNХY`Х!ЭLVССЩconw*:|out<*:|bad temporary drive rcan't open: can't make: "Q!HVЭ№mх}ДТ–SЭ…m!'Q"Q"Q!" Q!€Э“j""Qх!€Э“jыЏы"%Qые* Q#" Q+)ы*"Qыбs#r*QЭVыы"QыЗЪˆRў|ЪˆRў;ЪˆRў<ТъQы"Q><*%Qw#"QУ.Rў>ТRы"Qыў>ТRы"Q>a2+Q>>*%Qw#>>w#"QУ.R* Q#" Q+)ы*"Qыы*%Qыs#rых*QыыЭVыс"Qы"Qыw#ў"ТRRy/OУeRў\ТeRЗЪeRы"Qыw#ЗЪyR Т>Rў ЪyRў Т>RЏw#"%Q*QЭŠTУИQ* Q" Q)б6#6е*Qы*%QЭ8mыkb"Qў|Т/Sы"Qыў|ТЫRы"Qы>a2+Q*Q#"QеЭ|m2$Qбў@ЪљRеж@Эjeб<ЪљRы"Q!-Q"Q:$Qw25QУS!/Q"Q>|25QЏ26Q*Q~ў Ъ/S~ў Ъ/SY`!9QЭiY:$QY`ЭЈ^!Э&VNQХ*Qх!ЭYСС}ДТ\SY`!PQЭiYY`*QЭiY!Э&V+QХ*Qх!ЭYСС}ДТ‰SY`!]QЭiYY`*QЭiY!Э&Vб* QЭ€N!Э&VЭŠmЭМ\*Q"Q~ы2$QсMDl&}=ДЪФS}жДЪ*T}жДЪpTУ}TХ*QыЗЪшS!~ў:ТмSў|ТшS*QЭ*cС Р:$QЗШ*Q#ѕЏ2€ёў|ТTх!5QЭ*c5Q*QЭЩb!4QЭ™Uс#ЭV4VЭнUЭV"QУ}Tе'Q*Q}Й |ИЪAT*Q+Э™U'Q*Qб}Й |ИЪ}T:$Qў|ЪdT*Q++Э™UУ}Tы"Qы>|У}T!|Tх*%ѓN#FХЩЩ*QЭ™U!4VЭUЩ]T~ў"Р#~ЗЪђT~ў"ЪІTў\ЪОTУыT ТАT>УБTЏO ЪКT~#У“T#~ЗЪ“TўNЪлTўnЪлTўRЪуTўrЪуTУ“T> #У“T> #У“T~#У“TЏЩCan't exec: "ѕT!Њџ9љ*ѕT"ѕTх!9ысЭ eЗТ.U!9ы>ЭYn<ТCUY`!їTЭiY*ѕTY`ЭiYУmU\!ЭuUlЭuU0n!&9ЭRn!mUх!(9х!9Щ!V9љЩ"sUkbхЭGnсх#  ЭGn*sUЭVбݘeЩы!€n& |ўвЕU:€ЗЪЕU> w#|ўвЦUwЗЪЦU#УЕU}Ц2€Щ COM"ЭU!кџ9љ*ЭU ы"ЯUыбUх!9ЭRn!9ысݘeх*ЯUы!9ЭБdсы!&9љыЩ~ў Ъ"Vў Р#УV]zіW!HVЭnЩЭуnMDЈ^!9Э~VЩM`Ј^!9Э~VЩ"jV!іџ9љi`"nVы"lV*jV##х++~#fo"qVс"|V*qV~#"qVЗЪдXў%ТОX!9"sVх!"zVЏ2vV2wV*qV~ў-ТкV#"qV>2wV~ѕў0ТцV>0УшV> 2uVёў0кџVў:вџV!qVЭ=YУW!"xVх*qV~#"qV2pVў.Т/W!qVЭ=Y"zV>2vV*qV~#"qV2pVЭ|mбсўXЪYWўOЪ^WўDЪcWўUЪŠWўSЪАWўCЪаWЗЪЁXУЅXУŒWУŒW*|V#~ЗђŠW*|V~/O#~/G+q#p>-*sVw#"sVы"xV *|V^#V#"|V!sVЭлXo&ы*xVы{•ozœg"xVУчWе*|VN#F#"|Vi`"sVЭ&mб{•ozœg"xVУїWх*|V##"|V++~сw#"sVы+"xVЏ*sVw!9"sVЏ2vV:wVЗТ)X*xV+"xV#ы!Эsnв)X! Xх*lVх*nVы:uVЩ<ТўW>џУеX*sV~ЗЪpX:vVЗЪEX*zVы!ЭsnвfX!VXх*lVх*nVы*sV~Щ<Т_X>џУеX*zV+"zV*sV#"sVУ)X:wVЗЪЂV*xV+"xV#ы!ЭsnвЂV!˜Xх*lVх*nVы> Щ<ТwX>џУеXЏУеX!ЕXх*lVх*nVы:pVЩ<ТЂV>џУеX!ЫXх*lVх*nVыЩ<ТЂV>џУеXЏСССССЩхеХеЭИnбых!9qсЭОn}‘|˜к YYХЭŠnыСеЭзnбЭлXУ YЏѕ!9^еЭзnбЭŠn{ѕЭбn^#Vr+sёў в4YЦ0У6YЦ7ё<СССЩы!хkbN#F ж0сў а)MD)) O ехы^#Vr+sсбУAY"gY*gY~#"gYЗЪ„YеЭЈ^б<ТlY>џЩЏЩ"†YЭsnкІYы!ЭsnвЊY!ЩЭуn"ˆY*†Yх}=ДТПY>RУЦYЭзn~Э|m2ŠYбе{=ВЪфYЭзn#~Э|mўBТфY!УчY!}2‹Yб{жВТљYЭзnУќY!"ŒYA`хЙ`{‘z˜вZ!~ЗЪZ! ыУZЙ`с{‘z˜к-Z!Щхе*ˆYЭ\бсЗЪyZ<ЪOZўТSZ:ŠYўRТSZ!Щ:ŠYўRТaZ!УdZ!}*‹YЕ!w!6#6ыЩеЭСhыС! s#r{ВТZ!Щ! ы*ŒYыs#r:ŠYўRЪАZўAЪяZўWЪяZУи[Х*ˆYЭaыС! s#r{Ђ<ТиZ! ~#foЭi!Щ>*‹YЕ! w! 6#6Уч[i`ўAТp["ŽYх*ˆYЭaы*ŽY s#rс{Ђ<Ъp[*‹Y,-Ъ4[*ŽY ~#foЭІaУ›[*ŽYх#6сх####6#6*ŽYЭ{]}Є<ТF[С! ~/_#~/W! ~#foЭІaУ›["ŽYх*ˆYЭН`ы*ŽY s#rс{Ђ<Т›[ ~#foЭi!Щ>*‹YЕ*ŽYMD! w! ы*ŒYыs#r! хi`"ŽYсХN#FХ*ŽYMD! Сq#pСУч[! ~#foЭi!Щi`ЩCONLSTPRNAUXNUL"ъ[!кџ9љ*ъ[х!9ысЭ eЗЪ\>џУ…\!9ы!ь[Э\ЗЪ3\!У„\!9ы!№[Э\ЗТQ\!9ы!є[Э\ЗЪW\!У„\!9ы!ј[Э\ЗЪl\!У„\!9ы!ќ[Э\ЗЪ\!У„\!}!&9љЩKBыЗЪЏ\ы"‹\ ХЭ|m*‹\ы!џџСОЪ\ЏЩ ў ЪЗ\ЏЩ>ЩA`Й`{‘z˜вр\!е~ЗЪз\ыЭ]б! ыУП\!"К\}ж|оахЭўf}ДЪќ\*К\Эvaс#"К\Уц\ы{ВТ]>џЩ!]qеЗТo]!~цеЗЪ@]!~цеЗТ7]>Эо^сЭФ_O!]qyсх<ТU] ~#foЭvaУc] ~#foЭva2]с ~#foЭiс#6!]NyЩ"y]х#~цсЗЪŒ]Э+^Щ*y]хЭ+^б}ДТœ]УŒ]}жДЪЋ]}ж ДЪГ]Щ}ЭШ]!џџЩkbеЭ+^б}ж ДШ}ЭШ]! ЩO!Ч]q!~цТк]>џЩЗЪь]ўЪ^ўЪ^У(^!N#F!y–#xžв^:Ч]!KB^#Vr+s! ^#Vr+sЏЩ!q#pЏЩ>џЩMD ЗЪ?^ўЪv^ўЪv^УЁ^! ~#ЖТX^i`ХЭW_С<ТX^!џџЩ! ~Цџw#~Юџw! ^#Vr+so&Щ! ^#V{ВЪ^! 6#6k&Щ =Ҙ^ЭIhЩ>ЭYno&Щ!џџЩ2Ѕ^ы"І^ыў ТЫ^!~цТЫ^> Эо^<ТЫ^>џЩ*І^ы:Ѕ^Эо^<Тм^>џЩЏЩOЗЪћ^ўЪ5_ўЪ>_ўЪG_ўЪS_УP_!~#ЖТ_kbХеЭФ_бС<Т_>џЩ!е~Цџw#~Юџwб!^#Vr+syУS_Y>ЭYnУS_Y>ЭYnУS_Y>ЭYnУS_>џЩЏЩы!~цТl_!~цТo_>џЩ! N#FХ!KB^#V! ~#foхi`"U_сСЭMbы*U_MD! s#r{ВТА_! ~іw>џЩ! YPN#F!q#pЏЩыы"Т_ы!~цТо_!~цТс_>џЩ! N#F!y–O#xžGХ!KB^#V! ~#foСХЭŒbСyН xМЪ`*Т_#~іw>џЩ*Т_ы!N#F!q#p! N#F!q#pЏЩ"Й`ЭŸf}Є<ТЭ`!џџЩхЭўf]T"Л`*Й`Э eсы*Л`ыЗТѓ`ех>ЭYnсб<Тњ`Эфf!џџЩх!%6!6#6сЩ" aњ,a!Эsnк,aеЭŸfС}Є<Т0a!џџЩХхЭўf]T"a* aЭ eсы*aыСЗТZaХех>ЭYnсбС<ТaaЭфf!џџЩхyџЩы>ЭYn*taѕЭфfё<Тœa!џџУŸa!}Щy2ЃaўвПaеЭўfыы"Єaыс{ВТТa>џЩ"Ёaе:ЃaЗТтa!#6#6!!6#6УbўТb!N#F!!q#p!N#F!#q#p*Ёa"Ёa$%ђb!#^#Vr+sС!! ^#Vхых*ЁaMDс ысr+s{‘z˜вGb*ЄaMD!# ^#Vr+sЏЩы"IbыХЭўfС}ДЪkbХ]T% ~цСЗТob!џџЩХы"Kb*Ibы>ЭYnС*Kbы>'ЭYnЩы"ˆbыХЭўfС}ДЪЊbХ]T% ~цСЗТЎb!џџЩХы"Šb*ˆbы>ЭYnС*Šbы>&ЭYnЩ"Чb!Дџ9љ*Чb"Чb!9еы*ЧbЭ eсЗТіbх!(9ысЭ eЗЪћb>џУ"c !&9ы!9ЭRn!9ы>ЭYn<Тc!џџУ!c!}!L9љЩ"(c!кџ9љ*(cх!9ысЭ e<ТHc>џУ`c!9ы>ЭYn<Т\c!џџУ_c!}!&9љЩ"fc!Єџ9љi`"jc*fc"fcы"hc!"lc*fc+"fc$%њ—d*hc##"hc++^#V!!9ехыбЭ eСўўТmdЭщn`"pc*lc"nc!9ы>ЭYn!!9ы>ЭYn<ЪNd*jcы*lcЭsnкђc!џџУšdх!#9~!9w!I9ы!9ЭБdы!I9{•ozœg#Э“jыс{Ђ<Т&d!џџУšdх!I9ехыбЭ8mЭщndбs#r#ЭФnbс#"lc>ЭYnУлcЂdХ*lcы*ncы}“_|šW*pcЭкjСУc*jcы*lcЭsnк€d!џџУšdхЭщnbq#p#ЭФnbс#"lcУc*lcы!\9љыЩхы^#Vс~#foЭWmЩ~ЗЪПd~Ц@>:х# Ъеd~ў Ъеd #УУd!Аdqс :АdO Ъe~ў ЪeѕyўТњd>.ё y2Аd#УрdЏыЩхkb&хЭGnсх#  ЭGnбсеݘeбхеЭjeбс<Т7e>џЩх! ЪNe~#ў?ЪNeУ>eс~ЗЪZe!џџУheЪee!ўџУhe!}ЩЗТpeЏЩ=ўкye>џЩѕ>ЭYnёGЭn}цЪe!У“e!џџ}Щ"•e~еЭ|mж@2—eСЗЪФeў вФe*•eх#~сў:ТФe:—e##"•e*•e~ХхЭUfсСХЗЪяeх! Х ЭGnС! ысЭf~Сў.Рх! Х ЭGnС! ыс#ЭfЩы"fыхХ~ЭUfСсЗШх ЪIf Х~Э|m*fwСў*ТIf ЪIf >?w#"fУ9f*f#"fс#Уfў=Ъ‘fў;Ъ‘fў,Ъ‘fў+Ъ‘fў/Ъ‘fў"Ъ‘fў[Ъ‘fў]Ъ‘fў:Ъ‘fў.Ъ‘fўЪ‘fўџТ“fЏЩў!вšfЏЩ>Щ{жzовоfkb)g ~#ЖТкf!&ы"fыеЭСhх*fыы)g бs#rс{ВЪоfЩУЂf!џџЩ"тfЭўf}ДШЭi*тf)g 6#6Щ$%њ gЭsnкg!Щ)g ~#foЩ*Gh}ДТ”h>џ2BgBg> ЭYn >ЭYn!Cgn&"Gh*GhDg "Eh*Eh6 #"Eh*Eh6 *Gh##"Gh!Dg"Eh*Eh#"Eh+~*Gh+"GhўТГh!"Gh!џџЩo&Щ> ЭYnЩ###Эn#MDi`"Пh*‹j"Нh}ДТѓh!j"Нhх!j"‹j"j!"jс^#V!~‘#~˜кGi!~Й# ~ИТikbN#F*Нhq#pУ)ыэj8хэBс8ЇэBы= ьЩDM!>)ы)ы0 = іЩУЪnУЪnу^#V#уы9s#rыЩ! У№n!У№n!У№n!У№nс^#V#хы9^#VыЩMSX-C ver 1.1 CRUNјBK>)ыэj8хэBс8ЇэBы= ьЩDM!>)ы)ы0 = іЩУЪnУЪnу^#V#уы9s#rыЩ! У№n!У№n!У№n!У№nс^#V#хы9^#VыЩMSX-C ver џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџREM ======== [GENLIB] ========= rem --- generating CRUN.LIB --- mx -lo%1 crun >run01.bat echo genlib01 %1 >>run01.bat REM ======== [RUN01] ========== run01 џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџdel run02.bat del %1:*.rel rem --- generating LIB1.LIB --- cf lib1 mx -lo%1 lib1 >run03.bat echo genlib03 %1 >>run03.bat REM ======== [RUN03] ========== run03 џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџdel run03.bat del %1:*.rel rem --- generating LIB2.LIB --- cf lib2 mx -lo%1 lib2 >run04.bat echo genlib04 %1 >>run04.bat REM ======== [RUN04] ========== run04 џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџdel run04.bat del %1:*.rel rem --- generating LIB3.LIB --- cf lib3 mx -lo%1 lib3 >run05.bat echo genlib05 %1 >>run05.bat REM ======== [RUN05] ========== run05 џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџdel run05.bat del %1:*.rel rem --- generating LIBK.LIB --- cf libk mx -lo%1 libk >run06.bat echo genlib06 %1 >>run06.bat REM ======== [RUN06] ========== run06 џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџdel run06.bat del %1:*.rel rem --- generating CLIB.LIB --- lib80 %1:clib=%1:libk.lib,%1:lib3.lib,%1:lib2.lib,%1:lib1.lib,%1:lib0.lib/e ren %1:clib.rel clib.lib rem --- generating CK.REL --- m80 %1:=ck/z rem --- generating CEND.REL --- m80 %1:=cend/z rem --- generating LIB.TCO --- fpc -c lib -d bdos*,bios* lib0 lib1 lib2 lib3 libk REM == [ END OF GENLIB ]== џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/* */ /* MSX-C compiler sample */ /* program "head.c" */ #pragma nonrec #include #define NUL '\0' #define TABS 8 #define TAB (char)0x09 #define space (char)0x20 #define SIZBUF (unsigned)1024 /*size of line buffer*/ /*usage*/ char USAGE[] = "Usage: head [/n] [/l] \n"; /*error messages*/ char e_mes1[] = "File not found\n"; char e_mes2[] = "Invalid character\n"; char e_mes3[] = "Missing parameter\n"; char e_mes4[] = " is not digit\n"; char e_mes5[] = "Unknown switch\n"; char e_mes6[] = "Excessive argument\n"; char e_mes7[] = "Not enough memory for buffer\n"; BOOL Nsw; /*switch flag*/ VOID puthlp() { /*--------------------------*/ printf("\ HEAD\n\ ============================\n\ Usage: head[/h][/l][/n] []\n\ \n\ /h ... help\n\ /l ... number of lines\n\ /n ... suppress filenames\n\ and line numbers\n\ \n\ HEAD prints the first 10\n\ (or specified number of)\n\ lines of a specified file.\n\ If no file is specified,\n\ standard input is printed.\n\ By default, file is printed\n\ with filename and line\n\ numbers.\n\ \n\ "); exit(0); } VOID putusage() { fputs(USAGE, stderr); } int atoix(p) char **p; { int ans; for (ans = 0; ('0' <= **p) && ('9' >= **p); (*p)++) ans = ans *10+ (int)(**p - '0'); return(ans); } int shifarg(argc, argv, num) /*shift argument table*/ int argc; char **argv; int num; { for (argc--; num < argc; num++) argv[num] = argv[num+1]; return(argc); } int parsesw(argc, argv, ptr) int argc; char **argv; unsigned *ptr; {/*start of parsesw()*/ int i; char *cp; for(i = 1; i < argc; ){ if (*argv[i] == '/') { cp = argv[i] + 2; switch(toupper(*(argv[i] + 1))) { case 'H': puthlp(); case 'E': case 'L': if (!(*cp)) fputs(e_mes3, stderr); *ptr = (unsigned)atoix(&cp); if (*cp != NUL){ fprintf(stderr, "%c%s", *cp,e_mes4); putusage(); exit(1); } argc = shifarg(argc, argv, i);/*shift argument table*/ break; case 'N': if (*cp != NUL){ fputs(e_mes2, stderr); putusage(); exit(1); } Nsw = TRUE; argc = shifarg(argc, argv, i); break; default: fputs(e_mes6, stderr); putusage(); exit(1); } } else i++; } return(argc); }/*end of parsesw()*/ VOID ts(buf) char *buf; { unsigned pos; for (pos = 0; *buf; pos++, buf++) { if (*buf == TAB) { pos = TABS -pos % TABS; while (pos--) putchar(space); } else putchar(*buf); } return; } VOID typehead(fp, lines) FILE *fp; unsigned lines; {/*start of typehead module*/ char buf[SIZBUF]; unsigned counter; for(counter = 1; (counter <= lines) && fgets(buf, SIZBUF-1, fp); counter++){ if (!Nsw) { printf("%5u: ", counter); /*print line number*/ ts(buf); /*expand tabs to blanks*/ } else puts(buf); } }/*end of typehead module*/ main(argc, argv) int argc; char *argv[]; {/*start of main */ FILE *fp; int i; unsigned lines; Nsw = FALSE; lines = 10; argc = parsesw(argc, argv, &lines); if (argc <= 1) typehead(stdin, lines); else{ if (argc > 2) { fputs(e_mes6, stderr); putusage(); exit(1); } if ((fp = fopen(argv[1], "r")) == NULL) fputs(e_mes1, stderr); /*file not found*/ else { if (!(Nsw)) printf(" %s:\n", argv[1]); /*print file name*/ typehead(fp, lines); /*type out specified*/ fclose(fp); } } } /* end of main */ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ#include main() { printf("HELLO WORLD!\n"); puts("Push a key."); getch(); }џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/* (C) Copyright by ASCII Corporation, 1989 All rights Reserved. File: io.h Low Level File Input/Output Functions */ #ifndef HEADERtype #include #endif /* HEADERtype */ extern FD open(), creat(); extern STATUS close(); extern int read(), write(); extern STATUS rename(), unlink(); extern TINY eof(); extern BOOL isatty(); /* open file flags */ #define O_RDONLY (0) #define O_WRONLY (1) #define O_RDWR (2) /* Standard File Handles */ #define STDIN (FD)0 /* Standard input channel */ #define STDOUT (FD)1 /* Standard output channel */ #define STDERR (FD)2 /* Standard error channel */ #define STDAUX (FD)3 /* Auxilliary I/O channel */ #define STDPRN (FD)4 /* Standard list channel */ #define STDLST (FD)4 /* Standard list channel */ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ*+љ"Sџ"Т "Ъ ј"Р "Ш Џgo"Q"`2я 2!2!2X2Z2]2^2c2_2\2W!б*"Ф "М "Ц "О "=";!"р "о "ф "т 2Ў 2Œ !џџ"м Уњ?No Start Address?Loading Error?Nothing Loaded?Out of memory?Illegal Polish Exp:!ЗТ‡!‹Уу!ЙУу!ЊЏ2!Уѓ!šУѓ!СЭаЏ2€*Sљ!ь ~ЗТ 4!†Эа>2Ќ Џ2YЭљ:cц2cЭњк№ў ЪЩў,ЪЩў/Т№ЭкХўMТE€ЩўG@ШўRЪўSШўUШўXШўYШўEТ{ ЩЭO Э:ХУ™&УўOТ†2WЩжHТO2WGЩ:cА2cЭкў:Т'е>` Ъ№Э‡ыAxЗЪ№ўв№ЭкТЙЭкбУ'"UЭѕ Эё_ЭЏ2€:f ЗФžЏ2€UХ!c~цўОwЪЗњ:f ЗЪа ~ц§ОwТ:f ЗШ2YУІ2Y*`|ЕШЭык#Ъ#yўШЗТ#ЭjкC~ц@Т#УI"Ъ У#ЭЌ*`|ЕШУ#*U~цў Т!:YЗ:cЪ~ў€Эб Gц@Тxц ТkУіў€дб Уo MSX.L-80 1.00 01-Apr-85 (c) 1981,1985 Microsoft ?Command Error~ЗШЭP#Уа~ц#ў Ъкў Ъкў`кєў{вєж ў Р+ЩеХ!€~ЗGЪ #~ў ТУex+#Ъ<~У:Ќ ЗЪ/Э”>*ЭP dЭ> ЭP:e!fх…o>Œg6 сСбЩж7ЪŒжєЪŒж Т№Экў Ъyў:+Тy#ЭкўPТ№2\Џ2f хg !‹  ЭісЩѕЭкў:Т№Э\ёхG‡OТ:Ў ЗТЭхыхЭи"р "ф с"о "т *М х*Ф "М ";Эб*Ф ыЭ*Ц ЗЭBK*Ф ы*Ц хеЭ"=Џ2­ G<2Ў бсѕУбеЭсzГШ6#zГТЩѕк:Ў ЗТOЭхёѕк4еЭсЭѕЭ… Ъ{бЭиыЭвŽх!ЭЭсхХyЭ СыуЭѕеЭyBKбсхеѕЭёOбсЭЭѕсёиѕх!; s#rб!о s#rёи!т s#rсЩеыЭўЭ… ѕдСёсуѕхёкЌ!т s#rбсеѕЭѕы!; ёѕкСs#rсёхвдЭсыyХЭ СЭёисЩ!о ~#foЩ!М УлеЭсЭѕЭыбЕЩы!Ф ЭлыЩеЭиЭѕЭЭсбЩ}“_|šWЩ>2­ *о ы*р Эк<*М ы*Ш :Ў ЗЪ<Э… вP*М ы*Ш ЭW{_*М ыы#"Ц "О "=Щ:WGыыЭкOж0к—ў кxжк—ы)))ўв–ЪŒўв–)…o>ŒgУdыyў Ш+Щ%Overlaying areaДЙDataProgramЭЧУ”х!Эа!А ~#foЭа!ЊЭасЩхУЫхХЭиЭ… вхЭўыуЭ… сыЪЭ… к&с}<Ъ =ЙФСх yўТъСсЩхy7УыуХyMЙх7Ъ>,Ъ>Эи#ыЭ… ысСбхк!MЭсУі> ѕХехц_ЭсбСёЩ!h >?ЭP~#ЭPў!кyТk!‰:!ЗЪ†!;Уу Not Found> ЭP> УP>€2К цЭg Э№Э<Ъa>џ28Щхе:К Зќи_<2К !ц~бсЩХцЭg ЭСЗТЭЏЩ! Џw#Тї! wЩЭO |Еы!yЪѓыхЭ:х!(ЭаЭ”*QDMсХУ™&[Begin execution]:ZЗЪъ:XЗЪУ*Т ы*Ъ ыЭ… ЪУ~црў`~ТЈю@wцх+++ўкo>GOФ ~+Тt>‘ЪŠы6 #=Тƒб*Т Эе!У ЭЎ Џ2XЭа *Т бЭы~Oц_Эы+++yЗђМ++:XЗТKЭ”:cц2cЭа *Q>[ЭPЭ"ЭNЭўх!C Э кќЪќЭ\*о ыs#r!I Э к Ъ Э\!я ~#ЗТ != Э к= Ъ= Э\*Ш ыЭ… в= б*Э… к= бs#rесхЭ"ЭNЏ2А *Р ы*Ш Э… Ъ цўЪ… жХ2Г еЭMЭ\ы:Г ЗТz x/Gy/O~w#~ˆwбУM еЭMс"Б zцў вб _z!Ѓ ^#VыщЛ т т ћ   $ 2 = ] m `iЗђХ ^+Vых!А 4*Б ыУM !А 4У !А 5њ суЩѕPYЭ\ёЭи Т ыsўТЪ #rУЪ Эи lЏgУХ Эи Уџ Эи Э УХ Эи Э #УХ |/g}/oЩЭи ыЭи ЭыУХ Эи ыЭи УХ Эи ыЭи DM!>=ЪХ )хХс)уСвK УK Эи ыЭи zГФ ыУХ Эи ыЭи zГЪi Э УХ BKџџ}‘o|˜gв„ ЩсЭў:Ў ЗЪЋ ыЭўЭ… вЋ ыЏ•|Ю’Эл >]ЭPЭ”:А ЗТк:Œ ЗФ$>У2*Q"У!o&е'Э шЭ dЭ  Э >0…GбУ /}“o|šgв xж0Т ЙТ  > xУPH>G~#Т' ЏЭjи~ц@Ш+^+VЩ$MEMRY$$PROG$COMNM*QAЗШ!Hw#Т] ЏЭjк{ ~ц@Ъ{ +^+Vы"QЩх! ЭасЭУЏ2A!Ё Уу?Start symbol - - undefinedg  ~ц#ТГ ЭžУ RELі7ѕ*`}Д2X:cц`Ъш ёиѕУљ Эj:Ў ЗФjЭ”ёк РЭp @Эp Э”`Эp €Эp Эp *Т Э} Ъ, >яІwЭk У Эі :`ЗЪ? Эл !K Эа*м Эо !b Уа Undefined Global(s) Bytes Free Џ2bЭP кі Э х~цO~цр>-Ъ‘ > ђ‘ >/ЭPѕ+^+V+~ЭP Т™ ёў/ЬPЭNу~ц ыЪМ !ŸЭаУП Э"ы~Зуђл ЭN+^+Vы><ЭPЭо >>ЭPЭN:bў?Юц2bЬ”с>ЖwУt :bЗШЏ2bУ”ХхЭk Э[ кM Т быхе~++цGцOХИк& H+ОкD Т; Т& СyИкE >СсбСХеУ СсбСХхУ сСЩ*Т Э[ иШУS Э} 7Ш~цТk ~црИШ~Зђr <<цЦ/_џЗЩы*Ъ ыУ… |’Р}“Щ!” 6S#6Y#6MЭ<$>ѕ*Т ы*Ъ ыЭ… Ъ№ ~цO~ц@Ън х+^+VыЭќ ы> Эh%+~Эh% ТУ > Эh%сё=Тм Э>ѕ~Зђф <<цЦ/Oџ УŸ ёўФЭ‘&У%|Э}ѕЭёѕЭё€GЩЭ[Уh%> Эh%> Уh%:WЗЪGЏ)Ю0ЭPХЏ) Т6Ц0ЭPТ3СЩ|ЭL}ѕЭUёЭ[УPцЦ0ў:иЦЩЭ”ёЩ!А ~#foЭаЭNЭиЭ"ЭNЭўЭ"ЭN><ЭPЭчЭо >>ЭPУ”RQUESTЭЌУІ*Т :Џ ЗЪћы*Ъ Э… ыЪћ~ц_~хц@Ъ№+++~ж#Т№Э*Ъ ыЭBKысхЭ"Ъ сУЖсЭы+++УЖЏ2!2­ 2Џ 2Е :Ў ЗЬЏgo"Ж "ц "ш 2X"ъ <2Д :Ў З*М ы*Ц Ф*О ы*Ш Э*=хсЭЭывQЭiУEТZЭПУEх!œ ~#foBKщеХх#:Д =ыЪ:ъ ЗТ”*М |’ЪŠв”Т}“в”ыЗЭсЭСp#бЩ:ы ЗТ”*О |’ЪВв”ТЗ}“в”ыЗЭУ”е:Г =Ты:­ ЗЪыхЭUыуЭЮхыŸц€w+p+qбС+p+qыџџ#ЭBЭiх++sсбЩ"э Э‡ў:7>ТыЭкў[?иж@иы2g д‡xў к" Хыеh Ъ5ЭкУ)сС> кFы6 #=ђ>ыx2f yў.ѕЬ‡уыеp xўкaЪnЭкУbёЪƒ!p ~ў Тƒ6R#6E#6LсyЗЩхЭкў[вЅў0кЅўAвЁў:вЅУŠў[ЪЁў]ЪЁў@ЪЁў\ЪЁў^ЪЁў_ЪЁOбЩыбеЭb:­ ЗТє:Д 2Г ЭBK|ЕЪA~_q#ЖVpЭ\ыТуУAыхЭU:Г =ЪЭ>€@€w+r+s+бц@хЬусЭ1:Д 2Г Эr+sУA:Д =Рх*Ж ысЩ>€ЭjкVх/o/g кЎсУA~і@w:]2^ЗЪsх+++~сў ЪsЏ2^ыq+pХ:^O!;Элхы>2Г Эы}|сбы!; s#rЭсыЭ… yд УA!дЭасЭУ>/ЭPЭ”УA~цW+++~ЭP+ТЪЩ%2nd COMMON Larger /*;ы"ц ы |2ъ ы*М ыЭ… дхЭсУA> Эj~і@wУAі7ѕЭU:­ З>РЪ8:Д =Ъ->€G:Г =Ъ7>@€ЦwёŸ<†w+ЭыуыеЭ1:Д 2Г Э:­ ЗЪd:Д =хЬусr+s+ысуыr+sУA:Iў5Ъи'ўAЪ‘ўBЪяўCЪўHЪKУд:JўЪЏўЪЏў вдѕЭU6Ч+ёwУAѕЭU:­ ЗЪС:Д =ЪУ>@і‡w+ёw++беЭ1:Д 2Г Э:­ ЗЪщ:Д =хЬусr+sУA!HIF5#wТїЏЭj~+мОхЭU6Ч+6€++бr+sУA*Kы:J2Г ЭfЭЭU:­ ЗЪ;:Г ЗТ=>@і‡w+6++r+sУA:!ЗТA>.2!2P*э х!JЭњЭžЭРў!кg2!ў+Т}2_ЭР!я w#ў!кЭР Т‚!я Э\ы"о "т :Ў ЗТж:ZЗТмЭРў!кЋ!я  w#ў!кЦЭР ТИ+Џw2!сЭњЭžУA!тУу!Уу?/D illegal with common runtime?No code can be loaded before program withcommon runtime not found, please create header file?End of file on common runtime header!aУуССУUЭ„zГСЪЃЏЭ„ы"QЭb!ц ^#V!т ЭЊ!;ЭЊyўкЉ:Ў ЗР*М ы*Ф Э… Тм*р "о Эўы*р Эк'*М хЭ*Ц ы*О ЭBK*Ц ыс"Ц Э… дмі"О "М ";Эў"ф "т ЩЭўыЭўЭ… к7ы*р ыЭе*Ц ы*О ЭсЭ… в]!Э*О Э*Ф ы*М ЭBK*р ы*о Э*Ц ы*Ф ыЭ*р "о *Ц ы*О ЭBK*Ц ы*Ф "Ц Эі"М "О ";У ~ƒw#~ŠwЩPYЭb>Э„BKЏЭjд~ц@Тњ:­ ЗТп~і@w+~_q+УчыЭU:Г =Ъь>€ЦCw+p+q+r+sУAх! ЭасЭУЭ”УA%Mult. Def. Global ~ц@Рх*`+"`сЩPYЭb>Э„BKХЏЭj~+кnN+Fц@ысТ‡:­ ЗТ›:B(ЗЪb:Г =Т›ыzГЪAЭяУAыЭОс|ЕЪA:­ ЗТ›ыr#sУA:­ ЗТ›|ЕЪAыЭ\ыУоыzГЪA#хЭU:Г =ЪЏ>€ЦBw+r+s+бr+sУAх*`#"`сЩх!7~#4ТзЭР6ј‡+wсЩЭШxG ТрЩЏ2Г ЭШкњЭм7ЩЭоЗЪЭYЏЩхЭоўѕк!ўЪHЭоЭYёѕўвHеЭо!HЗwТ74#6 _њGЭмw#У;бё!џўТT"7O<ЗсЩѕ2Г ЭмXЭмPёўЬŠ‡хЪwўвwюO!9 N#Fы Ÿ2[ысЩѕ:­ ЗЪšЏ2[ёусЩёЩAъC( r>-ГщЦМ’:­ ЗЬуеЭс"ш ы*=>џ2ы ы*О ыЭ… дУA*=ыУ>€Эjкд+^+VЭ\ы"?УAсХЭb:Г =њ#<2Д =ТA:­ ЗЪA*= уУAPYе7Эб*р ыЭвK"р !Э*="=*Ц Сх!"Ж }2ы <2Д УA:[ЗШУр*Т Хѕы*Ъ ы|ЊG}ЋАЪМ~цOёѕЎцИТЉHЉТЉхA+++ОТЈ+Т—ысёСЏЩс~ЗђА yЦ/Oџ УoСHѕЦOxхе_ЭыЭўбсёOАwў#Тх2Џ хЏ+w+w+w+ ТьбЗхђЏw+w+"Ъ ыбС7ЩЉПд))ј'):B(ЗТ$:­ ЗШЭ„:­ ЗЪrЏ2­ *М ы*Ц еыЭыDM*Ж "Ж ы*=х "=б*О еЭBKбс"Ц Эі"О Эў"р "ф *Р "И хЭЖ'б*Ш |’Т‡}“Ъ ы~‡ц_|Хх!^#Vыщ*И "Ш У (ЭMсухЭ\ы~#І+<Тlq#pЩЭMсухЭ\ы^q#Vp{ВТХЩЭMсухХс#~ц@е+^+VыуыТС{ВШr#sХЭ\ы^#V{ВТѓбr+sЩСУХЭMсухХс~Oі@wyц@+Ns+FrХеСбР{ВШУХсх~2f ЭMсух*И :f ціРw+r+s+p+q+"И Щсу~+V+^+F+N+ух*р Зњeыыц@Р DMЩх!ДЭа`iЭ"бЭN*=Э… вˆ*;ыЭыЭ"ЭPЭNсбех!хЭ"ЭNб*Р ЭыЭ"Э”Щ%%Bad fixup offset entry, will be ignored Value Loc Entry A Entry rel. >к>к>к>Хўв<2Z=Oехў!Ц к$!К ^#Vсўк0хыЭѕyўк=ёсѕёхвUyў?к\еЭѕЭ… б?к\ѕХЭ|Сёѕyў!М кi!Ф ёбвus#rУx^#VыбСЩхеЭžеЭкрЪрсЭѕ!к p#Т”*Ф х!Ь N#F#~#foх!д е^#Vы бСыуХх Сысуых!Ш ~#foыуЭ… бвHх!к {_{‡_~сЗЪHу!Ц е^q#Vpыуысух!О ыуы~s#_~rWсуыеЭсу}уыЗЪ&ѕ:Е ЗЪ$ё#ЬqхХсСхЭ… дмісб{_х!к 6ы)ыСХ`iС{ўк !к Џ†#ТYЗТš*в ы*Ш 6*Т Эы"Ъ *Ь ы*Ф "М бсЩѕХехЭžы*м ыЭ… в™"м сбСёЩХе!М yўкЌ!Ф ^#V ўкЛѕџ F#fhўкЦыЭсх!М е^#Vе ^#VуыЭсууїџТесбСЩyех!М ^#Vе^#VсѕЭёЙТсхы!Ь s#r GyўxТћс!д уЭ@уs#r#Т1сЩxжЪS|W}_еЭыбыыЩеХћџx2Е *Ш ЗЭЏ2Е СбЩыхy•oxœgеы*Ж "Ж ы*="=*?PYЭ… к™"?бсыЩе:Д ўЪЙ=ТЏы*Ж ы!"Ж ыбЩхы*Ж ы*Ц Э… свЏыУЏЭТтеы*={•OzœGыбЩхеы*Ф ыЭ*о DMбс7ЩxБШw# Уі хы +xБЪп~+ УxБШw+ У:Г 7=јхХўЬ{ю‡OЗЪ>:­ З7ТJыЭѕЭЭиыСсЩ?Intersecting ѕХхџЭхвwOеЭѕЭиыЭсысСёЩ*М Э… Ÿ<Щ26ЭихХ:Г ў?ŸцOЪЃ:­ ЗТJЭиЭ… вJЭўыЭ… ывJх!MЭс>,ЭP*6&0M^#VыЭаyЗТрсЭџУі!HF#~#ЭPТх>(ЭPсЭџ>)ЭPУі:Г ўŸцЭѕЭУ" Start = External Public = %а*€ЭчТ"!Эч2Z!:ZЗШЭчЪ?!ЭиЭ™!ЭўЭ™! yўТ-!*о ы*р Э… м #*Ф Э"Эс ЭѕхЭсЭ… сТ|!ы*SыыЭ… д"yўТb!Эсы*SЭ… д"УрЭ… кЕ!ы*SЭ… ыкЎ!Щх!с!УЙ!х!л!х!ч!ЭасЭа!я!ЭаЏ2Ќ ЭљЭкўYсШУxbelowaboveOrigin loader memory, move anyway(Y or N)?ХеыЭўеыЭиЭ… ыбЪ0"Э… мD" ђ"!Э… мD"ыбСЩХхyЗТS":Ў ЗЪW"ЏЦў*SЪ€"кa"ЏOЭиеыЭўЭ… ыбТ€"yЗ*SТ€"!р ЭлЭ… в‡"ы!9љсх;;;;;;ыЭ… кХ"уЭ… кЃ"ысеЭzЗбЪЩ"&'7ЭЬ"кП"ЭЬ"ЪЩ"СССССЩбыСЩыСЩХехХсѕЭ… к#ёбеѕыЭ… к#ёвю"сСХхХсыеЭzЗЪ§"бССС7ЩбсбСЏЩСсбСЗЩ*М ";*О "=*Ф ы*;ЭТ)#ГЪЩ#ђ+#€KPХ*;хЭы";ы!цЭіб*М еЭBKБб*;Фі*Ц ы*=ЭСХТl#ГЪЎ#Йвl#O*М бЭ*Ц ХыЭі"М *Ц беы*=ЭBK*Ц беыыЭі*=беЭы"=цСЭіУ#PY*М Эы"М *Ц беЭы"Ц У˜#*Ц ы*=Экц#BKГ*Ц ы*М Фі"М *р ы*о "р ы"о *="Ц *;"Ф Щў Ш!” 8$Х~ўRР#~ўEР#~ўLР4$:cцЪ)$7$w+Т)$ЩCOMHEX`$ХцЭ‹ Э№Э‹ Э<Ъѕ%Џ2К Щ:Ў ЗЪ$ЭчЪ}$*р ы*о Э… к$!c~цЪŒ$‹ е~цЪЦ$:\ЗЪВ$:Ў ЗТЕ$*QхыЭ\ы"Ф с"о Э&yюO:Ў ЗФ&Эw&У%*Q|ЕЪѕ$Э… Ъѕ$Эй%Э… кѕ$€Э… вљ$Э.%Э>%7д’%ЭR%:Ў ЗЪ%ЭўыyюOЭчЪ%Э>%ЭR%:К ЗФ‚%‹ Э<Ъѕ%Щ>УЭh%*Q}Эh%|Уh%ЭиЭиГШЏЭh%zГТG%ЩЭф%ЭсыЭzГШ~#Эh%У\%ехѕ!ц:К _ёw{<ќ‚%2К сбЩХ‹ ЭЗТѕ%СЏЩЭй%"У%хХyюOЭўСбЭы#"Ц%щџ!Т%Э\%Э.%fЏЭh%ТЙ%Щ!€ ы ~+ xБТ :_ЗЪи*QЩ:_ЗЪѕХ*QыЭ\СЩ!ћ%Уу?Can't save object fileЭўыЭиыеЭ{ВсШХхеЭѕыб{ж _zоWк;&> УA&{Ц ЗТH&ССЩO>:Эh%yЭуеЭќ YбуЏЭ~#Э Тc&ЏЭЭУ+&>:Эh%ЏGЭ*QЭќ >ЭЏЭЭ>Уh%х!*'Эž'!0'Эž'!3'Эž'!9'Эž'##ТВ&##Эž'##ТП&#Эž'!z'Эž'!…'Эž'е*Ф "‰'ы*М Эы"‡'*о "‹'*Ц "'ы*О Эы"'*р "‘'бсСљХы&'mУ&'Э“'У,'ЭV'кG'ЭV'дl'м|'ЭV'Уl'Э|'ЭV'дl'м|'Щ!‡' N#F#^#V#~#fo|’Р}“Щ ы +xБШ~+ Уq'xБШw# У|'xБШw# У“'Ххе~#fo&'ЭыбхСсq#pСЩ:B(ЗШхб*Ш Э… Шы~цўМ'ХхЪЭMсущЭ(:J2A(*;"М Џ2ъ ЭU6Ц+:A(wУAЭMсухzѕЭ(ё2A(ЗШУ7(:B(ЗШЭ(*;"М Щ:A(ЗШ2B(Эчы*;r#s+:A(Уi(*;ЭЂ("М ЩЏ2A(2B(!А* p# ТP(!HN#А*~# Т^(УAхеr#sЭ *Эя)б{цЪ…({ц€Ц€_в…(zГсЪž(ехЭЧ)с€у€џыУ…(ЭЃ)ЩхЭ *Эк)!.*ЭД)!.*V#^сЭі(кэ(е€Эў(бх!€џысЭі(ко(ехЭД)с€УУ(zГЪ№(х!.*еЭД)бсЭў(хЭЃ)сЩzЗР{Зј7Щ.*zГШ w#У)цЦ0ў:wижљwЩ:Ў*!;)ѕЭ )+ёЭ )!1)Уа?Segment , file not foundcan't create fileread errorDisk is fullЭ)!@)УуЭ)!O)УуЭ)ЭЃ)!a)УуЭ)ЭЃ)!l)Уу.*ЭЏ*ЭЩыЭЏ*ЭЗТ‹)ЩыЭЏ*ЭЗТ—)Щ.*ЭЏ*Э<Ъy)Щ.*ЭЏ*ЭЏ*Э<Ъ‚)Щѕ2Ў*!К*Э )ё+Э )##Џ2Џ*w# Т'*Щ V 0џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/* LIB0.C - declarations for assembly language subroutines (for FPC) 8-Jul-85 debug inp(), outp() 20-Jul-87 move movmem(), setmem(), memcpy(), memset() from LIBZ add setjmp(), longjmp(), _initrap(), _endtrap() The functions whose name begin with underscore character are only used internally. */ #include "stdio.h" char bdos(c) char c; { } int bdosh(c) char c; { } char bios(code) char code; { } char calla(addr, a, hl, bc, de) int *addr, a, hl, bc, de; { } int call(addr, a, hl, bc, de) int *addr, a, hl, bc, de; { } char inp(port) unsigned port; { } VOID outp(port, val) unsigned port; char val; { } VOID memcpy(dest, source, length) char *dest, *source; size_t length; { } VOID movmem(source, dest, length) char *dest, *source; size_t length; { } VOID memset(dest, byte, length) char *dest, byte; size_t length; { } VOID setmem(dest, length, byte) char *dest, byte; size_t length; { } int setjmp(env) jmp_buf env; { } VOID longjmp(env, val) jmp_buf env; int val; { } VOID _initrap() { } VOID _endtrap() { } џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ; ; LIB0.MAC Standard library functions -- PART 0 (Ver 1.1) ; ; 25-Oct-83 ; 26-Oct-83 ; 2-Nov-83 add _chai ; 7-Feb-84 change inp, outp ; 8-Jul-85 debug inp, outp ; 20-Jul-87 move movmem, setmem, memcpy, memset from libz ; add setjmp, longjmp, initrap, endtrap ; 30-Oct-87 ver 1.10s ; ; This file cotains the following functions: ; ; bdos bdosh bios ; calla call inp outp ; memcpy movmem memset setmem ; (_chai) ; setjmp longjmp _initrap _endtrap ; ;------ fake M80 and MX ----------------------------------------------- module macro ;; "module" must be lower cased endm endmodule macro ;; "endmodule" must be lower cased endm extrn macro endm ;---------------------------------------------------------------------- MODULE CLIBVER public ?clib ; This module contains the version number of CLIB.REL ?clib: defb "MSX-C CLIB ver 1.10s" ENDMODULE MODULE BDOS public bdos@ public bdosh@ ; bdos call. ; ; char bdos (c, de, hl) ; int bdosh(c, de, hl) ; char c; ; int de, hl; ; bdos@: bdosh@: ld h,b ld l,c ld c,a jp 5 ENDMODULE MODULE BIOS public bios@ ; bios call. ; ; char bios(bios_code, c) ; char bios_code; ; char c; ; bios@: ld c,e ld e,a ld d,0 ld hl,(1) add hl,de add hl,de add hl,de jp (hl) ENDMODULE MODULE CALL public call@ public calla@ ; call a machine code subroutine. ; ; int call (addr, a, hl, bc, de) ; char calla(addr, a, hl, bc, de) ; int *addr, a, hl, bc, de; ; call@: calla@: ld a,e push hl push bc ld hl,2+4 add hl,sp ld c,(hl) inc hl ld b,(hl) inc hl ld e,(hl) inc hl ld d,(hl) pop hl ret ENDMODULE MODULE INP public inp@ ; input from i/o port. ; ; char inp(port) ; unsigned port; ; inp@: ld c,l in a,(c) ret ENDMODULE MODULE OUTP public outp@ ; output to i/o port. ; ; void outp(port, val) ; unsigned port; ; char val; ; outp@: ld c,l out (c),e ret ENDMODULE MODULE MEMCPY public memcpy@ public movmem@ ; move memory block. ; ; void memcpy(dest, source, count) /* ANSI standard */ ; void movmem(source, dest, count) ; char *source, *dest; ; size_t count; ; memcpy@: ex de,hl movmem@: ld a,c ;see if anything to move or b ret z ldir ret ENDMODULE MODULE MEMSET public memset@ public setmem@ ; Set memory block. ; ; void memset(dest, byte, count) /* ANSI standard */ ; void setmem(dest, count, byte) ; char *dest, byte; ; size_t count; ; setmem@: ld a,c ;swap count & byte ld c,e ld b,d ld e,a memset@: ld a,c ;see if anything to set or b ret z ld (hl),e ;set first byte ld e,l ld d,h inc de dec bc jp movmem@ extrn movmem@ ENDMODULE MODULE CHAIN public @chai@ ; Load a command file and execute. ; This subroutine is relocated to the high memory. ; ; void _chai(fcb) ; char *fcb; /* FCB address */ ; WBOOT equ 0000h ;MSX-DOS cold start address DEFDMA equ 0080h ;MSX-DOS defalut DMA address TPA equ 0100h ;MSX-DOS TPA address @chai@: ld sp,hl ;set up stack ld bc,WBOOT push bc push hl ;save FCB address ld de,14 ;set recsize to 1 add hl,de ld (hl),1 inc hl ld (hl),0 ld de,TPA ;set DMA address ld c,1Ah call 5 pop de ;restore FCB address ld l,e ;get available size ld a,d sub 2 ;account for TPA and stack ret c ;sorry, not enough space ld h,a ld c,27h ;block read call 5 or a ret z ;sorry, but EOF not reached ld de,DEFDMA ;reset default DMA address ld c,26 call 5 jp TPA ;let's go!! ; ----- total of 48 (30h) bytes ----- ENDMODULE MODULE SETJMP public setjmp@ public longjmp@ ; setjmp, longjmp - non-local jumps ; ; int setjmp(env) ; jmp_buf env; ; ; void longjmp(env, val) ; jmp_buf env; ; setjmp@: pop bc ;get return address push bc ex de,hl ld hl,2 ;get stack location add hl,sp ex de,hl ld (hl),c ;save return address inc hl ld (hl),b inc hl ld (hl),e ;save stack location inc hl ld (hl),d ld hl,0 ;say this is a immediate return ret longjmp@: ld c,(hl) ;get old return address inc hl ld b,(hl) inc hl ld a,(hl) ;get old stack location inc hl ld h,(hl) ld l,a ld sp,hl ;restore old stack push bc ;restore old return address ex de,hl ld a,l ;never returns 0 or h ret nz inc hl ret ENDMODULE MODULE TRAP public @initrap@ public @endtrap@ ; control-C, disk-error handler ; ; void initrap() ; ; void endtrap() ; @initrap@: call brkinit jr dskinit @endtrap@: call brkreset jr dskreset brkinit: ld hl,(0f325h) ;save previous vector ld (brkreset+1),hl ld hl,brktrap ;set our own ld (0f325h),hl ret dskinit: ld hl,(0f323h) ;save previous vector ld (dskreset+1),hl ld hl,dsktrap ;set our own ld (0f323h),hl ret brkreset: ;restore control-C trap ld hl,$-$ ld (0f325h),hl ret dskreset: ;restore disk-error trap ld hl,$-$ ld (0f323h),hl ret dsktrap: defw $+2 ; call dskreset ld hl,(dskreset+1) ;call the previous call jphl ld a,c ;intercept return code cp 2 ;abort? jr c,dskinit ;no, continue jr brkreset brktrap: defw $+2 ; call brkreset ld hl,(dskreset+1) ;disk trap disabled? ex de,hl ld hl,(0f323h) and a sbc hl,de jr z,prevbrk ;yes call dskreset ;disable disk trap ld hl,@ckenv@ ld de,300h ;set exitcode jp longjmp@ ;tell kernel control-c is pressed prevbrk: ld hl,(brkreset+1) jphl: push de ld e,(hl) ;call the previous inc hl ld d,(hl) ex de,hl pop de jp (hl) extrn longjmp@ extrn @ckenv@ ENDMODULE end џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/* LIB1.C Standard library functions -- PART I (Ver 1.1) 30-Oct-87 ver 1.10s This file contains following functions. atoi strcat strcmp strcpy strlen toupper tolower _swp qsort abs min max sbrk rsvstk free alloc The functions whose name begin with underscore character are only used internally. */ #include "stdio.h" #pragma nonrec int atoi(s) char *s; { int val = 0; int sign = 1; while (*s == ' ' || *s == '\t') s++; switch (*s) { case '-': sign = -1; case '+': s++; } while ('0' <= *s && *s <= '9') val = val * 10 + (*s++ - '0'); /* character operation */ return (val * sign); } char toupper(c) char c; { return (islower(c) ? c - 'a' + 'A' : c); } char tolower(c) char c; { return (isupper(c) ? c - 'A' + 'a' : c); } int strcmp(s, t) char *s, *t; { for (; *s == *t; s++, t++) if (*s == '\0') return (0); return ((int) *s - (int) *t); } char *strcat(d, s) char *d, *s; { char *head = d; while (*d) d++; while (*d++ = *s++) ; return (head); } char *strcpy(d, s) char *d, *s; { char *head = d; while (*d++ = *s++) ; return (head); } size_t strlen(s) char *s; { char *head = s; while (*s) s++; return (s - head); } VOID _swp(width, x, y) size_t width; char *x, *y; { char temp; for (; width > 0; width --) { temp = *x; *x = *y; *y = temp; x++; y++; } } VOID qsort(base, n, width, compar) char *base; unsigned n; size_t width; int (*compar)(); { char *piv, *i, *j; char *lv[20], *uv[20]; int p; lv[0] = base; uv[0] = base + (n - 1)*width; p = 0; while (p >= 0) { if (lv[p] >= uv[p]) { --p; continue; } i = lv[p] - width; piv = j = uv[p]; while (i < j) { for (i += width; (*compar)(i, piv) < 0; i += width) ; for (j -= width; j > i; j -= width) if ((*compar)(j, piv) <= 0) break; if (i < j) _swp(width, i, j); } _swp(width, i, uv[p]); if (i - lv[p] < uv[p] - i) { lv[p+1] = lv[p]; uv[p+1] = i - width; lv[p] = i + width; } else { lv[p+1] = i + width; uv[p+1] = uv[p]; uv[p] = i - width; } ++p; } } /* Math */ int abs(n) int n; { return (n < 0 ? -n : n); } int min(x, y) int x, y; { return (x < y ? x : y); } int max(x, y) int x, y; { return (x > y ? x : y); } /* Storage management functions */ size_t _torelance = 1000; /* default size of stack space */ char *sbrk(n) size_t n; { extern char _endx[]; /* end of data segment's address */ static char *memtop = _endx; char stack[0]; char *temp; if (stack - memtop - _torelance < n) return (ERROR); temp = memtop; memtop += n; return (temp); } VOID rsvstk(n) size_t n; { _torelance = n; } typedef char ALIGN; typedef union header { struct { union header *ptr; unsigned size; } s; ALIGN x; } HEADER; HEADER _base; HEADER *_allocp = NULL; VOID free(ap) char *ap; { HEADER *p, *q; p = (HEADER *)ap - 1; for (q = _allocp; !(q < p && p < q->s.ptr); q = q->s.ptr) if (q >= q->s.ptr && (q < p || p < q->s.ptr)) break; if (p + p->s.size == q->s.ptr) { p->s.size += q->s.ptr->s.size; p->s.ptr = q->s.ptr->s.ptr; } else p->s.ptr = q->s.ptr; if (q + q->s.size == p) { q->s.size += p->s.size; q->s.ptr = p->s.ptr; } else q->s.ptr = p; _allocp = q; } char *alloc(nbytes) size_t nbytes; { HEADER *p, *q, *cp; int nunits; nunits = 1 + (nbytes + sizeof(HEADER) - 1) / sizeof(HEADER); if ((q = _allocp) == NULL) { _base.s.ptr = _allocp = q = &_base; _base.s.size = 0; } for (p = q->s.ptr; ; q = p, p = p->s.ptr) { if (p->s.size >= nunits) { if (p->s.size == nunits) q->s.ptr = p->s.ptr; else { p->s.size -= nunits; p += p->s.size; p->s.size = nunits; } _allocp = q; return ((char *)(p + 1)); } if (p == _allocp) { if ((cp = (HEADER *)sbrk(nunits * sizeof(HEADER))) == ERROR) return (NULL); cp->s.size = nunits; free(cp + 1); p = _allocp; } } } џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/* LIB2.C Standard library functions -- PART II (Ver 1.1) 8-Jul-85 MSX-DOS version debug _exec 11-Jul-85 change CPMREAD -> BLKREAD change CPMWRITE -> BLKWRITE 16-Jul-85 set recsize = 1 10-Aug-85 change _fflush() to put one CPMEOF For Ver 1.1 14-Jul-87 change _getcon() -> use line input change fgets -> use only getc change ungetc -> return OK or ERROR add getch -> 1 char input from CON move _exec,execl,execv to LIBK.C 20-Oct-87 debug getch, expargs, fopen 30-Oct-87 debug _chkserial ver 1.10s This file contains following functions. getch getche kbhit sensebrk _getcon _getfcb _freefcb _alocfcb _isfn _pars1 _parsefn _chkdrv _setupfcb _filename _cmp expargs rename unlink write read _seek close open creat _fillbuf _flushbuf _putc putc _getc ungetc getc fclose _closeall fsetbin fsettext _strequ _chkserial fopen fputs fgets putchar ungetch getchar puts gets The functions whose name begin with underscore character are only used internally. */ #include "stdio.h" #include "bdosfunc.h" #pragma nonrec #define CPMEOF '\032' /* CP/M end of file character */ #define MAXLINE 255 /********************************************************/ /* */ /* Console I/O functions */ /* */ /********************************************************/ char getch() { return (bdos(DIRIN)); } char getche() { return (bdos(CONIN)); } BOOL kbhit() { return (bdos(CONST)); } VOID sensebrk() { bdos(CONST); } int _getcon() { static char buff[MAXLINE+4]; static int count = 0; static char *ptr; char c; if (count == 0) { buff[0] = MAXLINE; bdos(GETLIN, buff); bdos(CONOUT, '\n'); count = buff[1]; ptr = &buff[2] + count; *ptr++ = '\r'; *ptr = '\n'; count += 2; ptr = &buff[2]; } c = *ptr++; count--; if (c == CPMEOF) { /* End of File */ count = 0; return (EOF); } return(c); } /********************************************************/ /* */ /* Raw I/O functions */ /* */ /********************************************************/ #define _NFCBS 20 #define _READ 01 #define _WRITE 02 #define _EOF 04 #define _OVF 010 #define _BINARY 020 FCB *_xio[_NFCBS] = {}; /* to be initialized to zero */ FCB *_getfcb(fd) FD fd; { if (fd < 0 || _NFCBS <= fd) return (NULL); return (_xio[fd]); } VOID _freefcb(fd) FD fd; { FCB *fcb; if ((fcb = _getfcb(fd)) != NULL) { free(fcb); _xio[fd] = NULL; } } FD _alocfcb() { unsigned i; for (i = 0; i < _NFCBS; i++) { if (_xio[i] == NULL) if ((_xio[i] = (FCB *)alloc(sizeof(FCB))) != NULL) return (i); else break; } return (ERROR); } BOOL _isfn(c) char c; { switch (c) { case '=': /* argument separator */ case ';': case ',': case '+': /* filespec separator */ case '/': /* switch prefix */ case '"': /* other stuff */ case '[': case ']': case ':': /* file field separator */ case '.': case 0x7f: /* other control characters */ case 0xff: return (NO); default: if (c <= ' ') return (NO); } return (YES); } char *_pars1(s, d, n) char *s, *d; TINY n; { for (; _isfn(*s); d++, s++) { if (n) { n--; if ((*d = toupper(*s)) == '*') { n++; while (n) { n--; *d++ = '?'; } } } } return (s); } char *_parsefn(fn, fcb) char *fn; FCB *fcb; { char dc; dc = toupper(*fn) - 'A' + 1; if (dc && dc <= MAXDRIVE && *(fn+1) == ':') { /* drive */ fcb->dc = dc; fn += 2; } if (_isfn(*fn)) { /* name */ memset(fcb->name, ' ', sizeof(fcb->name)); fn = _pars1(fn, fcb->name, 8); } if (*fn == '.') { /* type */ memset(fcb->type, ' ', sizeof(fcb->type)); fn = _pars1(++fn, fcb->type, 3); } return (fn); } STATUS _chkdrv(dc) TINY dc; { if (dc == 0) return (OK); if (MAXDRIVE <= --dc) return (ERROR); return (((unsigned)bdosh(LOGVEC) >> dc & 1)? OK: ERROR); } STATUS _setupfcb(name, fcb) char *name; FCB *fcb; { char *p; TINY i; memset(fcb, '\0', sizeof(FCB)); memset(fcb->name, ' ', 8 + 3); name = _parsefn(name, fcb); if (_chkdrv(fcb->dc) == ERROR) return (ERROR); for (p = fcb->name, i = 8 + 3; i != 0; i--) if (*p++ == '?') break; return ((*name)? ERROR: (i)? WILDCARD: OK); } char *_filename(dir, fn) struct { char dc, name[8], type[3], filler[21]; } *dir; char *fn; { TINY i; char c, *p; if (dir->dc) { *fn++ = dir->dc - 1 + 'A'; *fn++ = ':'; } for (i = 8, p = dir->name; i && (c = *p) != ' '; i--, p++) *fn++ = c; for (i = 3, p = dir->type; i && (c = *p) != ' '; i--, p++) { if (i == 3) *fn++ = '.'; *fn++ = c; } *fn = '\0'; return (fn); } int _cmp(p, q) char **p, **q; { return (strcmp(*p, *q)); } int expargs(argc, argv, maxargc, xargv) int argc, maxargc; char *argv[], *xargv[]; { auto struct { char dc, name[8], type[3], filler[21]; } dir; FCB sf; int xargc, topc, i; char rc, c, *p, **topv, fn[20]; xargc = 0; while (--argc >= 0) { p = *argv++; if (_setupfcb(p, &sf) == WILDCARD) { topv = xargv; topc = xargc; bdos(SETDMA, &dir); for (rc=bdos(SEARF, &sf); rc!=BDOSERR; rc=bdos(SEARN)) { if (xargc >= maxargc) return (ERROR); dir.dc = sf.dc; p = _filename(&dir, fn); if ((p = sbrk(p - fn + 1)) == ERROR) { return (ERROR); } strcpy(p, fn); *xargv++ = p; xargc++; } qsort(topv, xargc - topc, sizeof(char *), _cmp); } else { if (xargc >= maxargc) return (ERROR); *xargv++ = p; xargc++; } } return (xargc); } STATUS unlink(filename) char *filename; { FCB fcb; if (_setupfcb(filename, &fcb) == ERROR) /* wildcard is OK */ return (ERROR); return ((bdos(DELETE, &fcb) == BDOSERR)? ERROR: OK); } STATUS rename(oldname, newname) char *oldname, *newname; { FCB ofcb, nfcb; if (_setupfcb(oldname, &ofcb) != OK /* wildcard is ERROR */ || _setupfcb(newname, &nfcb) != OK) /* wildcard is ERROR */ return (ERROR); memcpy((char *)&ofcb + 16, &nfcb, 1 + 8 + 3); return ((bdos(RENAME, &ofcb) == BDOSERR)? ERROR: OK); } int write(fd, buf, bytes) FD fd; char *buf; size_t bytes; { FCB *fcb; if ((fcb = _getfcb(fd)) == NULL || !(fcb->mode & _WRITE)) return (ERROR); bdos(SETDMA, buf); return (bdosh(BLKWRITE, fcb, bytes)); } int read(fd, buf, bytes) FD fd; char *buf; size_t bytes; { FCB *fcb; if ((fcb = _getfcb(fd)) == NULL || !(fcb->mode & _READ)) return (ERROR); bdos(SETDMA, buf); return (bdosh(BLKREAD, fcb, bytes)); } STATUS _seek(fd, offset, mode) FD fd; int offset; TINY mode; { FCB *fcb; if (2 < mode || (fcb = _getfcb(fd)) == NULL) return (ERROR); if (mode == 0) { fcb->recpos[0] = fcb->recpos[1] = 0; } else if (mode == 2) { fcb->recpos[0] = fcb->filesize[0]; fcb->recpos[1] = fcb->filesize[1]; } /* simulate (long) += (int) */ if (offset < 0) --fcb->recpos[1]; if ((fcb->recpos[0] += offset) < (unsigned)offset) ++fcb->recpos[1]; return (OK); } STATUS close(fd) FD fd; { FCB *fcb; STATUS cond; if ((fcb = _getfcb(fd)) == NULL) return (ERROR); cond = bdos(CLOSE, fcb); _freefcb(fd); return ((cond == BDOSERR)? ERROR: OK); } FD open(filename, mode) char *filename; int mode; { FD fd; FCB *fcb; if (mode < 0 || 2 < mode || (fd = _alocfcb()) == ERROR) return (ERROR); if (_setupfcb(filename, fcb=_getfcb(fd)) != OK /* wildcard is ERROR */ || bdos(OPEN, fcb) == BDOSERR) { _freefcb(fd); return (ERROR); } fcb->mode = mode + 1; /* 0 -> _READ, * * 1 -> _WRITE, * * 2 -> _READ | _WRITE */ fcb->recsize = 1; return (fd); } FD creat(filename) char *filename; { FD fd; FCB *fcb; if ((fd = _alocfcb()) == ERROR) return (ERROR); if (_setupfcb(filename, fcb=_getfcb(fd)) != OK /* wildcard is ERROR */ || bdos(CREATE, fcb) == BDOSERR) { _freefcb(fd); return (ERROR); } fcb->mode = _WRITE; fcb->recsize = 1; return (fd); } /********************************************************/ /* */ /* Bufferred I/O functions */ /* */ /********************************************************/ #define CON 1 #define LST 2 #define AUX 3 #define NUL 4 FILE _iob[_NFILES] = { {}, /* stdin */ {}, /* stdout */ {CON, _WRITE}, /* stderr */ }; STATUS _flushbuf(fp) FILE *fp; { size_t sz; if ((fp->mode & _OVF) || !(fp->mode & _WRITE)) return (ERROR); sz = fp->bufsiz - fp->count; if (sz != write(fp->fd, fp->base, sz)) { fp->mode |= _OVF; return (ERROR); } fp->ptr = fp->base; fp->count = fp->bufsiz; return (OK); } STATUS _fillbuf(fp) FILE *fp; { if ((fp->mode & _EOF) || !(fp->mode & _READ)) { return (ERROR); } if ((fp->count = read(fp->fd, fp->base, fp->bufsiz)) == 0) { fp->mode |= _EOF; return (ERROR); } fp->ptr = fp->base; return (OK); } STATUS _putc(c, fp) char c; FILE *fp; { switch (fp->serial) { case 0: if (fp->count == 0 && _flushbuf(fp) == ERROR) return (ERROR); fp->count--; *fp->ptr++ = c; break; case CON: bdos(CONOUT, c); break; case LST: bdos(LSTOUT, c); break; case AUX: bdos(AUXOUT, c); case NUL: break; default: return (ERROR); } return (OK); } STATUS putc(c, fp) char c; FILE *fp; { if (c == '\n' && !(fp->mode & _BINARY)) if (_putc('\r', fp) == ERROR) return (ERROR); if (_putc(c, fp) == ERROR) return (ERROR); return (OK); } int _getc(fp) FILE *fp; { int c; switch (fp->serial) { case 0: if (fp->count == 0 && _fillbuf(fp) == ERROR) return (EOF); fp->count--; return (*fp->ptr++); case CON: case AUX: if (c = fp->count) { fp->count = 0; return (c & 0x00ff); } return (fp->serial == CON)? _getcon(): bdos(AUXIN); default: return (EOF); } } STATUS ungetc(c, fp) char c; FILE *fp; { if (!(fp->mode & _READ)) return (ERROR); switch (fp->serial) { case 0: if (fp->base < fp->ptr) { *--fp->ptr = c; fp->count++; } return (OK); case CON: case AUX: fp->count = (c | 0xff00); return (OK); default: return (ERROR); } } int getc(fp) FILE *fp; { int c; if (fp->mode & _BINARY) return (_getc(fp)); while ((c = _getc(fp)) == '\0') ; switch (c) { case CPMEOF: ungetc((char)c, fp); return(EOF); case '\r': if ((c = _getc(fp)) != '\n') { ungetc((char)c, fp); return('\r'); } } return (c); } STATUS fclose(fp) FILE *fp; { STATUS cond; if (fp == NULL) return (ERROR); cond = OK; if (!fp->serial) { if (fp->mode & _WRITE) { if (!(fp->mode & _BINARY)) _putc(CPMEOF, fp); cond = _flushbuf(fp); } if (cond == ERROR) close(fp->fd); else cond = close(fp->fd); free(fp->base); } fp->mode = 0; return (cond); } VOID _closeall() { unsigned i; FILE *p; for (p = _iob; p < _iob + _NFILES; p++) if (p->mode) fclose(p); for (i = 0; i < _NFCBS; i++) if (_getfcb(i)) close(i); } STATUS fsettext(fp) FILE *fp; { fp->mode &= ~_BINARY; return (OK); } STATUS fsetbin(fp) FILE *fp; { fp->mode |= _BINARY; return (OK); } BOOL _strequ(s, t) char *s, *t; { while (*s) if (*s++ != toupper(*t++)) return (NO); if (*t != ' ') return (NO); return (YES); } TINY _chkserial(s) char *s; { FCB fcb; if (_setupfcb(s, &fcb) != OK) return (ERROR); return ((_strequ("CON", fcb.name))? CON: (_strequ("LST", fcb.name) || _strequ("PRN", fcb.name))? LST: (_strequ("AUX", fcb.name))? AUX: (_strequ("NUL", fcb.name))? NUL: 0); } FILE *fopen(nargs, xfn, xmode, xbsiz) int nargs; char *xfn, *xmode; size_t xbsiz; { char *filename, mode; TINY bmod; size_t bsiz; FILE *p; if (nargs < 1 || 3 < nargs ) return (NULL); filename = xfn; mode = (nargs == 1)? 'R': toupper(*xmode); bmod = (nargs != 1 && toupper(xmode[1]) == 'B')? _BINARY: 0; bsiz = (nargs == 3)? xbsiz: BUFSIZ; for (p = _iob; p < _iob + _NFILES; ++p) if (p->mode == 0) break; if (p >= _iob + _NFILES) return (NULL); if (p->serial = _chkserial(filename)) { /* serial devices */ if (p->serial == ERROR || p->serial == LST && mode == 'R') return (NULL); p->mode = ((mode == 'R')? _READ: _WRITE) | bmod; p->count = '\0'; /* no char is ungotten */ return (p); } if ((p->base = alloc(bsiz)) == NULL) /* alloc. buffer */ return (NULL); p->bufsiz = bsiz; switch (mode) { case 'R': if ((p->fd = open(filename, 0)) == ERROR) { free(p->base); return (NULL); } p->mode = _READ | bmod; p->count = 0; break; case 'A': case 'W': if (mode == 'A' && (p->fd = open(filename, 2)) != ERROR) { if (bmod) _seek(p->fd, 0, 2); else { p->mode = _READ; p->count = 0; while (getc(p) != EOF) /* inefficient!! */ ; _seek(p->fd, -p->count, 1); } } else if ((p->fd = creat(filename)) == ERROR) { free(p->base); return (NULL); } p->mode = _WRITE | bmod; p->count = bsiz; p->ptr = p->base; break; default: free(p->base); return (NULL); } return (p); } STATUS fputs(s, fp) char *s; FILE *fp; { char c; while (c = *s++) { if (putc(c, fp) == ERROR) return (ERROR); } return (OK); } char *fgets(s, n, fp) char *s; int n; FILE *fp; { int c; char *cptr; cptr = s; while (--n != 0 && (c = getc(fp)) != EOF) { if ((*cptr++ = c) == '\n') break; } *cptr = '\0'; return (c == EOF && cptr == s)? NULL: s; } STATUS putchar(c) char c; { return (putc(c, stdout)); } VOID ungetch(c) char c; { return (ungetc(c, stdin)); } int getchar() { return (getc(stdin)); } STATUS puts(s) char *s; { return (fputs(s, stdout)); } char *gets(s, n) char *s; int n; { return (fgets(s, n, stdin)); } џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/* LIB3.C Standard library functions -- PART III (Ver 1.1) For Ver 1.1 18-Jul-87 change _scn, scanf, fscanf, sscanf to use getc(). change return code from scan. add _scnret, _getach, _sscn, _sscn2 21-Oct-87 rename _sscn2 to _suget debug _igs, _bc, _scn, _suget remove _scnret, _getach 30-Oct-87 debug _spr, _sspr ver 1.10s This file contains following functions. _gv2 _uspr _spr printf fprintf _sspr sprintf _igs _bc _scn scanf fscanf _sscn _sung sscanf The functions whose name begin with underscore character are only used internally. */ #include "stdio.h" #pragma nonrec unsigned _gv2(p) char **p; { unsigned n; char c; /* char must be unsigned */ for (n = 0; (c = **p - '0') < 10; (*p)++) n = n * 10 + c; return (n); } recursive TINY _uspr(str, n, radix) char **str; unsigned n; TINY radix; { TINY len; char r; len = (n >= radix) ? _uspr(str, n/radix, radix) : 0; r = n % radix; *(*str)++ = (r < 10) ? r + '0' : r - 10 + 'A'; return (len + 1); } STATUS _spr(fmt, outfunc, ___) char **fmt; STATUS (*outfunc)(); char *___; /* pointer for any type */ { char c, *format; char buf[10], *ptr, padch; TINY radix; BOOL dflag, leftjust; int field, digits, *param; format = *fmt++; param = (int *)fmt; while (c = *format++) { if (c == '%') { ptr = buf; digits = 6; leftjust = dflag = NO; if (*format == '-') { format++; leftjust = YES; } padch = ((c = *format) == '0') ? '0' : ' '; field = isdigit(c) ? _gv2(&format) : 0; if ((c = *format++) == '.') { digits = _gv2(&format); dflag = YES; c = *format++; } switch (toupper(c)) { case 'X': radix = 16; goto nums; case 'O': radix = 8; goto nums; case 'D': if (*param < 0) { *param = -*param; *ptr++ = '-'; field--; } case 'U': radix = 10; nums: field -= _uspr(&ptr, *param++, radix); goto pad; case 'S': ptr = (char *)*param++; field -= strlen(ptr); goto spad; case 'C': *ptr++ = *param++; field--; pad: *ptr = '\0'; ptr = buf; dflag = NO; spad: if (!leftjust) while (field-- > 0) if ((*outfunc)(padch, ___) == ERROR) return (ERROR); while (*ptr) { if (!dflag || digits > 0) { if ((*outfunc)(*ptr, ___) == ERROR) return (ERROR); digits--; } ptr++; } if (leftjust) while (field-- > 0) if ((*outfunc)(' ', ___) == ERROR) return (ERROR); break; case '\0': return (OK); default: if ((*outfunc)(c, ___) == ERROR) return (ERROR); } } else if ((*outfunc)(c, ___) == ERROR) return (ERROR); } return (OK); } STATUS printf(nargs, format) int nargs; char *format; { return (_spr(&format, putc, stdout)); } STATUS fprintf(nargs, iobuf, format) int nargs; FILE *iobuf; char *format; { return (_spr(&format, putc, iobuf)); } STATUS _sspr(c, ptr) char c, **ptr; { *(*ptr)++ = c; return (OK); } VOID sprintf(nargs, buffer, format) int nargs; char *buffer, *format; { _spr(&format, _sspr, &buffer); *buffer = '\0'; } int _igs(func, ___) int (*func)(); char *___; /* pointer to FILE or (char *) */ { int c; while ((c = (*func)(___)) != EOF && isspace((char)c)) ; return (c); } TINY _bc(c, b) char c; TINY b; { if (isalpha(c)) c = toupper(c) - 'A' + 10; else if (isdigit(c)) c -= '0'; else return (ERROR); return ((c < b)? c: ERROR); } int _scn(fmt, infunc, ___, ugfunc) char **fmt; int (*infunc)(); char *___; /* pointer to FILE or (char *) */ int (*ugfunc)(); { char *format, fmtchar, *s; BOOL assign, matched; TINY radix, valc; int c, **param, n, sign, value; format = *fmt++; param = (int **)fmt; n = 0; matched = YES; while (matched && (fmtchar = *format++)) { if (fmtchar == '%') { assign = YES; if ((fmtchar = *format++) == '*') { assign = NO; fmtchar = *format++; } switch (fmtchar = toupper(fmtchar)) { case 'X': radix = 16; goto val; case 'O': radix = 8; goto val; case 'U': case 'D': radix = 10; val: c = _igs(infunc, ___); sign = 1; if (fmtchar == 'D' && c == '-') { sign = -1; c = (*infunc)(___); } if (_bc((char)c, radix) != ERROR) { value = 0; while ((valc = _bc((char)c, radix)) != ERROR) { value = value * radix + valc; c = (*infunc)(___); } if (assign) { **param++ = value * sign; n++; } } else matched = NO; break; case 'S': if ((c = _igs(infunc, ___)) != EOF) { s = (char *)*param; while (c != EOF && !isspace((char)c)) { if (assign) *s++ = c; c = (*infunc)(___); } if (assign) { *s = '\0'; param++; n++; } } break; case 'C': if ((c = (*infunc)(___)) != EOF) { if (assign) { *((char *)*param++) = c; n++; } continue; } break; default: return (n); } } else if (isspace(fmtchar)) { c = _igs(infunc, ___); } else { if ((c = (*infunc)(___)) == fmtchar) continue; matched = NO; } /* comes here with unmatched character in c */ if (c == EOF) return ((n == 0)? EOF: n); else (*ugfunc)((char)c, ___); /* prepare for next scan */ } return (n); } int scanf(nargs, format) int nargs; char *format; { return (_scn(&format, getc, stdin, ungetc)); } int fscanf(nargs, iobuf, format) int nargs; FILE *iobuf; char *format; { return (_scn(&format, getc, iobuf, ungetc)); } int _sscn(ptr) char **ptr; { char c; if ((c = *(*ptr)++) == '\0') { (*ptr)--; return (EOF); } return (c); } VOID _suget(c, ptr) char c; char **ptr; { --(*ptr); } int sscanf(nargs, line, format) int nargs; char *line, *format; { return (_scn(&format, _sscn, &line, _suget)); } џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџXbdos C D E P11 C { } Xbdosh I D E P12 C { } Xbios C D E P13 C { } Xcalla C F E P14 R P15 I P16 I P17 I P18 I { } Xcall I F E P19 R P20 I P21 I P22 I P23 I { } Xinp C F E P24 N { } Xoutp C F E P25 N P26 C { } Xmemcpy C F E P27 R P28 R P29 N { } Xmovmem C F E P31 R P30 R P32 N { } Xmemset C F E P33 R P34 C P35 N { } Xsetmem C F E P36 R P38 N P37 C { } Xsetjmp I F E P39 R { } Xlongjmp C F E P40 R P41 I { } X_initrap C F E { } X_endtrap C F E { } Xatoi I F P11 R { } Xtoupper C F P22 C { } Xtolower C F P23 C { } Xstrcmp I F P24 R P25 R { } Xstrcat R F P29 R P30 R { } Xstrcpy R F P36 R P37 R { } Xstrlen N F P41 R { } X_swp C F P45 N P46 R P47 R { } Xqsort C F P51 R P52 N P53 N P54 R { } Xabs I F P76 I { } Xmin I F P77 I P78 I { } Xmax I F P79 I P80 I { } Xsbrk R F P81 N { } Xrsvstk C F P88 N { } Xfree C F P95 R { } Xalloc R F P105 N { } Xgetch C F { } Xgetche C F { } Xkbhit C F { } Xsensebrk C F { } X_getcon I F { } X_getfcb R F P36 I { } X_freefcb C F P38 I { } X_alocfcb I F { } X_isfn C F P47 C { } X_pars1 R F P64 R P65 R P66 C { } X_parsefn R F P73 R P74 R { } X_chkdrv C F P79 C { } X_setupfcb C F P82 R P83 R { } X_filename R F V92 C #8 V94 C #3 V96 C #21 S90 ( M91 C M93 V92 M95 V94 M97 V96 ) P98 R P99 R { } X_cmp I F P109 R P110 R { } Xexpargs I F P111 I P113 R P112 I P114 R { } Xunlink C F P143 R { } Xrename C F P146 R P147 R { } Xwrite I F P151 I P152 R P153 N { } Xread I F P156 I P157 R P158 N { } X_seek C F P161 I P162 I P163 C { } Xclose C F P171 I { } Xopen I F P175 R P176 I { } Xcreat I F P181 R { } X_flushbuf C F P187 R { } X_fillbuf C F P191 R { } X_putc C F P194 C P195 R { } Xputc C F P205 C P206 R { } X_getc I F P210 R { } Xungetc C F P220 C P221 R { } Xgetc I F P230 R { } Xfclose C F P240 R { } X_closeall C F { } Xfsettext C F P256 R { } Xfsetbin C F P257 R { } X_strequ C F P258 R P259 R { } X_chkserial C F P264 R { } Xfopen R U P267 I P268 R P269 R P270 N { } Xfputs C F P298 R P299 R { } Xfgets R F P304 R P305 I P306 R { } Xputchar C F P312 C { } Xugetch C F P313 C { } Xgetchar I F { } Xputs C F P314 R { } Xgets R F P315 R P316 I { } X_gv2 N F P11 R { } X_uspr C F E P16 R P17 N P18 C { } X_spr C F P21 R P22 R P23 R { } Xprintf C U P70 I P71 R { } Xfprintf C U P72 I P73 R P74 R { } X_sspr C F P75 C P76 R { } Xsprintf C U P77 I P78 R P79 R { } X_igs I F P80 R P81 R { } X_bc C F P85 C P86 C { } X_scn I F P91 R P92 R P93 R P94 R { } Xscanf I U P140 I P141 R { } Xfscanf I U P142 I P143 R P144 R { } X_sscn I F P145 R { } X_suget C F P148 C P149 R { } Xsscanf I U P150 I P151 R P152 R { } Xexit C F P29 I { } X_skipsp R F P30 R { } X_getfn R F P34 R P35 R { } X_setarg C F P39 R { } X_deffcb R F P44 R P45 R { } X_execgo C F P46 R { } X_exec C F P55 R P54 I P56 R { } Xexecl C U P59 I P60 R P61 R { } Xexecv C F P63 R P64 R { } X_unquote C F P69 R { } X_main C F P89 R { } џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/* LIBK.C MSX-C standard kernel functions (Ver 1.1) 14-Jul-87 move _exec, execl, execv from lib2 change _main 30-Oct-87 debug _getfn, _setarg, _main ver 1.10s This file contains following functions. exit _exec execl execv _main The functions whose name begin with underscore character are only used internally. */ #include "stdio.h" #include "bdosfunc.h" #pragma nonrec #define DEFFCB 0x5c /* default FCB */ #define COMLEN (*(char *)0x80) /* command length */ #define COMLIN ((char *)0x81) /* command line */ #define TPA 0x0100 #define sizeofLOADER 0x30 /* size of _chai() */ #define MAXARGS 64 #define MAXCOM 128 STATUS _chkdrv(), _setupfcb(); /* functions in lib2.c */ char *_parsefn(), *_filename(); jmp_buf _ckenv; /* kernel environment */ char _execpgm[20]; VOID exit(code) int code; { longjmp(_ckenv, code & 0x00ff | 0x0100); /* return to kernel */ } char *_skipsp(s) /* skip leading blanks */ char *s; { char c; while ((c = *s) == ' ' || c == '\t') s++; return (s); } char *_getfn(fn, buf) char *fn, *buf; { static char deffcb[12] = { 0,' ',' ',' ',' ',' ',' ',' ',' ','C','O','M' }; FCB fcb; memcpy(&fcb, deffcb, 12); fn = _parsefn(fn, &fcb); _filename(&fcb, buf); return (fn); } VOID _setarg(s) char *s; { char *d; d = COMLIN + COMLEN; if (d < TPA && COMLEN != 0) *d++ = ' '; while (d < TPA && (*d = *s)) { d++; s++; } COMLEN = d - COMLIN; } char *_deffcb(fn, fcb) char *fn; char *fcb; { memset(fcb, '\0', 16); memset(fcb+1, ' ', 11); return(_parsefn(_skipsp(fn), fcb)); } char _execgo(progname) char *progname; { VOID _chai(); auto struct { FCB fcb; char Loader[sizeofLOADER]; } chain; /* on stack */ if (_setupfcb(progname, &chain.fcb) != OK /* wild card is ERROR */ || bdos(OPEN, &chain.fcb) == BDOSERR) { fputs("Can't exec: ", stderr); fputs(progname, stderr); } else { /* set first and second defalut FCB */ _deffcb(_deffcb(COMLIN, DEFFCB), DEFFCB+16); /* relocate _chai() */ memcpy(chain.Loader, _chai, sizeofLOADER); /* let's go */ (*(VOID (*)())chain.Loader)(&chain.fcb); } } VOID _exec(progname, nargs, param) int nargs; char *progname, **param; { _getfn(progname, _execpgm); COMLEN = 0; /* set up command line arguments */ for (; nargs && *param != NULL; nargs--, param++) { _setarg(*param); } longjmp(_ckenv, 2 << 8); /* return to kernel */ } VOID execl(nargs, progname, args) int nargs; char *progname, *args; { if (nargs < 1) { fputs("execl: progname is missing", stderr); exit(1); } _exec(progname, nargs - 1, &args); } VOID execv(progname, argv) char *progname, **argv; { int nargs; char **p; for (p = argv, nargs = 0; *p++; nargs++) ; _exec(progname, nargs, argv); } VOID _unquote(s) char *s; { char *d; BOOL quote; /* unquote quoted string in-place */ d = s; if (*s == '"') { s++; quote = YES; while (*s) { switch (*s) { case '"': if (quote = !quote) /* paired quote */ *d++ = *s; s++; break; case '\\': switch (*++s) { case '\0': break; case 'N': case 'n': *d++ = '\n'; s++; break; case 'R': case 'r': *d++ = '\r'; s++; break; defalut: *d++ = *s++; break; } break; default: *d++ = *s++; break; } } *d = '\0'; } } VOID _main(s) char *s; /* command argument */ { extern VOID main(); extern VOID _closeall(); extern VOID _initrap(),_endtrap(); static char defio[] = "con"; static char wmode[] = "w"; static char pipeout[] = "*:|out"; static char pipein[] = "<*:|"; /* for next process */ static char *stdifn, *stdofn, *head; /* these must survive setjump() */ int argc; char **argv; char c, *d; BOOL quoted; int exitcode; /* exit() */ if ((exitcode = setjmp(_ckenv)) == 0) { _initrap(); stdifn = stdofn = defio; argc = 0; argv = (char **)sbrk(sizeof(char *) * MAXARGS); d = sbrk(MAXCOM); /* buffer for command line copy */ *d++ = '\0'; argv[argc++] = d; while ((c = *(s = _skipsp(s))) && c != '|' && c != ';') { if (c == '<') { /* redirect input */ s++; *d++ = '<'; stdifn = d; } else if (c == '>') { /* redirect output */ s++; if (*s == '>') { /* append output */ s++; *wmode = 'a'; } *d++ = '>'; *d++ = '>'; stdofn = d; } else { argv[argc++] = d; } s = _skipsp(s); quoted = NO; head = d; do { /* get token */ c = *d++ = *s++; if (c == '"') { quoted = ~quoted; } else if (c == '\\') /* allow whatever next to '\' */ if (*s) *d++ = *s++; } while ((c = *s) && (quoted || c != ' ' && c != '\t')); *d++ = '\0'; _unquote(head); } argv[argc] = NULL; head = s = strcpy(d, s); /* save arguments for next process */ if (*s == '|') { /* pipe line */ s++; if (*s == '|') { /* I am exec'ed and pipe'd */ s++; *wmode = 'a'; head++; } if ((c = toupper(*s)) != '@' && _chkdrv(c - '@') != ERROR) { s++; pipein[1] = *(stdofn = pipeout) = c; } else { stdofn = pipeout + 2; pipein[1] = '|'; pipein[2] = '\0'; } if (*s != ' ' && *s != '\t') { fputs("bad temporary drive ", stderr); putc(c, stderr); exit(1); } } if (fopen(stdifn, "r") == NULL) { fputs("can't open: ", stderr); fputs(stdifn, stderr); exit(1); } if (fopen(stdofn, wmode) == NULL) { fputs("can't make: ", stderr); fputs(stdofn, stderr); exit(1); } main(argc, argv); exit(0); } /* exit() or exec() comes here */ _endtrap(); _closeall(); c = *(s = head); /* reload rest of the argument */ switch(exitcode >> 8) { case 1: /* comes here from exit() */ d = stdifn; if (*d++) { if (*d-- == ':') d += 2; if (*d == '|') unlink(stdifn); } if ((exitcode & 0xff) != 0 || c == '\0') return; /* execute next program */ s++; COMLEN = 0; if (c == '|') { /* pipe */ unlink(pipein + 1); rename(stdofn, pipein + 1); _setarg(pipein); s++; } /* get filename token and skip over it */ s = _skipsp(_getfn(_skipsp(s), _execpgm)); break; case 2: /* comes here from exec() */ if (stdifn != defio) _setarg(stdifn - 1); if (stdofn != defio) if (c != '|') _setarg(stdofn - 2); else *--s = '|'; break; case 3: /* comes here when aborted */ (***(VOID (***)())0xf325)(); /* jump to system abort routine */ return; } _setarg(s); _execgo(_execpgm); } џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/**********************************************************************/ /* */ /* LINE draws a line */ /* */ /* Calls the DOGRPH routine of BASIC interpreter with; */ /* */ /* Start coordinate in ([BC],[DE]) */ /* End coordinate in (GXPOS,GYPOS) */ /* Attribute in (ATRBYT) */ /* Logical operation code in (LOGOPR) */ /* */ /**********************************************************************/ typedef char TINY; typedef char VOID; #define DOGRPH ((VOID (*)())0x593c) /* BASIC line draw routine */ #define ATRBYT (*(TINY *)0xf3f2) /* color attribute */ #define LOGOPR (*(TINY *)0xfb02) /* logical operator */ #define SCRMOD (*(TINY *)0xfcaf) /* screen mode */ #define GXPOS (*(unsigned *)0xfcb3) /* graphics cursor X */ #define GYPOS (*(unsigned *)0xfcb5) /* graphics cursor Y */ VOID calbas(); TINY line( x1, y1, x2, y2, color, log_op ) unsigned x1, y1; /* start coordinate */ unsigned x2, y2; /* end coordinate */ TINY color; /* color code */ TINY log_op; /* logical operation */ { GXPOS = x2; /* set 2nd X coordinate */ GYPOS = y2; /* set 2nd Y coordinate */ ATRBYT = color; /* set color attribute */ LOGOPR = log_op; /* set logical operator */ calbas( DOGRPH, x1, y1 ); } џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ…S‘`TФ”фT @дРZхb’ШLаТ"YП ‰jќ€“№Щфѓ‚“№Шћ€’№ŒЌ!Y “ Чщˆ*Њ†‘P ~І‚ЊЈe,Шh)ˆH*qа ˜’œŠ8žџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ! УФHMAC"џA_s# xБ љ!кP"!?w$$$$"ѕA "їA!ј"›@!BЩ?~З((ѕцO#~ љхЭ$бёцјw#6 #wыйЭ)M>2Ь>Џ2оA2Y@2 ?2г>2д>2Ш?2е>2вA2Ф?2Щ>!В? w#ќ<2?2?2?2Б?> 2б>:`B2Х>:eB2 ?>;2?<2?!"?+"юA+"?*џAљ!Лх!1хЏ23A2?2 ?2?2гA<2 ?ЭFсхљХщ!(?"&? „~ЙЬ#ў ( ѓСсхХXХщѕх*?#"?!џџ"?:?=2?сёЩ!?>2шA2чAЭ‡ў (љЭЕ(єЗђaц (ъЭЕ(хў08сw#нƒ!(?ў ( (w# ў w:?ЗШ=2?ЩЭ‡цп: ?З( Э™PаЏ2 ?ЭйPЭЉN8Щ!ђЭЄH> 2(?Э“L> Э“L7УE0ў РУ!"#?Џ2?2Ш>2Ч>=2гA*К?"О?:Х>‡0ЭьЭx 2Ч>ЭЭxў* !А"&?Щ:(?ў* >$2(?ж$2%?Э–Тў:Ъœ:%?З :Щ?= Э–!Щ?~И04#>$Nwy#њ*&?+~#ў Ъ–хЭ3Э–Э A~Зђ#~ў"(ў(ў .с*&?+"&?ѕ:?ЗЪnЭ3ёѕў(ЗЭ$ЭЉ/ёў"Ъ 0ўЪЙ9Уз/с"&?Э3:Ч>З(1:?З(&ЭмЭ$ЭЉ/"#?ыЭыі ѕЭfў: ёі@ѕЭ4ёЭўЭ– IЭx:?З(ЭBЪ–:Э 5Зѕ:?З ёђoѕц`(|ёђ#~! ‡_^#Vыщц#NѕЭм!ш ёхў;Шў Ш!(?"&?*#?|ЕФ–:?З(?Уa*!Щ?м?Nwy# іЩ!ћ?"я?!ё? q# ћЩЭxЭЗ(њхў ( ў;(ЭФѕёс:Ь>З :ё?ўV( ўM( ўD(ўXТл23AЭТЭ=УлЭ№УлХA:ХC5ХD0ХE+ХM&ХN!ХOХPХQХR ХUХVХXхѕ!ё?~ў p:Ќ@і2Ќ@ёсСЩ%No END statementД:Ъ?ў.(oў$(rў[<ажBЗј‡Хе_!ˆ^#Vы:Щ?=O~З(HЗњQ:Х>‡~8 ўx0,ўP0 &ўx8"ўP0цЙ Ы?хA##О # їсЏ~бСЩс~цЦ_Дбб<Щ!B ХеЄ!а їМћ5Ж*x}… <={‘Їз ˜  & ' ( ) @ A *ЮCIˆDCRDCzDC€DDRDD*ЦDI NARNDzND*цNIƒSEGƒ"SET‚CSCz SLzCCzАCSz№EQzАGEz ITZITzLTz0MIzаNEzPLzRKzPVCzpVSƒ>YTE3ЭALLSALL1мCj?CFzLCz LDzLIzLV1ќM/MA?MCИMPzMP2дNC2ФNZ…OMMONУOND1єPQ PrЉPDsЙPDR2ьPE*ўPIrЁPIsБPIRj/PL2фPOzPXzPYƒSEG1ЬZ'AAj'AA ADBC‚ACI"CR CX‚@DBR ECzECƒEFBƒ"EFLƒEFMƒEFSƒEFWƒGENDzEXzEY‚BFBѓIiѓISJNZСEOS„FSECTƒSEGWћIiћIУLSE‚ NDЃ NDCЄ NDIF‹ NDM„ NTRYz!OR‚ QUQXjйXX„XITM‚XT‡XTERNAL„XTRNЂDIN… LOBALkvALTvLTСFТ2FBФ9FDIFТFEТFFФ:FIDNУ3FNBТFTaM)лNQNRNCz%NC†8NCLUDEzNXz"NYrЊNDsКNDRrЂNIsВNIR"NRNXТF1ТF2ФFDEFХFNDEF’RP“RPC1кC1њM2УMPzMP2вNC2ТNZ1ђPQP2ъPE2тPOQRzSR1ЪZQD2:DAz)DA DAXrЈDDsИDDRr DIsАDIRz-DXz1DY3*HLD„OCALz5SRJXI…8ACLIB”ACRO:@OVBVIƒAMErDEGOPjOPz&OPQRАRAz9RA‚RG*іRIsЛTDRsГTIR*гUTR UTsЋUTDsЃUTIƒAGEщCHLz*HAz.HPz2LAz6LPСOPR"OP… UBLICХUSHS$USHALARиC“!EPTZ&ESЩETR(ETsMETIsEETN IMY*LjLALCZ,LCkLCAroLDјMаNCРNZz=OLzAOR№PшPEрPOY.RjRARCZ0RCkRCArgRD"ЧSTR2STz:TIz>TSШZ˜BB*оBIR4BCzEBCj7CFzBECzFEDzJEIZ6ET‚"ET3"HLD0IMZ8LAљPHLZ:RAZUB…#UBTTL*жUIzNAXzRAY„$ITLEzVSXzZXAz^XSzbYAыCHGR@ORЈRA*юRIуTHL„68080ƒ7Z80„?6502‡%COMMENT„&CREF‡'DEPHASE„(LALL†;LFCOND„)LIST…*PASS2…+PHASE†,PRINTX…-RADIX‡5REQUEST„.SALL†jfnv~щхэѕ§љсё…•™‘†Ž–„Œ”иXИЪˆшШъHh(@`8јxЊЈКŠš˜yцЪЖ=(8= Wyц_!а NУ–yў ЪфЭЭxў(ѕЭ0ёL :Ъ>ў lyУъy ц‡_ŸцW!ў Эў# #Эн УжЭxѕх>2Ф>2Ш>Э–#с:Т?З(:У>ў ёЭн ЭxУ–:Ф>е_бNў0JёyЗ("xц :Ц>‡8 xц€ zЗ +~З(KУнУ& +NxцФЩ:Ц>‡мг xц€ФЋzЗФœyЗЬœж( ёў((и++NЋёў(ФœЫNyЗРУœЭмЭ>*Э–#xцФЩ:Ь>ЗФ“zS_ЭЏyў,(пЩ!Щ>~З ":Б?~6=њ/(=Ът)=Ъі)ЭмУ‚ЭКјх*&?~#"&?ў (єoўA0ў08ў:87Ÿ}сЩЗсЩў[8ўa8№ў{0ьЏ}сЩЭ4 Э4ѕў Т‘ЭКёх*&?+"&?сЩ*&?#"&?ЩЭ4Рўa8ж ПЩЭЭx!Ъ? q# ћ!Щ?6#ЭьФ72С>ўa8ж w# yў(ЭьђИЭ0ђИGy2Щ?ЏxЩЭьђмЭ0эђмшЭ4№ў$Шў.Шў@Шў?Шў_Ш/З/ЩЭ4№ў (јў (є/З/ЩѕЗ(ў&Т‘:гAЗ ёЩёЭьЗ(њў&(іЭxЭь7ЩЭ0ШСGЩ!JA:Щ?ѕЭZ(ё2Щ?З~ЩСЩ!ŒAЭ "HA^#V!?A Џw# ћ!Щ?~ў86!Щ?N zГ(aы^#Vе#^#Vех#~=(Ы?GО # їс#~=Й 4#"?#~+ССЩ?ŸцсѕыѕеBA!?Aw# љбёw#s#rёсб(Ѓы +>ж<*!?~Щ*ѓA####~З7Ш#хЦ_"ѓAсЩ:Ъ?ў$Шў.Шў?Шў_Шў Шж;OЩѕЭW"?СѕХёЭИёШх*FAыzГЪё:EAыO бs#rыЏw# ћЩ?ў8>wG#Џw"?#w#w#w###w# љ"!?####pы*ѕAЭВм№<*?|З>Щ!ЭЄHУ?Symbol table full |’Р}“Щѕ:Ь>ЗЪ‘:dBЗЪ‘: ?ЗТ‘*?~ц@Т‘ё8>‚к>ЭNх!Щ?F#~ЭN јсЩ*HAУFѕЭBУ(G~ц8 #~ц '+~і€w#~Аw#s#r#еы*О?ыs#rбЩ~ц@w:Х>ЗЬФ#й~ц”Ф~~ЈцФ~#е^#V#уЭВФpбх*О?ыxцў {ОФ~#zОФ~б:ё?ў *?#(›Щ:?З *?~ЗђПхѕ*?#~іwxіGёсУА>эЭ1yЭ1У‚ХЭuЭS‡‡‡СУ1ХЭuЭ]‡‡‡СУ1ХЭuЭmСУ1ХЭuЭmС‡‡‡У1yѕЭuOёЭ1yУЕyѕЭ0ёЭ1УЈХЭuЭmС‡‡‡OХЭGЭuЭmСўvЬœУ1ХЭuЭmС‡‡‡ѕЭGЭuOёЭ1yУЕХЭuСЭ]‡‡‡ѕЭGЭ0ёЭ1УЈЭxЭ4ў,ФКЩЗШўШцУœўѕ0ц(ЭœёцЩўицУœЭ0zЗ(<Фœ{ЩЫэY!˜ ^#N!к ^#VыщХЭuўдœЭ'СxЭ1{ў?Юц‡‡‡У1ХЭuц8ЛФœЭ'СУ1ХЭVмœцФСЭk:У>цаЭ–#:š@З ЭP:Т>ў0Ф:У>цРГ>ЩУ1:У>ц ЦнЭ1>2У>ЩўТœ:У><ў(=ўТœ<2У>ЩХЏ2Ф>ЭЭxў( 2Ф>Э0yж,СЗРЭP:Т>ў0Ф7ЩЭ00Ф:У>‡‡‡ц8OХЭ0Э'СyЭ1УЈЭ08 :Т>ў ?0ьў(ЬЭc:У>ўФœЭP>щУ1ТОЭ00:У>ўдœц‡‡‡Ц OХЭ0СЭЧyHЭ1yУ1:™@Gц€ТЋЭ'xцGЭИТЩў е*К?ы*О?ЭВбТЩЭ##ыЭM;zЗC( <ТœxЗђœЩxЗњœЩХЭ0СЅЭGХЏ2Ф>ЭЭxў( 2Ф>Э0С:Т>ЗШў0Ьœo:Ф>З}(ў( zЗ( ЗЪœў Щ:Ф>ЗЬœЩ:Ф>ЗФœЩЭ:Т>ўР:У>ўиУœЭsЭGЭc:Т>ў( ЗФœЭE>гЭ1{ЭЕЭVдœ:У>ўФœЖ:У>=ФœЭVдœЭk>эЭ1ЭkЭvAУЖЭVдœЭkЭvѕЭЭc:Т>ў(ЗФœ>лЭ1ёўФœЭE{УЕ:У>=Фœ>эЭ1ё@УЖЭVмœЭGЭx#(0:У>ў(=ўФœЭcЭVмœЭkЭP:Т>ў(Ь:У>ўФœ>уУ1ЭkЭVмœЭx#Фœ>У1ЭkЭVмœ:Т>ў Фœ:У>ўФœ>ыУ1ХЭuўдœц‡‡‡СOЭGЭsі7ѕ:Т>ў(ѕЬсёхѕ>Ыд1ё8ё{ЬЕѕѕ:Т>ЗЬœц :У> Э1ЭkёёЩўФœ>Э1Эcёв‘BЭs:Т>ЗЬœў('ў(ѕЬ:У>ў :Ф>З Эkёy ў  :У>цУЖ:У>цУЖ>Э!ё{ЬЕЩЭ:Т>З((ў(ў(ѕЬЭc:У>цўФœ>Э1в:У>цУ1>FЭ1ЭE{УЕЭVЭGЭk:Т>ў(-ў Фœ:У>ўФœ>эЭ1yюцЦBOЭVФœЭx#ЬœЭkУ:У>ўФœУ1ЭVЭGЭk:Т>ў(хў(( :У>ўФœ У:У>ѕЭЭVмœѕЭx#ЬœЭk:У>ўЬœGёx(ёИФœ>ѕСц УЖ:Т>ўФœЩЭ:Т>З(1ўЪ :Ф>ЗЪА:У>цўЪ€дœѕЭЭkЭ :У>ўФœёУЖеЭЭc:•@ѕ:™@ѕЭЭk:Т>ЗЬœў 83:У>Oцў(>эЭ1yCЭЖЭё2™@ё2•@бУЈ:Т>ў(Ь>"Э1т:У>ўФœ>2Э1г:У>ѕЭ:Т>ў 0 ЗФœ:Ф>З /ёѕц`ЦўРд1ёцЭЖУЈФёўФœЭk:У>ўФœ>љУ1ё2У>Oцў yў@д>*Э1УЈ>эЭ1yцKЭЖУЈЭk:У>ў0:ѕЭ:Т>З :Ф>З vЭEёЭЖ{УЕ:Т>ўЬ№ў :У>ў8dё‡‡‡Ц@OУŸѕЭЭ :У>ўФœ>эЭ1ёцGУЖ:У>еѕЭЭЭkёѕц`ЦўРд1p:Т>З(.ЭŸЭёбў@{дЕЩёўФœ>:Э1УЈЭcёўФœ:У> УЖЭEЭk>6Э1KBЭёбў@{дЕЭYPyУЕ:У>ўO:Т>исёўФœ>эЭ1yцWУЖХех!Ќ@э@AFwx# ісбСЩѕ:Т>ЗФФёЩG:Ь>З7ФGх*В?#"В?сТЛЩхеХѕЭ>**я?@ЭВХд№С*я?ы:gBЗ(J`Џ))Ц0Џ) ћЦ0 ёыёѕ8!:Ќ@ц (ц€ :™@цў8(6!6"6'6*#"я?ёСбсЩЭкЬG:Ќ@і@2Ќ@:Ь>ЗФGх*В?#"В?с Щ:Ќ@цП2Ќ@х!Ќ@~ц( ЭЋ~ц@У‡~ц ЪŒеХ#~ц?GxЗЪn#~Зњ2Ѕ@>AЭ‘шц8)ў #^#Vы"О?ыХGЭ-С2Ѕ@#^#Vы"І@ы>CЭ#^#VХхы+~ў8><2@= GЄ@>B#~ љЭ˜сСУј:Ќ@ц@ѕ> >2Ѕ@>AЭ‘ёСбЬЛЭЛсЩ2Є@{2@Хх!ž@"?ЭRсСЩ:Ь>ЗФ“х*В?##"В?сШ:™@G:Ќ@ц@xЬ_:™@GЭ-*я?цƒ #"я?CЭЛBУЛxц€Х xцўњ(6!6*ы*—@##~#foы6"6'С##"я?Э-xц€(:Ќ@ц@ТбxцХ(1ЭЭCЭПBЭПСxц€Ш*В?++ы*—@#:Б?G~цќАw#s#r#ы*М?ыs#rЩCЭЛBЭЛаѕЗђ‘:–@2™@:•@З(!хХеxЭ-ц zГ ФRЏ2•@бС*—@#~2™@сёЩѕхе*я?@ЭВд№*я?ысх:gBЗ(!Џ)Ю0ХЏ) ћЦ0 ёы"я?СбсёЩХDЭкEЭкьxЭуxцЦ0ў:8ЦЩѕХехЭТ: ?З( : ?З(:?З(:?З :ё?ў Ф=:ё?ў (:ŒB<( 23AЭ=Џ23A<2 ?ЭFЭмсбСёЩ:вAЗ(5= :гAЗ :?З &>+2@>+2@:ё?ў :?ЗњxШ:ѓ?ў Ш:?ЗР:Щ>З(>D2@: ?З(>C2@:3AЗ (:?З :ё?ў Ш!?4:?ОЬ$:3AЗ :dBЗ(>ƒЭN!ё?~#Э ј: ?З @:вA=њо :гAЗ(!?~#ў08Э є>И :?З(> Э!(?~#ў (ў Фѓ> Э> O:3AЗyЪNУ“L>2?:?З(> ЭN! @Эƒ!ЃЭƒ*?#|Е+ѕ:?З(ёѕ(*ЭŒё*?#"?:?ЗШ|Е(>-ЭNЭŒЭ!Y@ЭƒЭ“>SЭNв~#ЗШЭNїіџPX 8ќхы|ЕФ>:СУ MSX.M-80 1.00 01-Apr-85 PAGE :ё?ў ШўQ(*Э>#"Э>Щ*Я>#"Я>ЩЭѕ:Ь>ЗЪ‘:ѓ?ў Т‘ёы!ѓ?"я?Э“цХO! ~*я?w!ћ?"я?СЩ '"!*В?:Ф?З( еы*Х?б:Ч?Щ:Б?ЩѕХxцў ех*М?ы*О?ЭВ"?"М?ФRсбСёЩХЭЭA>ЭЂСyў8ўШ>ЭЂCЭПBЭПyўахў *?+~ИкŠxGW>ЭЂ#######FЭП# јсЩеW>’(_x‡ ќGx‡GЭй їбЩЏЭйХxGЭй їСЩ7ЭйxЭйxх!›@~ѕ:Щ>ЗТіёw#4 Э‚N>ј2œ@ўёсЩХЭ–СЪ5!ђ ў (ёў (эў'ЪЙў"ЪЙў((:ў)(9ў+(8ў-(7ў*({ў/(5ў;(ў,(5_:Х>‡{0ў<( ў>( ў ФКЏ>>>>>> > > >ўЩ:Ш>З(кЭ!Ф>і жx(=(ЭКЦ:Ъ>ў> > wЭ‚ЕЭў)>w(З>wІ:Х>‡0Е:Ъ>ў(Ў=(ЋХУ#!ХGЭkИ ЭfИ :Эko2Т?ЭkИ ЭfИx ЭkeoЭkў" :Х>‡0}З( і€o|З(і€g>"ИСkТ?З =xж*&?+хЭŠђ 2Т?*&?++"&?ЭŠс"&?Тђ ўG0g:б>ўвђ o|ўD( ўBТђ }ў вђ |ўB(%ўD(<ўH(?ўO(ўQФК -ЭЗ ўO(ўQФК ыУf!ЭŠўB(№ж0ќЕўдЕ)З(ы#шЭЁ ўDеЭЯ ўHЮ!ЭŠШјж0)T]))_э!ЭŠШјж0ўдЕ)))_ы!ЭŠјўG0ж0ў 8ж))))_цўHШУЕ:в>З /!ХЭŠњ$!ж0ў 8жмЕO:б>=ЙмЕ<_PХЭV'ыС иСЭЁ ЭЗ ЭxУr ХЭx:Щ?2Т?=Ъј":Х>‡0:Ъ?ў$ *&?+~ў$ њ#"&?ЭЯ ЭxСУr :Щ?ў0]ЭW(X!## (O(#њЪ?О э# ї!f# ~ў 2Ы>СЗђhЭџџў;(ў (З Э4ў&Ь4ыЭ4ў љЭxУf*&?хЭ4ў# Э4ў# 7Э$ЭЉ/#~Gц ФАxці€wС+0с"&?ЭWЪ‹":Х>‡(ЭЪФ":Ы>З(7ЭИЭW( Џ*ѕAw7Э$цЃGц€x(2–@€"—@цФІ:Х>‡> ~0ѕOц yц€ю€O:Ц>Б2Ц>ёц@Зx##^#VСO(цў е#^#Vы"О?бyц yТfц€ЬЮУfхѕ7ЭИёс"?~цўB8!~ц8ѕ:Т>ЗФКё2Т>##~2У>Эx#Ь#+~+У&"#~+У&"Зњ "#^цxOB!ю" ~З( ў 2Ÿ@С УhС Уf:Ъ?ўX Эfў'ТЫ!Э4ЭЯ ў'СУo ў$ТЫ!ЭыЦ СOУfXOR AND NOT MOD SHL SHR OR EQ NE LT LE GT GE LOW HIGHNUL TYPEџ :Т>ў Р:У>ўР:С>ўAШўaЩЭfў'Ь4ЩЏG og2Ÿ@2•@2Т?2Ы>2Ќ@2­@2Ћ@2Т>2У>2Ц>=2Ъ>9" @ы*BЭВвQ6ХЭљњ2$2Ъ>Ъn$ўњŽ$Ъџ$ў8ўмw$O2ž@Э“$=Иyв%ўЪ%ў Ъ%ЭG%y2/AЭž$ў(@З :ž@ў 6ЬКХ0ХЭ“$ѕ:/AOёЭw$G:ž@ИѕЭxЭ4ў, :Ÿ@З( ёЏ2Ÿ@>žё_:/AO:ž@ў(ХЭw$У%СХxЭ“$G:/AOЭФ%Эw$УЭ#се_yцў{ ы*О?ухыYещGХУЭ#е!ј%_~бЩсСxў ЭКХЏGўщс|ўŸ2š@хЭG%y2/AЭž$њн$ўЪ0(Х:/AOЭw$фЭ‚Џ2/A:/AG2™@цO( xц€Б!Ќ@Жw*&?+N{* @љЩ2ž@бzўЬКЗЬКеУ$у|у=Ъ$yСWХx=z(zў(ўЪЭ#ў(ў( ў(ў ФК>GХЭ“$GУЭ#с"1AбzЗе е еЭЋ%"Р?ы"Ђ@ыy2/AЭž$њЂ%ж(020Aў(ў(ў( ў(ў(ЭЋ%:0A*1Aх!&‡…o>Œg~#foщХ:/AO*1AщсСФК(ХщбyцўТ$у"О?Щѕехyці€ЭЎ(цў е*О?ыЭ№%бў *—@ыЭ№%сбёЩ{ЭЎ(zУЎ(   M&W&a&k&Щ&ї&A'Ž'(š&Љ&;(E(P(](b(j(˜(Š(‚&г(п(ю(§( )")B)Эt'zДW{Е_ЩЭt'zЌW{­_ЩЭt'zЄW{Ѕ_Щ*Ђ@|/W}/_:/AOцƒ>ТЄ(УЎ(*Ђ@|/W}/_:/AOцƒ>ТЄ(УЎ(Эt'ыzГ()јыЩЭt'#+}ДШzW{_є*Ђ@:/Aц€Шyц€ќЋЩЭк&:/AБOцƒў€Р2•@Щ:/Aў (*Р?"О?*Ђ@ыЭ„'>ТЄ(УЎ(*Ђ@Э:':/Aцƒњ'(yцƒњ'( :/AЙ  =ѕ:/Aцƒ yцƒў€ 2•@:/AБOё>ТЄ(УЎ({•_zœWЩ*Ђ@Э\':/AБOцƒ> ТЄ(УЎ(Э\' ЩDM!>=( )хХс)уС0єёыЩ:/AЙФЩў ФЩ*Ђ@Щ:/AцƒШyцƒЩ*Ђ@ЭЃ':/AБOцƒ> ТЄ(УЎ(ХыzГЬКzЗBќћ'|ЈG|Е(|Зыќћ'ХЭЪ'ёЗќћ'ыыСЩ|/G}/O!>ѕЗ ѕх 0ё7>с{_zW}o|gё= ч|Зg}oЩЏO“_yšWЩ*Ђ@ХыzГ(|Е(|ЊѕеыЭЃ'ысёќћ'ыыС:/AБOцƒ> ТЄ(УЎ(>Oг$еХGУлЭ|(ЭВжЭ|(ЭВж?Э|(ыЭВŸW_ ЩЭ|( Э|(ЭВэЭ|(ы{•_zœ8тГ7(о?л:/AЙФЩЭ+)*Ђ@Щ*Ђ@\ЏW:/AO> *Ђ@]ЏW:/AO>ѕ:Ќ@і@2Ќ@ёхѕ!­@4~ц?( …o0$ёwсЩ5yцƒ(:Ќ@і2Ќ@ёсЩЭt'}Эmцƒ_ЩЭt'}Эmцƒ_ЩЭt'}Э]цƒ_ЩЭt'}ЭSцƒ_ЩЭt'}Эmцo{Эmц…_ЩЭt'}ц?ƒ_ЩцўРхе*О?ы*Р?ЭВФЩбсЩ:/A_ :ё?ў ШўO > 2ё?ЩЭm/Э–#ыxц ЪгЏ2Ш?xцG(:Б?ИТЩў х*К?ы*О?ЭВТЩс:Б?Gы*К?"О?:Ь>ЗФ-ы"В?ы :Ш?З :Ь>ЗФR:4AЗЬ *:4AЗШЏ24AЭ–ЪФЩЭ *Эм>G2Б?<24A2Ш?*Д?ЏЭ *Эм>24AG2Б?*Ж?›Э *Эм>24AG2Б?*И?‡:4AЗФm/:Б?Д?цў(‡o& х^#V*В?ЭВбиыs#rЏ2Ш?Щ*К?##фѕ:Ь>З(:Ш?З(Хех*Д?ы ЭRсбСЏ2Ш?ёЩЭмЭЭxў"(ў' nGЭkЭk*&?++хИ( Эkў ( И ѕЭ4И(яЭxЭў,( ў;(И(ў с"&? 2yў8-ЭfGЭkЭkХЭ1СЭkў ШИ ђЭfИ(Э4ў,(‡ЩЭ1Эuѕ:Т?Зњ‘ёЭЕyў,Ъa*ЩЭ–#ѕxцƒФЩёЩ€еЭмбЭ€ў"(ў'ФœO{‡(€ЏѕЭkў Ъ‘Й Э4Й GёХЗФ1ёВуСѕx‡x(ЋЭ1ёў,(КЩЭмЭ”+Э>*yў, еЭuCбУu+:iBЗ(zГШ*В?#"В?:Ь>ЗФЛь*В?:Б?GУ‘)Эі*:Ь>ЗР:ё?ўUР<2ё?ЩЭмЭ>*Э–#ЭЈyў,(яЩ:г>=њр+G2г>:д>=И 2д>:д>Ÿ<2?Э ,2е>У‚ЭЁЩ:е>ЗФЁ:г>ЗЬЁ!д>–(=Т‚4=2?<2е>У‚5ѓ:г>_ў2>аW!ж>7~ЩѕЭ ,е>0wЏ!г>4:?ЗЪ‘ё2?!д>З(4Щ:г>=–2 ?ЩЭ,zГЬЭ,zГ/(ФЏС:Ь>Э‚=И:Ь>Э‚ЗЏі7ѕ:?З(!Э–ЭW ц  ЭB(ёŸ‘ё?ŸŒ:?ЗТ”+СЏ!А"&?У,і7ѕЭц, э"&?xБ(кді7ѕЭц, меХ~ў, #"&?Эц, "&?yСсЙ ГО Џ# їЌЭКссБЭў<ФœЭfЗ Э4Эfў& Э4ы*&?+#~ў> T]ў, zГ ў ь#х*&?zГЬœы}“O|šGс:ё?ў ЩЭ–OХФœ7Э$ЭЉ/#~і@wСц ЬЮ~ц€ФАЖwyў,(жЩ @OY@;Э*&?+~#ў ( Й( (ѓюЏ#"&?ЩЭў(ТœЭkў'ТœOЭk-ЭxЭkў)ФœУ‚>2?AЏ2?;Џ2 ?5Э–Тщ- (ѕЭBФWТн-~і@wёў,РЭ–ТКц>2 ?Щ>џ2?Џ2?У‚>2?іЏ>џ:eB/o:Ь>З(ф}2eB2 ?л>€2Х>д>2Х>ЭЏ2Х>Ч>џ2в>Э”+Џ2в>zЗТœ:ё?ў Р{=јЪœўвœ<2б>ЏgkУпЭ”+zЗТœ:Ь>ЗШ{З(ў мœ:ё?ў {2?Э№ЭFУ$Э–Тœѕ:Щ?ў8ЭФ>!У?w#"?:Ь>ЗФRёў,(зЩ: ?ЗТКЭ*&?+ЭPЗ(ЭйPУг=2 ?*&?~#"&?ў!0єЩЭў(ТœЭkў'ТœЭ–Тœў'ТœЭkў)ТœЭ‚:Ь>ЗР:Щ?ў8>Ъ?!5AG~ЗТАw# љpЩЭm/Эў/ТœЭ–Фe/ў/ТœЭ‚Э$#~цаТАх~і$wЭ *с+"К?>2Б?!"В?У)ѕ>2Щ?ёЩ:Ф?ЗШСУП€Э– ѕЗеЭ$ЭЉ/б~Вw#~цd ~цГwёў,(оЩЭœііwЭАэ~цўBиЏwхЏ#w#w#wсЩЭ–Э~‡дК#~ў(ўФК€Уy/"#?Э0:ё?2?ўUШxц€ТЋxі 2?*#?"?ЭўыxУпЭ–#:š@ЗШУФ"#?~і€w|2?Э0xц€ТЋ*#?ЭЉ/#~ц”ТА~ц@Аі w#s#r#еы*О?ыs#rсУпѕЭ]MЏ2Щ>:вAЗФ2:г>ЗФ02ё!Ь>4~=Тч0!5A~З ! @~З !­B#5A~#ў (ў ( З( ў ( щ!.Ap#"?ЭRЭ *!кP"ѓAЭь8"?~цw#~ц@Тє1~ц(ш#^#VЭRм*И?ы ЭR *Ж?ы{ВФRУj*&?ѕд–#еХЭ№!џџ"?"?}2?Э$!|2Эƒ!?44!JA>Э‚=Э:?ў8д$!?44!q2Эƒ!ŒA>Э‚=ЭЭ<2*Э>|Е(хЭŒс:ŒB<23AФŒЏ23A!е1ЭX2!и1ЭX2*Я>|Е('>,ЭN:ŒB<>,Ф“LхЭŒс:ŒB<23AФŒЏ23A!ш1ЭX2Э<2Сбё0Э-ЭR*›@|ўј(ЏЭйђЭRЭП:dBЗ(ЭN>€ЭNЭ€MЭРMУNo Fatal error(s) Warning(s):Б?GЭRУЊ0ЭU2!2ЭX2Эд.REPT/IRP/IRPC/MACROUnterminated ЭU2!e2ЭX2Эд> Э> Э:ŒB<Ш> Э“L> У“L!"2хЭƒс:ŒB<ШУЄHConditionalSymbols: Macros: !тџ9ы*BЭВвQ6:вAЗ!"ћA"§A*аA *B+<2вAЏ2гA2нAы*їA$ЭВ0ы"аAЩ%ыхЭ<=сшЭР~З<№=ѕц(:нA<2нAёцюР:нAЗШ:нA=2нA<Щ#~ў ц:нAЗ р:чAЗ кё7Щ"аA:вA=2вAЩЭ4ў& .*&?~ў ($ў ( хХЭ–ЭW3Сс"&? >&2дAmў& :дAЗ >&Э/<ЗјѕЏ2дAёЩ*пA~З(Щ?О O+О  їxі€ПЩ+~ў0њн:шAЗР*щAР~З(Щ?О O+О  їЏxЩ+~ў0њп<Щ*&?хЭ–ѕЭW3 (Gёсѕ~#ў (ў хЭK3сяxЭK3ёGѕёТ?3ў&Т?3Уxёсѕ"&?Э4ў ( ў (ЭxЭK3ыЭь дЭьње3ЭK3ѕЭ4ў;(ЭЗ<ЭK3ў Ъ<Э4ѓЭЗ<ЭЗ<ў (љў (ѕЗЭо<"§AЪ<ў Ъ<> Э/<У<хѕ:шAЗ(еы*ѕA4бёцѕ‡њž4*уA~З($ёХG+( ~е/_џбѓ~З(=G+~(Э6єё+<=(+њ~сЩСсЩ>.Э6Э6ёц?Х*№AO DЭкEЭкСсЩхЭ–сФж4ѕЩ?Ъч5ў%(%ў,Ъё5ў Ъё5ў Ъё5ў;Ъё5ў!Ьkў Ъ6w+Э4У"С5ХЗ5ХЭ”+ы:ё?ў F:б>ў(7ў(іџPX 8ќхы|ЕФH5>:СQЏ)Ю0Эš5>ѕЏ) ћЦ0Эš5ё= юDЭ‡5EЭ‡5 Р>0%xЭ5xцЦ0ў:8Ц ў0ШOў:8>0ЭЌ5yх*С5w+"С5сЩСЭx*С5У 5Ow+Э4Й(ў (Bђw+Э4Й(ъУш4(w+У 5Ъ 5њі5У5Т5б{•=Сы*&?+~ў Ьxў ЬxыЩ(фЭипѕх!Њ?ЭВ0#6 +ысёЩсёЩЭЌ3ў&Ъ.6ў:ЪЌ3ў!аў ШѕЭB(ЭЪ‘ёУЌ3!W6У—?Stack overflow, try more P switches Э”+:ё?ў (ы"еAЭ†2СбсŸ6Хе> УaСš6ХЭ–ў:Ь–ЭЭ2( (?Э/<ў їЩЏЭ/<Э<Сбс!Лхе*ћAхх*еAх!Лх!р6хХЩЭ.7СсбЭВ !:оAЗ xБ *аAхЭ;сЭ 3Џ2оAбе*зAхыщеЭe<З(*(?Эz<Э6ў іхХ*йAх*лAх*зAщбс"зAс"лAс"йAыщ bkЃ:вAЗЪи2оAСсб_7ехХЏ2нAУ‚УК:оAЗ(TСлХЭ–ў:Ь–ЭРЗ№Oц yц yц yц@ Щ:нA=2нAЩ:нA<2нAЩ:нAЗР:г>ЗШУЙ+:нAЗР#~ўШ>џУ,Сбс!ЛхеХЩЗѕЭ†2"пAЭО4O:ё?ў (*пAЭ 3ёЩy6+ў,Фœёѕ()Эkў<Фœёwхѕ+:ё?ў cёѕG(Эр4 ў (Sў>(RђЭfж<2цAЬ4вЭ4ў (3ѕ:цAЗ(ёd8еў Шў Шў;Шў,Шбёў<( ў> ( w+Ц:цAЗ ЭФ6+ЭЕ2xЗФœёс"сA&i"еAСбсŠ8Ә6ЏТ>УУ7Сš6Х*§A>2шAхЭ.6ѕЭЭ2('ёсў Ъ4ў;Ъ4ў'( ў"(ЭЌ3щGЭ3ў Ъ4И(яѓёс"§AЏЭ/<Э<Сбс!Лхе*ћAхх*сAх*еAх!Лх!ѓ8хХЩЭ.7Ссб>2шA"уAсЭВ :оAЗ xБ *уA##~ў#0њ+Уј6ыеЭe<З((?Эe<ЗќL4Эо<Э6ў ях*уAхХУ"7 bkбМЭў ЪœOЭ“LЭkў (Э“LЙ ѓ> Э“L> Э“L:ё?ў РУ‚Эў Ъœ2хAOЭ4ў (ЙЪ‚ѓсбС™9Ә6Сš6Х!(?:хAO~Й(ў Ш#іСбс!ЛхеХЩЗЭї#"ЮA~і(wЭ†2"пAХЭО4С ў,(іЏw+2чA2эAw#wЭЈ;б(s#rы"ћAы*ћAеыЭŸ;бs#r{і_Щеѕ*§Aы{цЬГ;*ѕAёѕw{цў(ЬT<ы"§AёбЩ{цр_ЭЈ;zГЪГ;Щеы*ѕAы}ц }іoы~ыбЩЭe<ѕеы{цў(ЬT<ыбёЩы{цр_еЭЈ;{ВСШЏw#w*ѕAs#rХЭ;С*ћAыЭŸ;q#pЩ*§Aеы{цўЬв<*ѕAы"§Aы~ыбЩ{цр_ЭŸ;{і_Щеѕы{цў(ЬT<ыёбЩ*їAы*аA:вAЗ *B%ЭM;к”zЗЪ”W{_е*ѕAы*їAЭM;BKб*їAы"їAxБ(+w ѕ"ѕAЩЭ<=УЦ;е*!?ы*ѕAЭM;к”zўк”W{_сХх*ѕAыуЭM;BKб*ѕAх*!?х"ѕA "їAсбxБ( w#ѕСЩ2™@2š@O!^#V#хХЭЁ=Сс ђ:™@ЙФЩХzГЪ‘ых^#V{В їс}ДШЭЭ=++V+^{В(№Џw#w+++хн F#"?~ц@Р#~ц€ФЏ>~#^#VХхGц +ХЭ›>ё_ц€ d{ц e{ц@Фk>{ц (]{ц_!~ЭNЭV>сС###Х~#ЭNљС> ћ!™@5 :š@wЭ!?4:?ОЬ$*?~і@wЩ> > УN>*Ъ>MЪ>CЪ>UЭNЊеХ*?х#{цG#^#V#е^#Vы"О?бЭ-с"?#~ц ФRСб>IУN!ё?"я?Э“*я?6!ё?УƒХх~цG#^#VЭRсСЩQAQBQCQDQEQHQLQMbSPcPSWQIQR bBCbDEbHLbAFjIXDjIYdrNZqZrNCqPrPOrPERELCRFPRNP?Command error?File not found?Can't enter file~цШЭ“L#УЄH!sHУОH!‚HУОH!’HЭЄHУпH"C*+љ++"ZB*Cх:fBЗТ2]B*ZBљЭ№K:!Hў ЪпHЏ2jB2aB2hB2gB2`B2dB2eB2cB2iB<2bBЏHХЏ2YBЭ†JиCЭiJCў Т.I>€2YBх!kBЭ]Jс> 2C2 CЏ2Cyж,З2cBТXI:YBю€2cBЭ†JиC:dBЗЪeICЭiJC:C2_Bж 2^BТ‚I:YBЦ@2YBх!ŒBЭ]Jсyў=7РЭ†Jў 7РЭiJCЗњЊIў 7Шх!­BЭ]Jс:YB‡!kBм=J‡!ŒBѕ:dBЗЪкI•BC>ѕ ё=ТаIём=J:aBЗТяI:^BЗТяI:_B2aBЭѕ Эё_ЭЏ2€Э)MЭЪLЭрLс*ZB##:bB2]BG7ŸхебсЩЉс5Z`ѕC ~ЗТWJЗњWJw# ТMJёЩ #УMJ w#Т`JЩ:\BЗШх! C~ў Т„Jцw#ТzJсЩЭЯKў:7>ТЊJxЗЪ†JыЭ|LOx=yТЫJў[аўAиж@ы2CдЯKxў кИJ ХыеCЪKЭ|LУПJўTТфJЭ|LўT7РЭ|LўY7РŸыЗУЊJўLТўJЭ|LўS7РЭ|LўT7Р>ўыЗУЊJўR7РЭ|LўD7РўR7Р>ўыЗУЊJсС> к%Kы6 #=ђKыyж.2\BЬЯKые Cxўк=KЪJKЭ|LУ>Kсyж/ЗyРЭ|LўLТcK2aBЭ|LOУKKўNТnK2hBУ\KўOТyK2gBУ\KўRТ„K2cBУ\KўCТ’K2dB2aBУ\KўMТK2iBУ\KўIТЈK2`BУ\KўXТЕK>џ2eBУ\KўZТСKЏ2`BУ\KўP7Р:bB<2bBУ\KхЭ|Lў[вэKў0кэKўAвщKў:вэKУвKOбЩХе!€~6ЗGЪL#~ў ТLУњK Hx+#ЪL~УL2fBУ?LЏ2fB:]BЗТ2LЭРL>*Э“L HЭ> Э“LбС: H!!Hх"qH…o>Œg6 #> wс:]BЗТ{Lх!!H~ў ЪzLжaкvLўвvLЦAw#УcLсЩ~#ў Ъ|Lў Ъ|Lў ТКL#"qHЩёхеХѕц_ЭёСбсЗЩх*qH+~цў #Ь№K#"qH+~сў7ШЗЩ> Э“L> У“LѕХехD!"D!ŒB:aBУѓLѕХехC!"C!kB:cBЗЪ$MхЭс~Зњ$MЭFMеЭбеЭ<ЪЛHсЭFMЭ<ЪЕHсбСёЩѕХех!"FFЭ!­B~Зњ$MУMхе Џw#ТOMwсбЩѕе­BЗњ}MХхеFЭбХхЭсСбёЩѕ:aBЗЪUJе:ŒB<Ъ}Mњ N> ЭN> ЭN>ЭNх*DDХŒBЭѓMDЭСсŒBУtMѕ:cBЗЪUJе:kBЗњ}M>Э‚Nх*CCХkBЭѓMCЭСсkBУtM|ЕШ}цЪўMЦ€ц)„`iУRN> ЭN> ЭN> ЭNбёЩѕ:aBЗЪUJ:ŒB<Ъ’LњњNухе*D|ўЬJN#"DDбёѕцwёсЩD!ŒB>ѕХехЭбеЭЗТFOбс€ ыСё=ТRN!ЩC>!kBУRNѕ:cBЗЪUJ:kBЗњ’Lухе*C|=ЬwN#"CCбёwсЩ:­B<ЪЅLњ5Oхе*F|ўЬЪN#"FFбУИLF>ѕеХЭ­BЭСб=ЪѓN!€ыё=ТЯN!Щё>УяNёхеХѕц_!jBў вOж ЪO<ЪO~=w4{ў Т-O> ЭN~цТOУ0OЭёСбсЩхеХЭСбсў7ШЗЩ!fOЭЄHбЦ@ў@ТWO> Э“L!lOЭЄHЭРLУDISK FULLхеХы!rOў:>Т1Pж@ўв•Pw#2\Bў.Ъ\Pў!к\Pw#Т5P2\Bў.ЪcPў!вJPУcP6 #Т\P:\Bў.ЪpPw#ТpPp–OЭrOЭўџЪ•PЏ2’O2“OСбсЩхеХ:“O=ђРP–OЭrOЭЦџкеP!–O"”O>2“O*”O~ўТаP7УеP#"”OЗСбсЩЩ Microsoft CONTENTS CHAPTER 1 Introduction CHAPTER 2 MACRO-80 Assembler 2.1 Running MACRO-80 2.2 Command Format 2.2.1 Devices 2.2.2 Switches 2.3 Format of MACRO-80 Source Files 2.3.1 Statements 2.3.2 Symbols 2.3.3 Numeric Constants 2.3.4 Strings 2.4 Expression Evaluation 2.4.1 Arithmetic and Logical Operators 2.4.2 Modes 2.4.3 Externals 2.5 Opcodes as Operands 2.6 Pseudo Operations 2.6.1 ASEG 2.6.2 COMMON 2.6.3 CSEG 2.6.4 DB - Define Byte 2.6.5 DC - Define Character 2.6.6 DS - Define Space 2.6.7 DSEG 2.6.8 DW - Define Word 2.6.9 END 2.6.10 ENTRY/PUBLIC 2.6.11 EQU 2.6.12 EXT/EXTRN 2.6.13 INCLUDE 2.6.14 NAME 2.6.15 ORG - Define Origin 2.6.16 PAGE 2.6.17 SET 2.6.18 SUBTTL 2.6.19 TITLE 2.6.20 .COMMENT 2.6.21 .PRINTX 2.6.22 .RADIX 2.6.23 .Z80 2.6.24 .8080 2.6.25 .REQUEST 2.6.26 Conditional Pseudo Operations 2.6.26.1 ELSE 2.6.26.2 ENDIF 2.6.27 Listing Control Pseudo Operations 2.6.28 Relocation Pseudo Operations 2.6.28.1 ORG Pseudo-op 2.6.29.2 LINK-80 2.6.29 Relocation Before Loading 2.7 Macros and Block Pseudo Operations 2.7.1 Terms 2.7.2 REPT-ENDM 2.7.3 IRP-ENDM 2.7.4 IRPC-ENDM 2.7.5 MACRO 2.7.6 ENDM 2.7.7 EXITM 2.7.8 LOCAL 2.7.9 Special Macro Operators and Forms 2.8 Using z80 Pseudo-ops 2.9 Sample Assembly 2.10 MACRO-80 Errors 2.11 Compatability with Other Assemblers 2.12 Format of Listings 2.12.1 Symbol Table Listing CHAPTER 3 CREF-80 Cross Reference Facility CHAPTER 4 LINK-80 Linking Loader 4.1 Running LINK-80 4.2 Command Format 4.2.1 LINK-80 Switches 4.2.2 Sample Link 4.3 Format of LINK Compatible Object Files 4.4 LINK-80 Error Messages 4.5 Program Break Information CHAPTER 5 LIB-80 Library Manager 5.1 LIB-80 Commands 5.1.1 Modules 5.2 LIB-80 Switches 5.3 LIB-80 Listings 5.4 Sample LIB Session 5.5 Summary of Switches and Syntax APPENDIX A TEXDOS Operating System A.1 TEXDOS Command Files A.2 MACRO-80 A.3 CREF-80 A.4 LINK-80 CHAPTER 1 INTRODUCTION MACRO-80 is a relocatable macro assembler for 8080 and z80 microcomputer systems. It assembles 8080 or z80 code on any 8080 or z80 development system running the CP/M, ISIS-II, TRSDOS or TEKDOS operating system. The MACRO-80 package includes the MACRO-80 assembler, the LINK-890 linking loader, and the CREF-80 cross reference facility. CP/M versions also include the LIB-80 Library Manager. MACRO-80 resides in approximately 14K of memory and has an assembly rate of over 1000 lines per minute. MACRO-80 incorporates almost all "big computer" assembler features without sacrificing speed or memory space. The assembler supports a complete Intel standard macro facility, including IRP, IRPC, REPEAT, local variables and EXITM. Nesting of macros is limited only by memory. Code is assembled in relocatable modules that are manipulated with the flexible linking loader. Conditional assembly capability is enchanced by an expanded set of conditional pseudo operations that include testing of assembly pass, symbol definition, and parameters to macros. Conditionals may be nested up to 255 levels. MACRO-80's linking loader provides a versatile array of loader capabilities, which are executed by means of easy command lines and switches. Any number of programs may be loaded with one command, relocatable modules may be loaded in user-specified locations, and external references between modules are resolved automatically by the loader. The loader also performs library searches for system subroutines and generates a load map of memory showing the locations of the main program and subroutines. The cross reference facility that is included in this package supplies a convenient alphabetic list of all program variable names, along with the line numbers where they are referenced and defined. This manual is designed to serve as a reference guide to the MACRO-80 package. It defines, explains and gives examples of all the features in MACRO-80 in terms that should be understandable to anyone familiar with assembly language programming. It is not intended, however, to serve as instructional material and presumes the user has substantial knowledge of assembly language programming. The user should refer to instructional material available from a variety of sources for additional tutorial information. CHAPTER 2 MACRO-80 ASSEMBLER 2.1 RUNNING MACRO-80 The command to run MACRO-80 is M80 MACRO-80 returns the prompt "*", indicating it is ready to accept commands. NOTE If you are using the TEKDOS operating system, see Appendix A for proper command formats. 2.2 COMMAND FORMAT A command to MACRO-80 consists of a string of filenames with optional switches. All filenames should follow the operating system's conventions for filenames and extensions. The default extensions supplied by Microsoft software are as follows: File CP/M ISIS-II Relocatable object file REL REL Listing file PRN LST MACRO-80 source file MAC MAC FORTRAN source file FOR FOR COBOL source file COB COB Absolute file COM 2.2.1 Devices Any field in the MACRO-80 command string can also specify a device name. The default device name with the CP/M operating system is the currently logged disk. The default device name with the ISIS-II operating system is disk drive 0. The command format is: dev:objfile,dev:lstfile=dev:source file The device names are as follows: Device CP/M ISIS-II Disk drives A:, B:, C:,... :F0:, :F1:, :F2:, ... Line printer LST: LST: Teletype or CRT TTY: TTY: High speed reader HSR Examples: *,TTY:=TEST Assemble the source file TEST.MAC and list the program on the console. No object code is generated. Useful for error check. *SMALL,TTY:=B:TEST Assemble TEST.MAC (found on disk drive B), place the object file in SMALL.REL and list the program on the console. 2.2.2 Switches A switch is a letter that is appended to the command string, preceded by a slash. It specifies an optional task to be performed during assembly. More than one switch can be used, but each must be preceded by a slash. (With the TEKDOS operating system, switches are preceded by commas or spaces. See Appendix A.) All switches are optional. The available switches are: Switch Action O Octal lising H Hexadecimal listing (default) R Force generation of an object file L Force generation of a lising file C Force generation of a cross reference file Z Assemble Z80 opcodes (default for Z80 operating systems) I Assemble 8080 opcodes (default for 8080 operating systems) P Each /P allocates an extra 256 bytes of stack space for use during assembly. Use /P if stack overflow occurs during assembly. Otherwise, not needed. M Initialize Block Data Areas. If the programmer wants the area that is defined by the DS (Define Space) pseudo-op initialized to zeros, then the programmer should use the /M switch in the command line. Otherwise, the space is not guaranteed to contain zeros. That is, DS does not automattically initialize the space to zeros. X Usually used to suppress the listing of false conditionals. The following paragraph describes the /X switch more completely but in very technical terms. The presence or absence of /X in the command line sets the initial current mode and the initial value of the default for listing or suppressing lines in false conditional blocks. /X sets the current mode and initial value of default to not-to-list. No /X sets current mode and initial value of default to list. Current mode determines whether false conditionals will be listed or suppressed. The initial value of the default is used with the .TFCOND pseudo-op so that .TFCOND is independent of .SFCOND and .LFCOND. If the program contains .SFCOND or .LFCOND, /X has no effect after .SFCOND or .LFCOND is encountered until a .TFCOND is encountered in the file. So /X has an effect only when used with a file that contains no conditional listing psuedo-ops or when used with .TFCOND. Examples: *=TEST/L Assemble TEST.MAC, places the object file in TEST.REL and a listing file in TEST.PRN. (With ISIS-II, the listing file is TEST.LST.) *=TEST/L/O Same as above, but listing file addresses will be in octal. *LAST=TEST/C Assemble TEST.MAC, place the object file in LAST.REL and cross reference file in TEST.CRF. (See Chapter 3.) 2.3 FORMAT OF MACRO-80 SOURCE FILES Input source lines of up to 132 characters in length are acceptable. MACRO-80 preserves lower case letters in quoted strings and comments. All symbols, opcodes and pseudo-opcodes typed in lower case will be converted to upper case. If the source file includes line numbers from an editor, each byte of th eline number must have the high bit on. Line numbers from Microsoft's EDIT-80 are acceptable. 2.3.1 Statements Source files input to MACRO-80 consist of statements of the form: [label:[:]] [operator] [arguments] [;comment] With the exception of the ISIS assembler $ controls (see Section 2.11), it is nog necessary that statements begin in column 1. Multiple blanks or tabs may be used to improve readability. If a label is present, it is the first item in the statement and is immediately followed by a colon. If it is followed by two colons, it is declared as PUBLIC (seen ENTRY/PUBLIC, Section 2.6.10). For example: FOO:: RET is equivalent to PUBLIC FOO FOO: RET The next item after the label, or the first item on the line if no label is present, is an operator. An operator may be an 8080 mnemonic, pseudo-op, macro call or expression. The evaluation is as follows: 1. Macro call 2. Mnemonic/Pseudo operation 3. Expression Instead of flagging an expression as an error, the assembler treats it as if it were a DB statement (see Section 2.6.4). The arguments following the operator will, of course, vary in form according to the operator. A comment always begins with a semicolon and ends with a carriage return. A comment may be a line by itself or it may be appended to a line that contains a statement. Extended comments can be entered using the .COMMENT pseudo operation (see Section 2.6.20). 2.3.2 Symbols MACRO-80 symbols may be of any length, however, only the first six characters are significant. The following characters are legal in a symbol: A-Z 0-9 $ . ? @ With Microsoft's 8080/Z80/8086 assemblers, the underline character is also legal in a symbol. A symbol may not start with a digit. When a symbol is read, lower case is translated into upper case. If a symbol reference is followed by ## it is declared external (see also the EXT/EXTRN pseudo-op, Section 2.6.12). 2.3.3 Numeric Constants The default base for numeric constants is decimal. This may be changed by the .RADIX pseudo-op (see Section 2.6.22). Any base from 2 (binary) to 16 (hexadecimal) may be selected. When the base is greater than 10, A-F are the digits following 9. If the first digit of a number is not numeric the number must be preceeded by a zero. Numbers are 16-bit unsigned quantities. A number is always evaluated in the current radix unless one of the following special notations is used: nnnnB Binary nnnnD Decimal nnnnO Octal nnnnQ Octal nnnnH Hexadecimal X'nnnn' Hexadecimal Overflow of a number beyond two bytes is ignored and the result is the low order 16-bits. A character constant is a string comprised of zero, one or two ASCII characters, delimited by quotation marks, and used in a non-simple expression. For example, in the statement DB 'A' + 1 'A' is a character constant. But the statement DB 'A' uses 'A' as a string because it is in a simple expression. The rules for character constant delimiters are the same as for strings. A character constant comprised of one character has as its value the ASCII value of that character. That is, the high order byte of the value is zero, and the low order byte is the ASCII value of the character. For example, the value of the constant 'A' is 41H. A character constant comprised of two characters has as its value the ASCII value of the first character in the high order byte and the ASCII value of the second character in the low order byte. For example, the value of the character constant 'AB' is 41H*256+42H 2.3.4 Strings A string is comprised of zero or more characters delimited by quotation marks. Either single or double quotes may be used as string delimiters. The delimiter quotes may be used as characters if they appear twice for every character occurrence desired. For example, the statement DB "I am ""great"" today" stores the string I am "great" today If there are zero characters between the delimiters, the string is a null string. 2.4 EXPRESSION EVALUATION 2.4.1 Arithmetic And Logical Operators The following operators are allowed in expressions. The operators are listed in order of precedence. NUL LOW, HIGH *, /, MOD, SHR, SHL Unary Minus +, - EQ, NE, LT, LE, GT, GE NOT AND OR, XOR Parantheses are used to change the order of precedence. During evaluation of an expression, as soon as a new operator is encountered that has precedence less than or equal to the last operator encountered, all operations up to the new operator are performed. That is, subexpressions involving operators of higher precedence are computed first. All operators except +, -, *, / must be separated from their operands by at least one space. The byte isolation operators (HIGH, LOW) isolate the high or low order 8 bits of an Absolute 16-bit value. If a relocatable value is supplied as an operand, HIGH and LOW will treat it as if it were relative to location zero. 2.4.2 Modes All symbols used as operands in expressions are in one of the following modes: Absolute, Data Relative, Program (Code) Relative or COMMON. (See Section 2.6 for the ASEG, CSEG, DSEG and COMMON pseudo-ops.) Symbols assembled under the ASEG, CSEG (default), or DSEG pseudo-ops are in Absolute, Code Relative or Data Relative mode respectively. The number of COMMON modes in a program is determined by the number of COMMON blocks that have been named with the COMMON pseudo-op. Two COMMON symbols are not in the same mode unless they are in the same COMMON block. In any operation other than addition or subtraction, the mode of both operands must be Absolute. If the operation is addition, the following rules apply: 1 At least one of the operands must be Absolute. 2 Absolute + = If the operation is subtraction, the following rules apply: 1 - Absolute = 1 - = Absolute where the two s are the same. Each intermediate step in the evaluation of an expression must conform to the above rules for modes, or an error will be generated. For example, if FOO, BAZ and ZAZ are three Program Relative symbols, the expression FOO + (BAZ -ZAZ) if legal because the first step (BAZ - ZAZ) generates an Absolute value that is then added to the Program Relative value, FOO. 2.4.3 Externals Aside from its classification by mode, a symbol is either External or not External. (See EXT/EXTRN, Section 2.6.12.) An External value must be assembled into a two-byte field. (Singe-byte Externals are not supported.) The following rules apply to the use of Externals in expressions: 1. Externals are legal only in addition and subtraction. 2. If an External symbol is used in an expression, the result of the expression is always External. 3. When the operation is addition, either operand (but not both) may be External. 4. When the operation is subtraction, only the first operand may be External. 2.5 OPCODES AS OPERANDS 8080 opcodes are valid one-byte operands. Note that only the first byte is a valid operand. For example: MVI A,(JMP) ADI (CPI) MVI B,(RNZ) CPI (INX H) ACI (LXI B) MVI C,MOV A,B Errors will be generated if more than one byte is included in the operand -- such as (CPI 5), LXI B,LABEL1 or (JMP LABEL2). Opcodes used as one-byte operands need not be enclosed in parentheses. NOTE Opcodes are not valid operands in Z80 mode. 2.6 PSEUDO OPERATIONS 2.6.1 ASEG ASEG ASEG sets the location counter to an absolute segment of memory. The location of the absolute counter will be that of the last ASEG (default is 0), unless an ORG is done after the ASEG to change the location. The effect of ASEG is also achieved by using the code segment (CSEG) pseudo operation and the /P switch in LINK-80. See also section 2.6.28 2.6.2 COMMON COMMON // COMMON sets the location counter to the selected common block in memory. The location is always the beginning of the area so that compatibility with the FORTRAN COMMON statement is maintained. If is omitted or consists of spaces, it is considered to be blank common. See also Section 2.6.28. 2.6.3 CSEG CSEG CSEG sets the location counter to the code relative segment of memory. The location will be that of the last CSEG (default is 0), unless an ORG is done after the CSEG to change the location. CSEG is the default condition of the assembler (the INTEL assembler defaults to ASEG). See also Section 2.6.28. 2.6.4 DB - Define Byte DB [,...] DB [...] The arguments to DB are either expressions or strings. DB stores the values of the expressions or the characters of the strings in successive memory locations beginning with the current location counter. Expressions must evaluate to one byte. (if the high byte of the result is 0 or 255, no error is given; otherwise, an A error results.) Strings of three or more characters may not be used in expressions (i.e., they must be immediately followed by a comma or the end of the line). The characters in a string are stored in the order of appearance, each as a one-byte value with the high order bit set to zero. Example: 0000' 41 42 DB 'AB' 0002' 42 DB 'AB' AND 0FFH 0003' 41 42 43 DB 'ABC' 2.6.5 DC - Define Character DC DC stores the characters in in successive memory locations beginning with the current location counter. As with DB, characters are stored in order of appearance, each as a one-byte value with the high order bit set to zero. However, DC stores the last character of the string with the high order bit set to one. An error will result if the argument to DC is a null string. 2.6.6 DS - Define Space DS DS reserves an area of memory. The value of gives the number of bytes to be allocated. All names used in must be previously defined (i.e., all names known at that point on pass 1). Otherwise, a V error is generated during pass 1 and a U error may be generated during pass 2. If a U error is nog generated during pass 2, a phase error will probably be generated because the DS generated no code on pass 1. 2.6.7 DSEG DSEG DSEG sets the location counter to the Data Relative segment of memory. The location of the data relative counter wil be that of the last DSEG (default is 0), unless an ORG is done after the DSEG to change the location. See also Section 2.6.28. 2.6.8 DW - Define Word DW [,...] DW stores the values of the expressions in successive memory locations beginning with the current location counter. Expressions are evaluated as 2-byte (word) values. 2.6.9 END END [] The END statement specifies the end of the program. If is present, it is the start address of the program. If is not present, then no start address is passed to LINK-80 for that program. NOTE If an assembly language program is the main program, a start address (label) must be specified. If not, LINK-80 will issue a "no start address" error. If the program is a subroutine to a FORTRAN program (for example), the start address is nog required because FORTRAN has supplied one. 2.6.10 ENTRY/PUBLIC ENTRY [,...] or PUBLIC [,...] ENTRY or PUBLIC declares each name in the list as internal and therefore available for use by this program and other programs to be loaded concurrently. All of the names in the list must be defined in the current program or a U error results. An M error is generated if the name is an external name or common-blockname. 2.6.11 EQU EQU EQU assigns the value of to . If is external, an error is generated. If already has a value other than , an M error is generated. 2.6.12 EXT/EXTRN EXT [,...] or EXTRN [,...] EXT or EXTRN declares that the name(s) in the list are external (i.e., defined in a different program). If any item in the list references a name that is defined in the current program, an M error results. A reference to a name where the name is followed immediately by two pound signs (e.g., NAME##) also declares the name as external. 2.6.13 INCLUDE INCLUDE The INCLUDE pseudo-op applies only to CP/M versions of MACRO-80. The pseudo-ops INCLUDE, $INCLUDE and MACLIB are synonymous. The INCLUDE pseudo-op assembles source statements from an alternate source file into the current source file. Use of INCLUDE eliminates the need to repeat an often-used sequence of statements in the current source file. is any valid specification, as determined by the operating system. Defaults for filename extensions and device names are the same as those in a MACRO-80 command line. The INCLUDE file is opened and assembled into the current source file immediately following the INCLUDE statement. When end-of-file is reached, assembly resumes with the statement following INCLUDE. On a MACRO-80 listing, a plus sign is printed between the assembled code and the source line on each line assembled from an INCLUDE file. (See Section 2.12.) Nested INCLUDEs are not allowed. If encountered, they will result in an objectionable syntax error 'O'. The file specified in the operand field must exist. If the file is not found, the error 'V' (value error) is given, and the INCLUDE is ignored. 2.6.14 NAME NAME ('modname') NAME defines a name for the module. Only the first six characters are significant in a module name. A module name may also be defined with the TITLE pseudo-op. In the absence of both the NAME and TITLE pseudo-ops, the module name is created from the source file name. 2.6.15 ORG - Define Origin ORG The location counter is set to the value of and the assembler assigns code starting with that value. All names used in must be known on pass 1, and the value must either be absolute or in the same area as the location counter. 2.6.16 PAGE PAGE [] PAGE causes the assembler to start a new output page. The value of , if included, becomes the new page size (measured in lines per page) and must be in the range 10 to 255. The default page size is 50 lines per page. The assembler puts a form feed character in the listing file at the end of a page. 2.6.17 SET SET SET is the same as EQU, except no error is generated if is already defined. 2.6.18 SUBTTL SUBTTL SUBTTL specifies a subtitle to be listed on the line after the title (see TITLE, Section 2.6.19) on each page heading. is truncated after 60 characters. Any number of SUBTTLs may be given in a program. 2.6.19 TITLE TITLE TITLE specifies a title to be listed on the first line of each page. If more than one TITLE is given, a Q error results. The first six characters of the title are used as the module name unless a NAME pseudo operation is used. If neither a NAME or TITLE pseudo-op is used, the module name is created from the source filename. 2.6.20 .COMMENT .COMMENT The first non-blank character encountered after .COMMENT is the delimiter. The following comprises a comment block which continues until the next occurence of is encountered. For example, using an asterisk as the delimiter, the format of the comment block would be: .COMMENT * any amount of text entered here as the comment block . . . * ;return to normal mode 2.6.21 .PRINTX .PRINTX The first non-blank character encountered after .PRINTX is the delimiter. The following text is listed on the terminal during assembly until another occurence of the delimiter is encountered. .PRINTX is useful for displaying progress through a long assembly or for displaying the value of conditional assembly switches. For example: IF CPM .PRINTX /CPM version/ ENDIF NOTE .PRINTX will output on both passes. If only one printout is desired, use the IF1 or IF2 pseudo-op. For example: IF2 IF CPM .PRINTX /CPM version/ ENDIF ENDIF will only print if CPM is true and M80 is in pass 2. 2.6.22 .RADIX .RADIX The default base (or radix) for all constants is decimal. The .RADIX statement allows the default radix to be changed to any base in the range of 2 to 16. For example: MOVI BX,0FFH .RADIX 16 MOVI BC,0FF The two MOVIs in the example are indentical. The in a .RADIX statement is always in decimal radix, regardless of the current radix. 2.6.23 .Z80 .Z80 enables the assembler to accept Z80 opcodes. This is the default condition when the assembler is running on a Z80 operating system. Z80 mode may also be set by appending the Z switch to the MACRO-80 command string -- see Section 2.2.2. 2.6.24 .8080 .8080 enables the assembler to accept 8080 opcodes. This is the default condition when the assembler is running on an 8080 operating system. 8080 mode may also be set by appending the I switch to the MACRO-80 command string -- see Section 2.2.2. 2.6.25 REQUEST .REQUEST [,...] .REQUEST sends a request to the LINK-80 loader to search the filenames in the list for undefined globals. The filenames in the list should be in the form of legal symbols. They should not include filename extensions or disk specifications. LINK-80 supplies a default extension and assumes the default disk drive. 2.6.26 Conditional Pseudo Operations The conditional pseudo operations are: IF/IFT True if is no 0. IFE/IFF True if is 0. IF1 True if pass 1. IF2 True if pass 2. IFDEF True if is defined or has been declared External. IFNDEF True if is undefined or not declared External. IFB True if is blank. The angle brackets around are required. IFNB True if is not blank. Used for testing when dummy parameters are supplied. The angle brackets around are required. IFIDN , True if the string is IDeNtical to the string . The angle brackets around and are required. IFDIF , True if the string is DIFferent from the string . The angle brackets around and are required. All conditionals use the following format: IFxx [argument] . . . [ELSE . . . ] ENDIF Conditionals may be nested to any level. Any argument to a conditional must be known on pass 1 to avoid V errors and incorrect evaluation. For IF, IFT, IFF, and IFE the expression must involve values which were previously defined and the expression must be absolute. If the name is defined after an IFDEF or IFNDEF, pass 1 considers the name to be undefined, but it will be defined on pass 2. 2.6.26.1 ELSE - Each conditional pseudo operation may optionally be used with the ELSE pseudo operation which allows alternate code to be generated when the opposite condition exists. Only one ELSE if permitted for a given IF, and an ELSE is always bound to the most recent, open IF. A conditional with more than one ELSE or an ELSE without a conditional will cause a C error. 2.6.26.2 ENDIF - Each IF must have a matching ENDIF to terminate the conditional. Otherwise, an 'Unterminated conditional' message is generated at the end of each pass. An ENDIF without a matching IF causes a C error. 2.6.27 Listing Control Pseudo Operations Output to the listing file can be controlled by two pseudo-ops: .LIST and .XLIST If a listing is nog being made, these pseudo-ops have no effect. .LIST is the default condition. When a .XLIST is encountered, source and object code fill not be listed until a .LIST is encountered. The output of false conditional blocks is controlled by three pseudo-ops: .SFCOND, .LFCOND, and .TFCOND. These pseudo-ops give the programmer control over four cases. 1. Normally list false conditionals. For this case, the programmer simply allows the default mode to control the listing. The default mode is list false conditionals. If the programmer decides to suppress false conditionals, the /X switch can be issued in the command line instead of editing the source file. 2. Normally surpress false conditionals. For this case, the programmer issues the .TFCOND pseudo-op in the program file. .TFCOND reverses (toggles) the default, causing false conditionals to be suppressed. If the programmer decides to list false conditionals, the /X switch can be issued in the command line instead of editing the source file. 3. Always suppress/list false conditionals. For this case, the programmer has decided for most false conditionals whether to list or suppress, but for some false conditionals the programmer has not yet decided. For the false conditionals decided about, use .SFCOND or .LFCOND. For those not yet decided, use .TFCOND. .TFCOND sets the current and default settings to the opposite of the default. Initially, the default is set by giving /X or no /X in the command line. Two subcases exist: 1. The programmer wants some false conditionals not to list unless /X is given. The programmer uses the .SFCOND and .LFCOND pseudo-ops to control which areas always suppress or list false conditionals. To selectively suppress some false conditionals, the programmer issues .TFCOND at the beginning of the conditional block and again at the end of the conditional block. (NOTE: The second .TFCOND should be issued so that the default setting will be the same as the initial setting. Leaving the default equal to the initial setting makes it easier to keep track of the default mode if there are many such areas.) If the conditional block evaluates as false, the lines will be suppressed. In this subcase, issuing the /X switch in the command line causes the conditional block affected by .TFCOND to list even if it evaluates as false. 2. The programmer want some false conditionals to list unless /X is given. Two consecutive .TFCONDs places the conditional listing setting in initial state which is determined by the presence or absence of the /X switch in the command line (the first .TFCOND sets the default to not initial; the second to initial). The selected conditional block then responds to the /X switch: if a /X switch is issued in the command line, the conditional block is suppressed if false; if no /X switch is issued in the command line, the conditional block is listed even if false. The three conditional listing pseudo-ops are summarized below. PSEUDO-OP DEFINITION .SFCOND Suppresses the listing of conditional blocks that evaluate as false. .LFCOND Restores the listing of conditional blocks that evaluate as false. .TFCOND Toggles the current setting which controls the listing false conditionals. .TFCOND sets the current and default setting to not default. If a /X switch is given in the MACRO-80 run command line for a file which contains .TFCOND, /X reverses the effect of .TFCOND. The following chart illustrates the effects of the three pseudo-ops when encountered under /X and under no /X. PSEUDO-OP NO /X /X (none) ON OFF . . . . . . . . . .SFCOND OFF OFF . . . . . . . . . .LFCOND ON ON . . . . . . . . . .TFCOND OFF ON . . . . . . . . . .TFCOND ON OFF . . . . . . . . . .SFCOND OFF OFF . . . . . . . . . .TFCOND OFF ON .TFCOND ON OFF . . . . . . . . . .TFCOND OFF ON The output of cross reference information is controlled by .CREF and .XCREF. If the cross reference facility (see Chapter 3) has not been invoked, .CREF and .XCREF have no effect. The default condition is .CREF. When a .XCREF is encountered, no cross reference information is output until .CREF is encountered. The output of MACRO/REPT/IRP/IRPC expansions is controlled by three pseudo-ops: .LALL, .SALL and .XALL. .LALL lists the complete macro text for all expansions. .SALL suppresses listing of all text and object code produced by macros. .XALL is the default condition; a source line is listed only if it generates object code. 2.6.28 Relocation Pseudo Operations The ability to create relocatable modules is one of the major features of Microsoft assemblers. Relocatable modules offer the advantages of easier coding and faster testing, debugging and modifying. In addition, it is possible to specify segments of assembled code that will later be loaded into RAM (the Data Relative segment) and ROM/PROM (the Code Relative segment). The pseudo operations that select relocatable areas are CSEG and DSEG. The ASEG pseudo-op is used to generate non-relocatable (absolute) code. The COMMON pseudo-op creates a common data area for every COMMON block that is named in the program. The default mode for the assembler is Code Relative. That is, assembly begins with a CSEG automatically executed and the location counter in the Code Relative mode, pointing to location 0 in the Code Relative segment of memory. All subsequent instructions will be assembled into the Code Relative segment of memory until a ASEG or DSEG or COMMON pseudo-op is executed. For example, the first DSEG encountered sets the location counter to location zero in the Data Relative segment of memory. The following code is assembled in the Data Relative segment of memory. If a subsequent CSEG is encountered, the location counter will return to the next free location in the Code Relative segment and so on. The ASEG, DSEG, CSEG pseudo-ops never have operands. If you wish to alter the current value of the location counter, use the ORG pseudo-op. 2.6.28.1 ORG Pseudo-op - At any time, the value of the location counter may be changed by use of the ORG pseudo-op. The form of the ORG statement is: ORG where the value of will be the new value of the location counter in the current mode. All names used in must be known on pass 1 and the value of must be either Absolute or in the current mode of the location counter. For example, the statements DSEG ORG 50 set the Data Relative counter to 50, relative to the start of the Data Relative segment of memory. 2.6.28.2 LINK-80 - The LINK-80 linking loader (see Chapter 4 of this manual) combines the segments and creates each relocatable module in memory when the program is loaded. The origins of the relocatable segments are not fixed until the program is loaded and the origins are assigned by LINK-80. The command to LINK-80 may contain user-specified origins through the use of the /P (for Code Relative) and /D (for Data and COMMON segments) switches. For example, a program that begins with the statements ASEG ORG 800H and is assembled entirely in Absolute mode will always load beginning at 800 unless the ORG statement is changed in the source file. However, the same program, assembled in Code Relative mode with no ORG statement, may be loaded at any specified address by appending the /P:
switch to the LINK-80 command string. 2.6.29 Relocation Before Loading Two pseudo-ops, .PHASE and .DEPHASE, allow code to be located in one area, but executed only at a different, specified area. For example: 0000' .PHASE 100H 0100 E8 0003 FOO: CALL BAZ 0103 E9 FF01 JMP ZOO 0106 C3 BAZ: RET .DEPHASE 0007' E9 FFFB ZOO: JMP 5 All labels within a .PHASE block are defined as the absolute value from the origin of the phase area. The code, however, is loaded in the current area (i.e., from 0' in this example). The code within the block can later be moved to 100H and executed. 2.7 MACROS AND BLOCK PSEUDO OPERATIONS The macro facilites provided by MACRO-80 include three repeat pseudo operations: reapeat (REPT), indefinite repeat (IRP), and indefinite repeat character (IRPC). A macro definition operation (MACRO) is also provided. Each of these four macro operations is terminated by the ENDM pseudo operation. 2.7.1 Terms For the purposes of discussion of macros and block operations, the following terms will be used: 1. is used to represent a dummy parameter. All dummy paramters are legal symbols that appear in the body of a macro expansion. 2. is a list of s separated by commas. 3. is a list of arguments separated by commas. must be delimited by angle brackets. Two angle brackets with no intervening characters (<>) or two commas with no intervening characters enter a null argument in the list. Otherwise an argument is a character or series of characters terminated by a comma or >. With angle brackets that are nested inside an , one level of brackets is removed each time the bracketed argument is used in an . (See example, Section 2.7.5.) A quoted string is an acceptable argument and is passed as such. Unless enclosed in brackets or a quoted string, leading and trailing spaces are deleted from arguments. 4. is used to represent a list of actual parameters separated by commas. No delimiters are required (the list is terminated by the end of line or a comment), but the rules for entering null parameters and nesting brackets are the same as described for . (See example, Section 2.7.5.) 2.7.2 REPT-ENDM REPT . . . ENDM The block of statements between REPT and ENDM is repeated times. is evaluated as a 16-bit unsigned number. If contains any external or undefined terms, an error is generated. Example: SET 0 REPT 10 ;generates DB 1 - DB 10 SET X+1 DB X ENDM 2.7.3 IRP-ENDM IRP , . . . ENDM The must be enclosed in angle brackets. The number of arguments in the determines the number of times the block of statements is repeated. Each repetition substitutes the next item in the for every occurrence of in the block. If the is null (i.e., <>), the block is processed once with each occurence of removed. For example: IRP X,<1,2,3,4,5,6,7,8,9,10> DB X ENDM gernerates the same bytes as the REPT example. 2.7.4 IRPC-ENDM IRPC ,string (or ) . . . ENDM IRPC is similar to IRP but the arglist is replaced by a string of text and the angle brackets around the string are optional. The statements in the block are repeated once for each character in the string. Each repetition substitutes the next character in the string for every occurrence of in the block. For example: IRPC X,0123456789 DB X+1 ENDM generates the same code as the two previous examples. 2.7.5 MACRO Often it is convenient to be able to generate a given sequence of statements from various places in a program, even though different parameters may be required each time the sequence is used. This capability is provided by the MACRO statement. The form is MACRO . . . ENDM where conforms to the rules for forming symbols. is the name that will be used to invoke the macro. The s in are the parameters that will be changed (replaced) each time the MACRO is invoked. The statements before the ENDM comprise the body of the macro. During assembly, the macro is expanded every time it is invoked but, unlike REPT/IRP/IRPC, the macro is not expanded when it is encountered. The form of a macro call is where is the name supplied in the MACRO definition, and the parameters in will replace the s in the MACRO on a one-to-one basis. The number of items in and is limited only by the length of a line. The number of parameters used when the macro is called need not be the same as the number of s in . If there are more parameters than s, the extras are ignored. If there are fewer, the extra s will be made null. The assembled code will contain the macro expansion code after each macro call. NOTE A dummy parameter in a MACRO/REPT/IRP/IRPC is always recognized exclusively as a dummy parameter. Register names such as A and B will be changed in the expansion if they were used as dummy parameters. Here is an example of a MACRO definition that defines a macro called FOO: FOO MACRO X Y SET 0 REPT X Y SET Y+1 DB Y ENDM ENDM This macro generates the same code as the previous three examples when the call FOO 10 is executed. Another example, which generates the same code, illustrates the removal of one level of brackets when an argument is used as an arglist: FOO MACRO X IRP Y, DB Y ENDM ENDM When the call FOO <1,2,3,4,5,6,7,8,9,10> is made, the macro expansion looks like this: IRP Y,<1,2,3,4,5,6,7,8,9,10> DB Y ENDM 2.7.6 ENDM Every REPT, IRP, IRPC and MACRO pseudo-op must be terminated with the ENDM pseudo-op. Otherwise the 'Unterminated REPT/IRP/IRPC/MACRO' message is generated at the end of each pass. An unmatched ENDM causes an O error. 2.7.7 EXITM The EXITM pseudo-op is used to terminate a REPT/IRP/IRPC or MACRO call. When an EXITM is executed, the expansion is exited immediately and any remaining expansion or repetition is not generated. If the block containing the EXITM is nested within another block, the outer level continues to be expanded. 2.7.8 LOCAL LOCAL The LOCAL pseudo-op is allowed only inside a MACRO definition. When LOCAL is executed, the assembler creates a unique symbol for each in and substitutes that symbol for each occurence of the in the expansion. These unique symbols are usually used to define a label within a macro, thus eliminating multiply-defined labels on successive expansions of the macro. The symbols created by the assembler range from ..0001 to ..FFFF. Users will therefore want to avoid the term ..nnnn for their own symbols. If LOCAL statements are used, they must be the first statements in the macro definition. 2.7.9 Special Macro Operators And Forms & The ampersand is used in a macro expansion to concatenate text or symbols. A dummy parameter that is in a quoted string will not be substituted in the expansion unless it is immediately preceded by &. To form a symbol from text and a dummy, put & between them. For example: ERRGEN MACRO X ERROR&X:PUSH BX MOVI BX,'&X' JMP ERROR ENDM In this example, the call ERRGEN A will generate: ERRORA: PUSH BX MOVI BX,'A' JMP ERROR ;; In a block operation, a comment preceded by two semicolons is not saved as part of the expansion (i.e., it will not appear on the listing even under .LALL). A comment preceded by one semicolon, however, will be preserved and appear in the expansion. ! When an exclamation point is used in an argument, the next character is entered literally (i.e., !; and <;> are equivalent). NUL NULL is an operator that returns true if its argument (a parameter) is null. The remainder of a line after NUL is considered to be the argument to NUL. The conditional IF NUL argument is false if, during the expansion, the first character of the argument is anything other than a semicolon or carriage return. It is recommended that testing for null parameters be done using the IFB and IFNB conditionals. % The percent sign is used only in a macro argument. % converts the expression that follows it (usually a symbol) to a number in the current radix. During macro expansion, the number derived from converting the expression is substituted for the dummy. Using the % special operator allows a macro call by value. (Usually, a macro call is a call by reference with the text of the macro argument substituting exactly for the dummy.) The expression following the % must conform to the same rules as the DS (Define Space) pseudo-op. A valid expression returning a non-relocatable constant is required. EXAMPLE: Normally, LB, the argument to MAKLAB, would be substituted for Y, the argument to MACRO, as a string. The % causes LB to be converted to a non-relocatable constant which is then substituted for Y. Without the % special operator, the result of assembly would be 'Error LB' rather than 'Error 1', etc. MAKLAB MACRO Y ERR&Y: DB 'Error &Y',0 ENDM MAKERR MACRO X LB SET 0 REPT X LB SET LB+1 MAKLAB %LB ENDM ENDM When called by MAKERR 3, the assembler will generate: ERR1: DB 'Error 1',0 ERR2: DB 'Error 2',0 ERR3: DB 'Error 3',0 TYPE The TYPE operator returns a byte that describes two characteristics of its argument: 1) the mode, and 2) whether it is External or not. The argument to TYPE may be any expression (string, numeric, logical). If the expression is invalid, TYPE returns zero. The byte that is returned is configured as follows: The lower two bits are the mode. If the lower two bits are: 0 the mode is Absolute 1 the mode is Program Relative 2 the mode is Data Relative 3 the mode is Common Relative The high bit (80H) is the External bit. If the high bit is on, the expression contains an External. If the high bit is off, the expression is local (not External). The Defined bit is 20H. This bit is on if the expression is locally defined, and it is off if the expression is undefined or external. If neither bit is on, the expression is invalid. TYPE is usually used inside macros, where an argument type may need to be tested to make a decision regarding program flow. For example: FOO MACRO X LOCAL Z Z SET TYPE X IF Z... 2.8 USING Z80 PSEUDO-OPS When using the MACRO-80 assembler, the following Z80 pseudo-ops are valid. The function of each pseudo-op is equivalent to that of its counterpart. Z80 pseudo-op Equivalent pseudo-op COND IFT ENDC ENDIF *EJECT PAGE DEFB DB DEFS DS DEFW DW DEFM DB DEFL SET GLOBAL PUBLIC EXTERNAL EXTRN The formats, where different, conform to the previous format. That is, DEFB and DEFW are permitted a list of arguments (as are DB and DW), and DEFM is permitted a string or numeric argument (as is DB). 2.9 SAMPLE ASSEMBLY A>M80 *EXMPL1,TTY:=EXMPL1 MAC80 3.2 PAGE 1 00100 ;CSL3(P1,P2) 00200 ;SHIFT P1 LEFT CIRCULARY 3 BITS 00300 ;RETURN RESULT IN P2 00400 ENTRY CSL3 00450 ;GET VALUE OF FIRST PARAMETER 00500 CSL3: 0000' 7E 00600 MOV A,M 0001' 23 00700 INX H 0002' 66 00800 MOV H,M 0003' 6F 00900 MOV L,A 01000 ;SHIFT COUNT 0004' 06 03 01100 MVI B,3 0006' AF 01200 LOOP: XRA A 01300 ;SHIFT LEFT 0007' 29 01400 DAD H 01500 ;ROTATE IN CY BIT 0008' 17 01600 RAL 0009' 85 01700 ADD L 000A' 6F 01800 MOV L,A 01900 ;DECREMENT COUNT 000B' 05 02000 DCR B 02100 ;ONE MORE TIME 000C' C2 0006' 02200 JNZ LOOP 000F' EB 02300 XCHG 02400 ;SAVE RESULT IN SECOND PARAMETER 0010' 71 02500 MOV M,E 0011' 23 02600 INX H 0012' 72 02700 MOV M,D 0013' C9 02800 RET 02900 END MAC80 3.2 PAGE S CSL3 0000I' LOOP 0006' No Fatal error(s) 2.10 MACRO-80 ERRORS MACRO-80 errors are indicated by a one-character flag in column one of the listing file. If a listing file is not being printed on the terminal, each erroneous line is also printed or displayed on the terminal. Below is a list of the MACRO-80 Error Codes: A Argument error Argument to pseudo-op is not in correct format or is out of range (.PAGE 1; .RADIX 1; PUBLIC 1; JMPS TOOFAR). C Conditional nesting error ELSE without IF, ENDIF without IF, two ELSEs on one IF. D Double Defined symbol Reference to a symbol which is multiply defined. E External error Use of an external illigal in context (e.g., FOO SET NAME##; MOVI AX,2-NAME##). M Multiply Defined symbol Definition of a symbol which is multiply defined. N Number error Error in a number, usually a bad digit (e.g., 8Q). O Bad opcode or objectionable syntax ENDM, LOCAL outside a block; SET, EQU or MACRO without a name; bad syntax in an opcode; or bad syntax in an expression (mismatched parenthesis, quotes, consecutive operators, etc.). P Phase error Value of a Label or EQU name is different on pass 2. Q Questionable Usually means a line is not terminated properly. This is a warning error (e.g. MOV AX,BX,). R Relocation Illigal use of relocation in expression, such as abs-rel. Data, code and COMMON areas are relocatable. U Undefined symbol A symbol referenced in an expression is not defined. (For certain pseudo-ops, a V error is printed on pass 1 and a U on pass 2.) V Value error On pass 1 a pseudo-op which must have its value known on pass 1 (e.g., .RADIX, .PAGE, DS, IF, IFE, etc.), has a value which is undefined. If the symbol is defined later in the program, a U error will not appear on the pass 2 listing. Error Messages: 'No END statement encountered on input file' No END statement; either it is missing or it is not parsed due to being in a false conditional, unterminated IRP/IRPC/REPT block or terminated macro. 'Unterminated conditional' At least one conditional is unterminated at the end of the file. 'Unterminated REPT/IRP/IRPC/MACRO' At least one block is unterminated. [xx] [No] Fatal error(s) [,xx warnings] The number of fatal errors and warnings. The message is listed on the CRT and in the list file. 2.11 COMPATIBILITY WITH OTHER ASSEMBLERS The $EJECT and $TITLE controls are provided for compatability with INTEL's ISIS assembler. The dollar sign must appear in column 1 only if spaces or tabs separate the dollar sign from the control word. The control $EJECT is the same as the MACRO-80 PAGE pseudo-op. The control $TITLE('text') is the same as the MACRO-80 SUBTTL pseudo-op. The INTEL operands PAGE and INPAGE generate Q errors when used with the MACRO-80 CSEG or DSEG pseudo-ops. These errors are warnings: the assembler ignores the operands. When MACRO-80 is entered, the default for the origin is Code Relative 0. With the INTEL ISIS assembler, the default is Absolute 0. With MACRO-80, the dollar sign ($) is a defined constant that indicates the value of the location counter at the start of the statement. Other assemblers may use a decimal point or an asterisk. Other constants are defined by MACRO-80 to have the following values: A-7 B-0 C-1 D-2 E-3 H-4 L-5 M-6 SP-6 PSW-6 2.12 FORMAT OF LISTINGS On each page of a MACRO-80 listing, the first two lines have the form: [TITLE text] M80 3.3 PAGE x[-y] [SUBTTL text] where: 1. TITLE text is the text supplied with the TITLE pseudo-op, if one was given in the source program. 2. x is the major page number, which is incremented only when a form feed is encountered in the source file. (When using Microsoft's EDIT-80 text editor, a form feed is inserted whenever a page mark is done.) When the symbol table is being printed, x = S. 3. y is the minor page number, which is incremented whenever the .PAGE pseudo-op is encountered in the source file, or whenever the current page size has been filled. 4. SUBTTL text is the text supplied with the SUBTTL pseudo-op, if one was given in the source program. Next, a blank line is printed, followed by the first line of output. A line of output on a MACRO-80 listing has the following form: [crf#] [error] loc#m |xx | xxxx|... source If cross reference information is being output, the first item on the line is the cross reference number, followed by a tab. A one-letter error code followed by a space appears next on the line, if the line contains an error. If there is no error, a space is printed. If there is no cross reference number, the error code column is the first column on the listing. The value of the location counter appears next on the line. It is a 4-digit hexadecimal number or 6-digit octal numer, depending on whether the /O or /H switch was given in the MACRO-80 command string. The character at the end of the location counter value is the mode indicator. It will be one of the following symbols: ' Code Relative " Data Relative ! COMMON Relative Absolute * External Next, three spaces are printed followed by the assembled code. One-byte values are followed by a space. Two-byte values are followed by a mode indicator. Two-byte values are printed in the opposite order the are stored in, i.e., the high order byte is printed first. Externals are either the offset or the value of the pointer to the next External in the chain. If a line of output on a MACRO-80 listing is from an INCLUDE file, the character 'C' is printed after the assembled code on that line. If a line of output is part of a text expansion (MACRO, REPT, IRP, IRPC) a plus sign '+' is printed after the assembled code on that line. The remainder of the line contains the line of source code, as it was input. Example: 0C49 3A A912' C+ LDA LCOUNT 'C+' indicates this line is from an INCLUDE file and part of a macro expansion. 2.12.1 Symbol Table Listing In the symbol table listing, all the macro names in the program are listed alphabetically, followed by all the symbols in the program, listed alphabetically. After each symbol, a tab is printed, followed by the value of the symbol. If the symbol is Public, an I is printed immediately after the value. The next character printed will be one of the following: U Undefined symbol. C COMMON block name. (The "value" of the COMMON block is its length (number of bytes) in hexadecimal or octal.) * External symbol. 'space' Absolute value. ' Program Relative value. " Data Relative value. ! COMMON Relative value. CHAPTER 3 CREF-80 CROSS REFERENCE FACILITY NOTE If you are using the TEKDOS operating system, see Appendix A for proper command formats. In order to generate a cross reference listing, the assembler must output a special listing file with embedded control characters. The MACRO-80 command string tells the assembler to output this special listing file. /C is the cross reference switch. When the /C switch is encountered in a MACRO-80 command string, the assembler opens a .CRF file instead of a .LST file. (See Section 2.6.27 for the .CREF and .XCREF pseudo-ops.) Examples: *=TEST/C Assembles file TEST.MAC and creates object file TEST.REL and cross reference file TEST.CRF. *T,U=TEST/C Assemble file TEST.MAC and create object file T.REL and cross reference file U.CRF When the assembler is finished, run the cross reference facility by typing CREF80. CREF80 prompts the user with an asterisk. CREF80 generates a cross reference listing from the .CRF file that was created during assembly. The CREF80 command format is: *listing file=source file The default extenstion for the source file is .CRF. There are no switches in CREF80 commands. Examples of CREF-80 command strings: *=TEST Examine file TEST.CRF and generate a cross reference listing file TEST.LST. *T=TEST Examine file TEST.CRF and generate a cross reference file T.LST. Cross reference listing files differ from ordinary listing files in that: 1. Each source statement is numbered with a cross reference number. 2. At the end of the listing, variable names appear in alphabetic order along with the numbers of the lines on which they are referenced or defined. Line numbers on which the symbol is defined are flagged with '#'. CHAPTER 4 LINK-80 LINKING LOADER NOTE If you are using the TEKDOS operating system, see Appendix A for proper command formats. 4.1 RUNNING LINK-80 The command to run LINK-80 is L80 LINK-80 returns the prompt "*", indicating it is ready to accept commands. 4.2 COMMAND FORMAT Each command to LINK-80 consists of a string of object filenames separated by commas. These are the files to be loaded by LINK-80. The command format is: objfile1,objfile2,...objfilen The default extension for all filenames is .REL. Command lines are supported, that is, the invocation and command may be typed on the same line. Example: L80 MYPROG,YRPROG Any filename in the LINK-80 command string can also specify a device name. The default device name with the CP/M operating system is the currently logged disk. The default device with the ISIS-II operating system is disk drive 0. The format is: dev1:objfile1,dev2:objfile2,...devn:objfilen The device names are as listed in Section 2.2.1. Example: L80 MYPROG,A:YRPROG After each line is typed, LINK-80 will load the specified files. After LINK finishes this process, it will list all symbols that remained undefined followed by an asterisk. Example: *MAIN DATA 0100 0200 SUBR1* (SUBR1 is undefined) *SUBR1 DATA 0100 0300 Typically, to execute a MACRO-80 program and subroutines, the user types the list of filenames followed by /G (begin execution). To resolve any external, undefined symbols, you can first search your library routines (See Chapter 5, LIB-80) by appending the filenames, followed by /S, to the loader command string. *MYLIB/S Searches MYLIB.REL for unresolved global symbols */G Start execution 4.2.1 LINK-80 Switches A number of switches may be given in the LINK-80 command string to specify actions affecting the loading or execution of the program(s). Each switch must be preceeded by a slash (/). (With the TEKDOS operating system, switches are preceeded by hyphens. See Appendix A.) Switches may be placed wherever applicable in the command string: 1. At command level. It is possible for a switch to be the entire LINK-80 command, or to appear first in the command string. For example: */G Tells LINK-80 to begin execution of program(s) already loaded. */M List all global references from program(s) already loaded */P:200,FOO Load FOO, with program area beginning at address 200 2. Immediately after a filename. An S or N switch may refer to only one filename in the command string. Therefore, when the S or N switch is required, it is placed immediately after that filename, regardless of where the filename appears in the command string. For example: *MYLIB/S,MYPROG Search MYLIB.REL and load necessary library modules, then load MYPROG.REL. *MYPROG/N,MYPROG/E Load MYPROG.REL, save MYPROG.COM on disk and exit LINK-80. 3. At the end of the command string. Any required switchins that affect the entire load process may be appended at the end of the command string. For example: *MYPROG/N,MYPROG/M/E Open a CP/M COM file called MYPROG.COM, load MYPROG.REL and list all global refer- ences. Exit LINK-80 and save the COM file. *MYLIB/S,MYSUB,MYPROG/N,MYPROG/M/G Search MYLIB.REL, load and link MYSUB.REL and MYPROG.REL, open a CP/M COM file called MYPROG.COM, list all global references, save the COM file, and execute MYPROG. The available switches are: Switch Action R Reset. Put loader back in its initial state. User /R if you loaded the wrong file by mistake and want to restart. /R takes effect as soon as it is encountered in a command string. E or E:Name Exit LINK-80 and return to the operating system. The system library will be searched on the current disk to satisfy any existing undefined globals. Before exiting, LINK-80 prints three numbers: the start address, the address of the next available byte, and the number of 256-byte pages used. The optional form E:Name (where Name is a global symbol previously defined in one of the modules) uses Name for the start address of the program. Use /E to load a program and exit back to the monitor. G or G:Name Start execution of the program as soon as the current command line has been interpreted. The system library will be searched on the current disk to satisfy any existing undefined globals if they exist. Before execution actually begins, LINK-80 prints three numbers and a BEGIN EXECUTION message. The three numbers are the start address, the address of the next byte available, and the number of 256-byte pages used. The optional form G:Name (where Name is a global symbol previously defined in one of the modules) uses Name for the start address of the program. N If a /N is specified, the program will be saved on disk under the selected name (with a default extension of .COM for CP/M) when a /E or /G is done. A jump to the start of the program is inserted if needen so the program can run properly (at 100H for CP/M). P and D /P and /D allow the origin(s) to be set for the next program loaded. /P and /D take effect when seen (not deferred), and they have no effect on programs already loaded. The form is /P:
or /D:
, where
is the desired origin in the current typeout radix. (Default radix is hex. /O sets radix to octal; /H to hex.) LINK-80 dos a default /P:+3 (i.e., 103H for CP/M and 4003H for ISIS) to leave room for the jump to the start address. NOTE: Do not use /P or /D to load programs or data into the locations of the loader's jump to the start address (100H to 102H for CP/M) unless it is to load the start of the program there. If programs or data are loaded into these locations, the jump will not be generated. If no /D is given, data areas are loaded before program areas for each module. If a /D is given, all Data and Common areas are loaded starting at the data origin and the program area at the program origin. Example: */P:200,FOO Data 200 300 */R */P:200 /D:400,FOO Data 400 480 Program 200 280 U List the origin and end of the program and data area and all undefined globals as soon as the current command line has been interpreted. The program information is only printed if a /D has been done. Otherwise, the program is stored in the data area. M List the origin and end of the program and data area, all defined globals and their values, and all undefined globals followed by an asterisk. The program information is only printed if a /D has been done. Otherwise, the program is stored in the data area. S Search the filename immediately preceding the /S in the command string to satisfy any undefined globals. 4.2.2 CP/M LINK-80 Switches The following switches apply to CP/M versions only. X If a filename/N was specified, /X will cause the file to be saved in Intel ASCII HEX format with an extension of HEX. Example: FOO/N/X/E will create an Intel ASCII HEX formatted load module named FOO.HEX. Y If a filename/N was specified, /Y will create a filename.SYM file when /E is entered. This file contains the names and addresses of all Globals for use with Digital Research's Symbolic Debugger, SID and ZSID. Example: FOO/N/Y/E creates FOO.COM and FOO.SYM. MYPROG/N/X/Y/E creates MYPROG.HEX and MYPROG.SYM. 4.2.3 Sample Links LINK AND GO A>L80 *EXAMPL,EXMPL1/G DATA 3000 30AC [304F 30AC 49] [BEGIN EXECUTION] 1792 14336 14336 -16383 -16383 14 14 112 112 896 A> LINK AND SAVE A>L80 *EXAMPL,EXAMPL1,EXAM/N/E DATA 3000 30AC [304F 30AC 49] A> Loads and links EXAMPL.REL, EXMPL1.REL and creates EXAM.COM. 4.3 FORMAT OF LINK COMPATIBLE OBJECT FILES NOTE Section 4.3 is interesting material for users who wish to know the load format of LINK-80 relocatable object files. Most users will want to skip this section, as it does not contain material neccessary to the operation of the package. LINK-compatible object files consist of a bit stream. Individual fields within the bit stream are not aligned on byte boundaries, except as noted below. Use of a bit stream for relocatable object files keeps the size of object files to a minimum, thereby decreasing the number of disk reads/writes. There are two basic types of load items: Absolute and Relocatable. The first bit of an item indicates one of these two types. If the first bit is a 0, the following 8 bits are loaded as an absolute byte. If the first bit is a 1, the next 2 bits are used to indicate one of four types of relocatable items: 00 Special LINK item (see below). 01 Program Relative. Load the following 16 bits after adding the current Program base. 10 Data Relative. Load the following 16 bits after adding the current Data base. 11 Common relative. Load the following 16 bits after adding the current Common base. Special LINK items consist of the bit stream 100 followed by: a four-bit control field an optional A field consisting of a two-bit address type that is the same as the two-bit field above except 00 specifies absolute address an optional B field consisting of 3 bits that give a symbol length and up to 8 bits for each character of the symbol A general representation of a special LINK item is: 1 00 xxxx yy nn zzz + characters of symbol name -------- --------------------------------- A field B field xxxx Fout-bit control field (0-15 below) yy Two-bit address type field nn Sixteen-bit value zzz Three-bit symbol length field The following special types have a B-field only: 0 Entry symbol (name for search) 1 Select COMMON block 2 Program name 3 Request library search 4 Extension LINK items (see below) The following special LINK items have both an A field and a B field: 5 Define COMMON size 6 Chain external (A is head of address chain, B is name of external symbol) 7 Define entry point (A is address, B is name) The following special LINK items have an A field only: 8 External - offset. Used for JMP and CALL to externals 9 External + offset. The A value will be added to the two bytes starting at the current location counter immediately before execution. 10 Define size of Data area (A is size) 11 Set loading location counter to A 12 Chain address. A is head of chain, replace all entries in chain with current location counter. The last entry in the chain has an address field of absolute zero 13 Define program size (A is size) 14 End program (forces to byte boundary) The following special LINK item has neither an A nor a B field: 15 End file An Extension LINK item follows the general format of a B-field-only special LINK item, but contents of the B-field are not a symbol name. Instead, the symbol area contains one character to identify the type of Extension LINK item, followed by from 1 to 7 characters of additional information. Thus, every Extension LINK item has the format: 1 00 0100 zzz i jjjjjjjj where zzz may be any three bit integer (with 000 representing 8), i is an eight bit Extension LINK item type indentifier, and jjjjjjjj are zzz-1 eight bit character of information whose significance depends on i At present, there is only one Extension LINK item: i = X'35' COBOL overlay segment sentinel zzz = 010 (binary) j = COBOL segment number -49 (decimal) When the overlay segment sentinal is encountered by the linker, the current overlay segment number is set to the value of j+49. If the previously existing segment number was non-zero and a /N switch is in effect, the data area is written to disk in a file whose name is the current program name and whose extension is Vnn, where nn are the two hexadecimal digits representing the number j+49 (decimal). 4.4 LINK-80 ERROR MESSAGES LINK-80 has the following error messages: ?No Start Address A /G switch was issued, but no main program had been loaded. ?Loading Error The last file given for input was not a properly formatted LINK-80 object file. ?Out of Memory Not enough memory to load program. ?Command Error Unrecognizable LINK-80 command. ? Not Found , as given in the command string, did not exist. %2nd COMMON Larger /XXXXXX/ The first definition of COMMON block /XXXXXX/ was not the largest definition. Reorder module loading sequence or change COMMON block definitions. %Mult. Def. Global YYYYYY More than one definition for the global (internal) symbol YYYYYY was encountered during the loading process. %Overlaying / Program \ Area ,Start = xxxx \ Data / ,Public = (xxxx) ,External = (xxxx) A /D or /P will cause already loaded data to be destroyed. ?Intersecting / Program \ Area \ Data / The program and data area intersect and an address or external chain entry is in this intersection. The final value cannot be converted to a current value since it is in the area intersection. ?Start Symbol - - Undefined After a /E: or /G: is given, the symbol specified was not defined. Origin / Above \ Loader Memory, Move Anyway (Y or N)? \ Below / After a /E or /G was given, either the data or program area has an origin or top which lies outside loader memory (i.e., loader origin to top of memory). If a Y is given, LINK-80 will move the area and continue. If anything else is given, LINK-80 will exit. In either case, if a /N was given, the image will already have been saved. ?Can't Save Object File A disk error occurred when the file was being saved. 4.5 PROGRAM BREAK INFORMATION LINK-80 stores the address of the first free location in a global symbol called $MEMRY if that symbol has been defined by a program loaded. $MEMRY is set to the top of the data area +1. NOTE If /D is given and the data origin is less than the program area, the user must be sure there is enough room to keep the program from being destroyed. This is particularly true with the disk driver for FORTRAN-80 which uses $MEMRY to allocate disk buffers and FCB's. CHAPTER 5 LIB-80 LIBRARY MANAGER (CP/M Versions Only) LIB-80 is the object time library manager for CP/M versions of FORTRAN-80 and COBOL-80. LIB-80 will be interfaced to other operating systems in future releases of FORTRAN-80 and COBOL-80. WARNING Read this chapter carefully and make a back-up copy of your libraries before using LIB. It is not difficult to destroy a library with LIB-80. 5.1 LIB-80 Commands To run LIB-80, type LIB followed by a carriage return. LIB-80 will return the prompt "*" indicating is is ready to accept commands. Each command in LIB-80 either lists information about a library or adds new modules to the library under construction. Commands to LIB-80 consist of an optional destination filename whichs sets the name of the library being created, followed by an equal sign, followed by module names separated by commas. The default destination filename is FORLIB.LIB. Examples: *NEWLIB=FILE1 , FILE3,TEST *SIN,COS,TAN,ATAN Any command specifying a set of modules concatenates the modules selected onto the end of the last destination filename given. Therefore, *FILE1,FILE2 , TEST is equivalent to *FILE1 *FILE2 *TEST 5.1.1 Modules A module is typically a FORTRAN or COBOL subprogram, main program or a MACRO-80 assembly that contains ENTRY statements. The primary function of LIB-80 is to concatenate modules in .REL files to form a new library. In order to extract modules from previous libraries or .REL files, a powerful syntax has been devised to specify ranges of modules within a .REL file. The simplest way to specify a module within a file is simply to use the name of the module. For example: SIN But a relative quantity plus or minus 255 may also be used. For example: SIN+1 specifies the module after SIN and SIN-1 specifies the one before it. Ranges of modules may also be specified by using two dots: ..SIN means all modules up to and including SIN. SIN.. means all modules from SIN to the end of the file. SIN..COS means SIN and COS and all the modules in between. Ranges of modules and relative offsets may also be used in combination: SIN+1..COS-1 To select a given module from a file, use the name of the file followed by the module(s) specified enclosed in angle brackets and separated by commas: FORLIB or MYLIB.REL or BIGLIB.REL etc. If no modules are selected from a file, the all the modules in the file are selected: TESTLIB.REL 5.2 LIB-80 SWITCHES NOTE /E will destroy your current library if there is no new library under construction. Exit LIB-80 using Control-C if you are not revising the library. A number of switches are used to control LIB-80 operation. These switches are always preceded by a slash. /O Octal - set Octal typeout mode for /L command. /H Hex - set Hex typeout for /L command (default). /U List the symbols which would remain undefined on a search through the file specified. /L List the modules in the files specified and symbol definitions the contain. /C (Create) Throw away the library under construction and start over. /E Exit to CP/M. The library under construction (.LIB) is revised to .REL and any previous copy is deleted. NOTE /E will destroy you current library if there is no new library under construction. Exit LIB-80 using Control-C if you are not revising the library. /R Rename - same as /E but does not exit to CP/M on completion. 5.3 LIB-80 LISTINGS To list the contents of a file in cross reference format, use /L: *FORLIB/L When building libraries, it is important to order the modules such that any intermodule references are "forward". That is, the module containing the global reference should physically appear ahead of the module containing the entry point. Otherwise, LINK-80 may not satisfy all global references on a single pass through the library. Use /U to list the symbols which could be undefined in a single pass through a library. If a module in the library makes a backward reference to a symbol in another module, /U will list that symbol. Example: *SYSLIB/U NOTE: Since certain modules in the standard FORTRAN and COBOL systems are always force-loaded, they will be listed as undefined by /U, but will not cause a problem when loading FORTRAN or COBOL programs. Listings are currently always sent to the terminal; use control-P to send the listing to the printer. 5.4 SAMPLE LIB SESSION BUILDING A LIBRARY: A>LIB *TRANLIB=SIN,COS,TAN,ATAN,ACOG *EXP */E A> LISTING A LIBRARY: A>LIB *TRANLIB.LIB/U *TRANLIB.LIB/U . . . (List of symbols in TRANLIB.LIB) . . . *Control-C A> 5.5 SUMMARY OF SWITCHES AND SYNTAX /O Octal - set listing radix /H Hex - set listing radix /U List undefineds /L List cross reference /C Create - start LIB over /E Exit - rename .LIB to .REL and exit /R Rename - Rename .LIB to .REL module::=module name [+ or - number] module sequence ::= module | ..module | module.. | module1..module2 file specification::=filename [[,]] command::= [library filename=] [list of file specifications] [list of switches] APPENDIX A TEKDOS Operating System The command formats for MACRO-80, LINK-80 and CREF-80 differ slightly under the TEKDOS operating system. A.1 TEKDOS COMMAND FILES The files F80, M80, and C80 are actually TEKDOS command files for the compiler, assembler, loader, and cross reference programs, respectively. These command files set the emulation mode to 0 and select the Z-80 assembler processor (see TEKDOS documentation), then execute the appropriate program file. You will note that all of these command files are set up to execute the Microsoft programs from drive 1. Link-80 will also look for the library (FORLIB) on drive 1. If you wish to exectute any of this software from drive 0, the command file must be edited and LINK-80 should be given an explicit library search directive "FORLIB-S". (See Section 4.2.1 of this manual.) A.2 MACRO-80 The M80 assembler accepts command lines only. A prompt is not displayed and interactive commands are not accepted. Commands have the same format as TEKDOS assembler commands; i.e., three filenames or device name parameters plus optional switches. M80 [objfile] [lstfile] sourcefile [sw1] [sw2...] The object ans listing file parameters are optional. These files will not be created if the parameters are omitted, however any error messages will still be displayed on the console. The available switches are as described in Chapter 2 of this manual, except that the switches are delimited by commas or spaces instead of slashes. -over- Typed by PtB, 89/4, please spread as wide as possible, among programmers and whoever could use this manual. џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/* (C) Copyright by ASCII Corporation, 1989 All rights Reserved. File: malloc.h Storage Management Functions */ #ifndef HEADERtype #include #endif /* HEADERtype */ /* high level storage management functions */ #define malloc(size) alloc(size) extern char *alloc(); extern VOID free(); /* low level storage management functions */ extern char *sbrk(); extern VOID rsvstk(); џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/* (C) Copyright by ASCII Corporation, 1989 All rights Reserved. File: memory.h Memory Manipulate Functions */ #ifndef HEADERtype #include #endif /* HEADERtype */ extern VOID setmem(), memset(); extern VOID movmem(), memcpy(); џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/* Generate "hello.com" */ dir hello.* dir rnd.* dir line.* dir color.* dir calbio.* cf hello cg -k hello m80 =hello/z del hello.mac m80 =rnd/z l80 ck,hello,rnd,line,color,calbio,clib/s,crun/s,cend,hello/n/e:xmain del hello.rel hello llo џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/* Generate "q.com" */ dir q.* dir rnd.* dir line.* dir color.* dir calbio.* cf q cg -k q m80 =q/z del q.mac m80 =rnd/z l80 ck,q,rnd,line,color,calbio,clib/s,crun/s,cend,q/n/e:xmain del q.rel q l q џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџУELPS    (/4:DcfsŽ”ЈВЙПадчюіџ  AUZiqt„‘œŸ /; 2Jyў, еЭuCбУu+:iBЗ(zГШ*В?#"В?:Ь>ЗФЛь*В?:Б?GУ‘)Эі*:Ь>ЗР:ё?ўUР<2ё?ЩЭмЭ>*Э–#ЭЈyў,(яЩ:г>=њр+G2г>:д>=И 2д>6 MSX-DOS version 1.03 Copyright 1984 by Microsoft $1!ЩёЭ0@хе:@ѓЇЬс!€ ЏэBысэRoхеХ|O!^#V#zГ( ы|€g~wыюсСбеэАЩёў,(КЩЭмЭ”+Э>*yў, еЭuCбУu+:iBЗ(zГШ*В?#"В?:Ь>ЗФЛь*В?:Б?GУ‘)Эі*:Ь>ЗР:ё?ўUР<2ё?ЩЭмЭ>*Э–#ЭЈyў,(яЩ:г>=њр+G2г>:д>=И 2д>:д>! "#ѓ!"%ѓ!@ѓ~t2УАў$Ше_ЭTTбѓ–(=Т‚4=2?<2е>У‚5ѓ:г>_ў2>аW!ж>7~ЩѕЭ ,е>0wЏ!г>4:?ЗЪ‘ё2?!д>З(4Щ:г>=–2 ?ЩЭ,zГЬЭ,zГ/(ФЏС:Ь>Э‚=И:Ь>Э‚ЗЏі7ѕ:?З(!Э–ЭW ц  ЭB(ёŸ‘ё?ŸŒ:?ЗТ”+СЏ!А"&?У,і7ѕЭц, э"&?xБ(кді7ѕЭц, меХ~ў, #"&?Эц, "&?yСсУ1mџџЦAЫy [2"!ЩyЫG(!ЭэАў эѕ(цўб( ўс(ЭЩё ЭЩёёШ&ЭЩёЭETѕЭƒQёц_ўIШ ўRШ ўAШс2ХДЭЩёЩЭhѓћ1 :;ђЗ( АХЭЭ]S:З(QЭЩёЭETц_ўN(ўY эЏ2ЭkѓћУ1 Эhѓћ! "!">У22ЭЉP*эK~#ƒ_~#ŠW xБ ѓ*эR *Эkѓћщ[ ЭbDЗ( pЭЩёЭNTь!"| "~ #"i !"=ђ[ !ЭВGЗ(жЭkѓћУЏGЩ>2ѓyў10ѓэsѓ1 ў эSѓў э[ѓх!Šух!О ~#F#fhу2=З(хы">@O< ~OэАс@ЭhѓћЩѕЭkѓћ:=З(Oхэ[>!@< OэАс:ѓЗ(ёo`э{ѓЩёэ{ѓЩETЇSnTtTeTTTbTNTЩёџрPШ=Щэsѓ1 ЭhѓћЭx@Эkѓћэ{ѓЩyэsѓ1 ЭhѓћЭ@Эkѓћэ{ѓЩCOMMAND COMџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџУ”ёЩ€еЭмбЭ€ў"(ў'ФœO{‡(€ЏѕЭkў Ъ‘Й Э4Й GёХЗФ1ёВуСѕx‡x(ЋЭ1ёў,(КЩЭмЭ”+Э>*yў, еЭuCбУu+:iBЗ(zГШ*В?#"В?:Ь>ЗФЛь*В?:Б?GУ‘)Эі*:Ь>ЗР:ё?ўUР<2ё?ЩЭмЭ>*Э–#ЭЈyў,(яЩ:г>=њр+G2г>:д>=И 2д>:д>Ÿ<2?Э ,2е>У‚ЭЁЩ:е>ЗФЁ:г>ЗЬЁ!д>–(=Т‚4=2?<2е>У‚5ѓ:г>_ў2>аW!ж>7~ЩѕЭ ,е>0wЏ!г>4:?ЗЪ‘ё2?!д>З(4Щ:г>=–2 ?ЩЭ,zГЬЭ,zГ/(ФЏС:Ь>Э‚=И:Ь>Э‚ЗЏі7ѕ:?З(!Э–ЭW ц  ЭB(ёŸ‘ё?ŸŒ:?ЗТ”+СЏ!А"&?У,і7ѕЭц, э"&?xБ(кді7ѕЭц, меХ~ў, #"&?Эц, "&?yСсЙ ГО Џ# їЌЭКссБЭў<ФœЭfЗ Э4Эfў& Э4ы*&?+#~ў> T]ў, zГ ў ь#х*&?zГЬœы}“O|šGс:ё?ў ЩЭ–OХФœ7Э$ЭЉ/#~і@wСц ЬЮ~ц€ФАЖwyў,(жЩ @OY@;Э*&?+~#ў ( Й( (ѓюЏ#"&?ЩЭў(ТœЭkў'ТœOЭk-ЭxЭkў)ФœУ‚>2?AЏ2?;Џ2 ?5Э–Тщ- (ѕЭBФWТн-~і@wёў,РЭ–ТКц>2 ?Щ>џ2?Џ2?У‚>2?іЏ>џ:eB/o:Ь>З(ф}2eB2 ?л>€2Х>д>2Х>ЭЏ2Х>Ч>џ2в>Э”+Џ2в>zЗТœ:ё?ў Р{=јЪœўвœ<2б>ЏgkУпЭ”+zЗТœ:Ь>ЗШ{З(ў мœ:ё?ў {2?Э№ЭFУ$Э–Тœѕ:Щ?ў8ЭФ>!У?w#"?:Ь>ЗФRёў,(зЩ: ?ЗТКЭ*&?+ЭPЗ(ЭйPУг=2 ?*&?~#"&?ў!0єЩЭў(ТœЭkў'ТœЭ–Тœў'ТœЭkў)ТœЭ‚:Ь>ЗР:Щ?ў8>Ъ?!5AG~ЗТАw# љpЩЭm/Эў/ТœЭ–Фe/ў/ТœЭ‚Э$#~цаТАх~і$wЭ *с+"К?>2Б?!"В?У)ѕ>2Щ?ёЩ:Ф?ЗШСУП€Э– ѕЗеЭ$ЭЉ/б~Вw#~цd ~цГwёў,(оЩЭœііwЭАэ~цўBиЏwхЏ#w#w#wсЩЭ–Э~‡дК#~ў(ўФК€Уy/"#?Э0:ё?2?ўUШxц€ТЋxі 2?*#?"?Эўusage: MX [options] filename [module list] options: -l generates batch to make library file -oX makes output files on drive X -uX replaces every underscore(_) character to X ~ЗЪї~ЛШ#Уы!Щхw#ЗТќ+ w#ЗТсЩЗШОЪ!Щ#У~ў Ъ*~ў Р#У :эЗШ:эw#>:w#ЩхеKBх!9q#pсЭ-~ЗЪа~ў*ТˆYPЗЪcУZ{‘z˜к„еЭ -б#ХеЭ=бСЗЪ€>УлУcЏУл~ў?Т— ЗТЗЏУл~!9q#pЭО,ѕ!9N#F ЭО,сМЪЗЏУл!9N#F!9q#pЭІ-#Э-УM ЗТк>УлЏССЩы!ю~#Ж+Ъх~#foы"qыЭ=сы*qыЗЪ>Щ##УтЏЩout of memory хЭЁ,#Эn,"s}Є<Ъ6!Эn,}Є<ТN хХ~#Х!Э7СС!Э‰с"uб*s"sЭГ,*oы*uхs#rсх##ы*sыs#rс"oЩAREL.BAT.MACwcan't create: %smissing ENDMODULE ENDMODULE END х!‹Э.бЭГ,‹!wЭ!‹Э€‹!wЭћ…ХwХ!ЭгСС"—х}ДТ wХ‡Х~#Х!Э7ССС!Э‰*MDш!ЭL}ДТ> ˜Х~#Х!Э7СС!Э‰!Э ЋЭ}ДТ\ *—ы!ЭЌУ б!ЕеЭЌсЭ. ЩMODULE*MDш!ЭL}ДШЭ)!Э i Э}ДЪp х!™"ЙсЭ ы*Йы~ЗЪЗ ~ў ЪЗ ~#УЅ Џыw!™ЭоЗЪp !™ЭЛУp $$$.TCOrwcan't open: [%s] *лЭ. !ЛЭO&Л!ЪЭю%е ХЛХ!ЭгСС"йз ХЪХ!ЭгСС"л}ДТF ЪХй Х~#Х!Э7ССС!Э‰*н{•zœвq *йеMDш!ЭL*лы!ЭЌбУI *йЭ. Щillegal .TCO file *лы!ЭЌ*н#"н*MDш!ЭL}ДТХ x Х~#Х!Э7СС!Э‰*лы!ЭЌ*н#"н:ў)Тœ Щ.TCOCREL.BAT"п!дџ9љ*пех!$9Э."у!9ў ЪG е"сХyжxов: ў_Т. :nУ2 ЭО,*уw#"уСб*сw#У Џw*уwп !$9ы!ЛЭћ!9ЭосбЗЪ‰ "п! 9ы!ф Э! 9Э!† х*пхЩУ ! хеЩ!,9љЩ*лы!ЭЌ(!Эы}ДЪо *MDш!ЭL}ДЪд :ў)Ъд *лы!ЭЌУЌ *лы!ЭЌЭы Щ(!Эы}ДШ*MDш!ЭL}ДШ:ў}Тэ Щ*лы!ЭЌ*MDш!ЭL}ДЪ9 :ў}Ъ9 *лы!ЭЌУ *лы!ЭЌЭы Щ*MDш!ЭL}ДШ:ў}ТG Щwcan't create: [%s] error: %s !ЪЭ.Э ЭГ,a ХЪХ!ЭгСС"л}ДТС ЪХc Х~#Х!Э7ССС!Э‰!"н*MDш!ЭL}ДЪL Э):ўUЪќ ўSЪќ ўVЪ ўGЪ ўXЪ" У. Э‹ УЧ *лы!ЭЌ*н#"нУЧ т !• Ээ УЧ G ! Ээ УЧ Хw Х~#Х!Э7ССС!Э‰УЧ *лЭ. !ЪЭO&Щlib80 %s=%s/E lib80 %s=%s%02d,%s/E yАТ“ ехY Х!ЭGСССЩе"х!џџ хЭš-х*ххh Х!ЭGСССССЩlib80 %s%02d=%s/e lib80 %s%02d=%s%02d,%s/e yАТћ еХЭš-хД Х!ЭGССССЩе!џџ хЭš-хХЭЌ- хЧ Х!ЭGССССССЩMX00"ч!–џ9љ*чх!d9Э.ЭГ,!"эс"чЭЁ,ы!a9}“o|šg"ы!9ыы"щы*o}ДЪцх##~#foЭЁ,ы*щыы*ыы}“|šкВЏ*щы!d9х*эMD"э!9ы*чЭс С*э#"э!9ыУШ!9ы*щы{Н zМЪШ>,сх##~#fo~#ЗТаы"щыс~#foУcЏ!b9х*эMD!9ы*чЭ~ С!j9љЩ%sы"яыЭz!Эz}Є<Ш}ў%ТR!Эz}ў1Т>*яхХ!ЭGССУ>%хЭ;с}Є<Ъ}Э;У}Э;УrSkelton file %s not found "јх*[}ДТД!"ё*ёы!ЭH-вД*ёЭœ*"[}ДТД*ё€џ "ёУŒб{ВЪ,*["ѕ*Yе}Л |КТт*ёы!ЭH-вт>r2їУ']Х*јMDХ!хi`"јсЭгСС"ѓх*јMDс}ДТ"Х_Х~#Х!Э7ССС!Э‰>w2їс"YЩ:їўrТF*ѕ#"ѕ+n&}ДР!џџЩ*ѓЭЄ MDХy <Ъ‚*ёх*ѕ#ы*[{•ozœgбЭH-вy*ѕq#"ѕУ!"YУ*ѕ6*ѓЭ. сЩMSX-C module extracting utility ver 1.10P bad option: -%c.MACr.TCOrcan't open: %s.MAC or %s.TCO .LIB*complete ""ы"$Х~#Х!Э7ССЏ2э>02nЏ2'*"ыы""ы*$##"${ВЪфхN#F сў-ТфN#Fi`"(~ЗЪ+~хЭО,бўLЪ}ўDЪкўXЪкўUЪ…ўOЪ›УР>2'Ук!~ЗЪкы"(ы2nУк!~ЗЪкы"(ы2э!~ў:Ткы"(УкOХКХ~#Х!Э7ССС!Э‰*(#"(УVы""ы{ВТ,Х~#Х!Э7СС!Э‰>2&ЯХ*$"$^#VЪ!њЭћх!ЭгСС"}ДТЏ2&жХ*$^#Vб!њЭћх!ЭгСС"}ДТ*$"$N#FХ*$N#FХиХ~#Х!Э7СССС!Э‰*$х~#fo:Эы#}=ДТœ*$~#foх!Э.біЭћ*"ыс##"${ВТЩ!ћ"ю!"№У§!}“|šвѓ"*ех)ы*$ы^#V**)ю s#rс#бУЬ)ю 6#6!"o:&ЗЪЭp УЭ‚ :'ЗЪ !Э"§Х~#Х!Э7СС*Э. ЩЭІ-MDЭ!!9ЭiЩr#Э!!9ЭiЩ"їAxБ(+w ѕ"ѕAЩЭ"U!№џ9љi`"Yы"W*U##х++~#fo"\с"g*\~#"\ЗЪчў%ТЯ!9"^х!"eЏ2a2b*\~ў-ТХ#"\>2b~ѕў0Тб>0Уг> 2`ёў0къў:въ!\ЭУэ!"cх*\~#"\2[ў.Т!\Э"e>2a*\~#"\2[ЭО,бсўXЪIўOЪNўDЪSўUЪzўLЪ ўSЪЙўCЪйЗЪАУДУ|У|*g#~Зђz*g~/O#~/G+q#p>-*^w#"^ы"c *g^#V#"g!^ЭЏo&ы*cы{•ozœg"cУ№"^е *gх^#V*^Эђысs#rбе*gN#F#"gi`"^ЭЁ,б{•ozœg"cУх*g##"g++~сw#"^ы+"cЏ*^w!9"^Џ2a:bЗТ4*c+"c#ы!ЭH-в4!)х*Wх*Yы:`Щ}Є<Т>џУш*^~ЗЪ}:aЗЪP*eы!ЭH-вs!aх*Wх*Yы*^~Щ}Є<Тl>џУш*e+"e*^#"^У4:bЗЪ*c+"c#ы!ЭH-в!Ѕх*Wх*Yы> Щ}Є<Т„>џУшЏУш!Фх*Wх*Yы:[Щ}Є<Т>џУш!мх*Wх*YыЩ}Є<Т>џУшЏ!9љЩхыюеХэАСбсхЫy :ёЫ(ех*юэ[№Эz"юэS№сб6-#ЫЙЭ06сЩхkb~‘#~˜#~о#~о0с)!>! эjЗэB0 ?еыЫ#Ы#Ы#Ыыб= х}сѕЭ0ёЦ0ў:8Цw#ЩХЭ‡ 0СЩ}/o|/g{/_z/WЩ*љ!х!€~#х…o6сУMSX-C ver 1.1 CKЩNVCON:w*:|out<*:|bad temporary drive rcan't open: can't make: <>"Л*Л"Л!Ь"У!Ь"С!€Эn,х!€Эn,"Ц!#"П+)бпq#pы"Н*ЛЭ|ыы"ЛыЗЪ ў|Ъ ў;Ъ ў<Т}*Ц"Сы"ЛУИў>ТЁ*Ц"Уы"Лыў>ТИы"Л>a2бУИ*П#"П+)ы*Ныы*Цыs#r*ЛыыЭ|ы*Цые~#"Лў"Ткy/OУыў\Ты~ЗЪы~#"Л~ЗЪџ ТШў Ъџў ТШЏы"ЦсЭтУO2Х*ЦѕЭГ,"Л"ШЭК!ЋЭЧ,"Ъхы*Ны}ДТџе:ХЗژ*Л#"Лў|Ҙ~хЭО,сўAкkўIвk#"Л!г"У2г2лУz!е"У>|2лЏ2м*Л~ў ژ~ў ژ~#!рЭЌ!Э‰ѕХ*Сх!ЭгСС}ДТХ~#!їЭЌ*С~#ЭЌ!Э‰бХ*Ух!ЭгСС}ДТђ~#!ЭЌ*У~#ЭЌ!Э‰б*ПЭ!Э‰ЭКЭхсl&бZ}жДЪ"}жДЪ.}=ДЪsУе!.х*%ѓN#FХЩЬ*С}Й |ИЪHх!ЭёсЭёЬ*У}Й |ИЪj:Хў|Ъjх!ЭёсЭё*Ш"ЛУее*С]TЗЪ—х!~ў:Тсў|Т—ЭO&бШ*Ъ|=ЕР*ЛеЭ|—Э#Э|"ЛЏ2€б{ў|Те!лЭO&*УлЭю%!кЭё*ЛЭё!—Э\Щ]T~ў"Р#~ЗЪJ~ў"Ъўў\ЪУC Т>У ЏO Ъ~#Уы#~ЗЪыўNЪ3ўnЪ3ўRЪ;ўrЪ;Уы> #Уы> #Уы~#УыЏЩCan't exec: "M!Њџ9љ*M"Mх!9ысЭх&ЗТ†!9ы>Э0-<Т›~#!OЭЌ*M~#ЭЌУХ\!ЭЭlЭЭ0ъ,!&9Э)-!Хх!(9х!9Щ!V9љЩ"ЫkbхЭ-сх#  Э-*ЫЭ|бЭs'Щы!€n& :€ЗЪ> w#|ўвwЗЪ#У}Ц2€Щ"!кџ9љ*&ы"!ых!9Э- !9Э-! 96C! 96O! 96M!9ысЭs'х*!ы!9ЭŒ&сы!&9љыЩ~ў Ъ…ў Р#У|]zіW!ЋЭк,ЩхеХеЭ{-бых!9qсЭ-}‘|˜кпYХЭ_-ыСеЭš-бЭЏУрЏѕ!9^еЭš-бЭ_-{ѕЭ”-^#Vr+sёў вЦ0У Ц7ё<СССЩы!хkbN#F ж0сў а)MD)) O ехы^#Vr+sсбУr#ЭЭ!Щхi`"Fс"Bы"Dы"J*D+"D}ДЪ‡*FЭЄ "H}Є<Ъ‡}*Jw#"Jў Т^Џ*Jы*H}Є<ТІ*B{Н zМТІ!Щ*BЩSH"Њ*Њ~#"ЊЗЪЧеЭЭ!б<ТЏ>џЩЏЩ "ЩЭH-кщы!ЭH-вэ!ЩЭІ-"Ы*Щх}=ДТ>RУ Эš-~ЭО,2Эбе{=ВЪ'Эš-#~ЭО,ўBТ'!У*!}2Юб{жВТ<Эš-У?!"Яf#ы"быхо#{‘z˜вk!~ЗЪk! ыы"быУKо#с{‘z˜кz!Щхе*ЫЭKбсЗЪкўЪœўЪЈўЪЈУД:ЭўRЪД!Щ:ЭўRТД!Щ:ЭўRТТ!УХ!}*ЮЕ!w!6#6ыЩеЭœ*ыС! s#r{ВТ№!Щ! ы*Яыs#r:ЭўRЪўAЪPўWЪPУ'Х*ЫЭ5$ыС! s#r{Ђ<Т9! ~#foЭj+!Щ>*ЮЕ! w! 6#6У'i`ўAТб"бх*ЫЭ5$ы*б s#rс{Ђ<Ъб*Ю,-Ъ•*б ~#foЭЫ$Уќ*бх#6сх####6#6*бЭЄ }Є<ТЇС! ~/_#~/W! ~#foЭЫ$Уќ"бх*ЫЭт#ы*б s#rс{Ђ<Тќ ~#foЭj+!Щ>*ЮЕ*бы!w!еы*Яыs#rб!N#F!q#p*быыЩCON:LST:PRN:PUN:RDR:NUL:]Tх!-ЭОбЗЪ_!УК!2еЭОбЗЪq!УК!7еЭОбЗЪƒ!УК!<еЭОбЗЪ•!УК!AеЭОбЗЪЇ!УК!FЭОЗЪЗ!УК!}ЩyўKBыЗЪры"М ХЭО,*Мы!џџСОЪСЏЩ>Щс:f#о#{‘z˜в !е~ЗЪ ыЭ. б! ыУш!"у}ж|оахЭй(}ДЪ% *уЭ›$с#"уУ ы{ВТ7 >џЩ!- qеЗҘ !~цеЗЪi !~цеЗТ` >Э"сЭщ"O!- qyсх<Т~  ~#foЭ›$УŒ  ~#foЭ›$2- с ~#foЭj+с#6!- NyЩ C"Ђ х#~цсЗЪЕ ЭO!Щ*Ђ хЭO!б}ДТХ УЕ }жДЪд }ж ДЪм Щ}Эё !џџЩkbеЭO!б}ж ДШ}Эё ! ЩO!№ q!~цТ!>џЩЗЪ!ўЪD!ўЪD!Щ!N#F!y–#xžвB!:№ !KB^#Vr+s! ^#Vr+sЏЩ!q#pЏЩыЗЪa!ўЪš!=Ъš!УЦ!!~#ЖТz!kbеЭ|"б<Тz!!џџЩ!е~Цџw#~Юџwб!^#Vr+so&Щ!N#FyАЪД!!6#6i`Щ=ТН!Э**Щ>Э0-o&Щ!џџЩiBУ2Ъ!ы"Ы!ыў Т№!!~цТ№!> Э"<Т№!>џЩ*Ы!ы:Ъ!Э"<Т">џЩЏЩOЗЪ "ўЪZ"ўЪc"ўЪl"ўЪx"Уu"!~#ЖТ:"kbХеЭщ"бС<Т:">џЩ!е~Цџw#~Юџwб!^#Vr+syУx"Y>Э0-Уx"Y>Э0-Уx"Y>Э0-Уx">џЩЏЩ"qы!~цТ‘"!~цТ”">џЩ! N#FХ!KB^#V! ~#foхi`"z"сСЭr%ы*z"MD! s#r{ВТе"! ~іw>џЩ! YPN#F!q#pЏЩqHыы"ч"ы!~цТ#!~цТ#>џЩ! N#F!y–O#xžGХ!KB^#V! ~#foСХЭБ%СyН xМЪD#*ч"#~іw>џЩ*ч"ы!N#F!q#p! N#F!q#pЏЩBЭѓM"о#Эz(}Є<Тђ#!џџЩхЭй(]T"р#*о#Эх&сы*р#ыЗТ$ех>Э0-сб<Т$ЭП(!џџЩх!%6!6#6сЩц)"1$њQ$!ЭH-кQ$еЭz(С}Є<ТU$!џџЩХхЭй(]T"3$*1$Эх&сы*3$ыСЗТ$Хех>Э0-сбС<Т†$ЭП(!џџЩхyџЩы>Э0-*™$ѕЭП(ё<ТС$!џџУФ$!}Щ*C|=y2Ш$ўвф$еЭй(ыы"Щ$ыс{ВТч$>џЩ"Ц$е:Ш$ЗТ%!#6#6!!6#6У(%ўТ(%!N#F!!q#p!N#F!#q#p*Ц$"Ц$$%ђ>%!#^#Vr+sС!! ^#Vхых*Ц$MDс ысr+s{‘z˜вl%*Щ$MD!# ^#Vr+sЏЩСбсы"n%ыХЭй(С}ДЪ%Х]T% ~цСЗТ”%!џџЩХы"p%*n%ы>Э0-С*p%ы>'Э0-Щы"­%ыХЭй(С}ДЪЯ%Х]T% ~цСЗТг%!џџЩХы"Џ%*­%ы>Э0-С*Џ%ы>&Э0-Щ"ь%!Дџ9љ*ь%"ь%!9еы*ь%Эх&сЗТ&х!(9ысЭх&ЗЪ &>џУG& !9ы!&9Э*-!9ы>Э0-<ТC&!џџУF&!}!L9љЩrO"M&!кџ9љ*M&х!9ысЭх&<Тm&>џУ…&!9ы>Э0-<Т&!џџУ„&!}!&9љЩУ~ЗЪš&~Ц@>:х# ЪА&~ў ЪА& #Уž&!‹&qс :‹&O Ъс&~ў Ъс&ѕyўТе&>.ё y2‹&#УЛ&ЏыЩхkb&хЭ-сх#  Э-бсеЭs'бхеЭE'бс<Т'>џЩх! Ъ)'~#ў?Ъ)'У'с~ЗЪ5'!џџУC'Ъ@'!ўџУC'!}ЩЗТK'ЏЩ=ўкT'>џЩѕ>Э0-ёGЭV-}цЪk'!Уn'!џџ}Щ` "p'~еЭО,ж@2r'СЗЪŸ'ў вŸ'*p'х#~сў:ТŸ':r'##"p'*p'~ХхЭ0(сСХЗЪЪ'х! Х Э-С! ысЭю'~Сў.Рх! Х Э-С! ыс#Эю'ЩYды"ь'ыхХ~Э0(СсЗШх Ъ$( Х~ЭО,*ь'wСў*Т$( Ъ$( >?w#"ь'У(*ь'#"ь'с#Уѓ'ў=Ъl(ў;Ъl(ў,Ъl(ў+Ъl(ў/Ъl(ў"Ъl(ў[Ъl(ў]Ъl(ў:Ъl(ў.Ъl(ўЪl(ўџТn(ЏЩў!вu(ЏЩ>ЩR@{жzовЙ(kb)ѕ( ~#ЖТЕ(!&ы"x(ыеЭœ*х*x(ыы)ѕ( бs#rс{ВЪЙ(ЩУ}(!џџЩ@™"Н(Эй(}ДШЭj+*Н()ѕ( 6#6Щ$%њч(ЭH-кы(!Щ)ѕ( ~#foЩ> Э0-ЩР!я@4ЛTРaєSKIPSPSР!є@7wYР!ў@6РaCATDRIХ\РaAMATCHЊS@Ÿ?SAUT2€SР!!@17І\Р!Є@8ˆ^Р!\@9ŽSР!.@11Р!7@10Р!X@12T@@?LAUT4Р!T@13Р!Џ@14Р!k@15Р!‹@16ИY*(*}ДТu*>џ2#)#)> Э0- >Э0-!$)n&"(**(*%) "&**&*6 #"&**&*6 *(*##"(*!%)"&**&*#"&*+~*(*+"(*ўТ”*!"(*!џџЩo&Щ@###ЭV-#MDi`"š**f,"˜*}ДТЮ*!h,"˜*х!h,"f,"h,!"j,с^#V!~‘#~˜к"+!~Й# ~ИТљ*kbN#F*˜*q#pУ+!~‘w#~˜w!~#fo))ы!q#p*˜*"f,!Щ*f,{Н zМТZ+i`))Эn,}Є<Т?+!Щх##х*š*MDсq#pс####ХЭj+*f,ыСы"˜*ыы^#VУб*?82++++MD*f,ыы"h+ы{‘z˜вŠ+kby–#xžкБ+kb{–#zžкЅ+{‘z˜кБ+kby–#xžкБ+ы^#Vы"h+ыУy+kbхi`"f+сN#FХ*f+MD! ~#fo)) хi`"f+сСе}Й |ИТ,*f+х##^#Vх*h+"h+~#fo##~#foысr+s*h+~#foN#Fсq#pУ,ыN#F*f+q#pб!~#fo))ех*f+MDс}Й |ИТ\,!е^#Vх! ~#foысr+si`N#Fбыq#pУ`,ыq#pбы"f,Щ26Ы-MD*l,ы!9}“_|šW*Ÿ,{•ozœg}‘|˜в’,!џџЩ*l,х*l, "l,сЩш]T~ЗЪЌ,#УЃ,}“o|šgЩхw#ЗТД,сЩўaиў{аж ЩСХы!9ыq#p#s#r!ЩN#F#~#foљХы}ДР#ЩљХх6#6Эбkzжиg'ЭЗШ€ЭУyKB_yАШs]T У*-ыyАШэАЩ`iOУMSX-C ver 1.1 CLIB|ЊђP-zМЩ|КР}ЛЩШЫ<ЫјBK>)ыэj8хэBс8ЇэBы= ьЩУ-У-у^#V#уы9s#rыЩ! УГ-!УГ-!УГ-!УГ-с^#V#хы9^#VыЩMSX-C ver 1.1 CRUNP-zМЩ|КР}ЛЩШЫ<ЫјBK>)ыэj8хэBс8ЇэBы= ьЩУџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/* (C) Copyright by ASCII Corporation, 1989 All rights Reserved. File: process.h Process Control Functions */ #ifndef HEADERtype #include #endif /* HEADERtype */ extern VOID execl(.), execlp(.); extern VOID execv(), execvp(); extern VOID exit(), _exit(); џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/***************************/ /* MSX-C sample program */ /***************************/ #pragma nonrec #include TINY line(); unsigned rnd(); VOID chgmod(); VOID totext(); TINY *color(); VOID cls(); typedef struct { int x1; int y1; int x2; int y2; TINY bc; } DATA; #define LINES 80 #define LOG_OP (TINY)3 /*xor*/ int tmpx, tmpy, incx, incy; /**If MSX2, use screen mode 8**/ BOOL MSX2 = TRUE; int xmax = 255; int ymax = 211; int cmax = 255; VOID draw(c, p) TINY c; DATA *p; { if (!MSX2) p->bc = (TINY)0; line(p->x1, p->y1, p->x2, p->y2, p->bc, LOG_OP); /*Erase*/ if ((tmpx += incx) < 0 || tmpx > xmax) { incx = -incx; tmpx += incx; } if ((tmpy += incy) < 0 || tmpy > ymax) { incy = -incy; tmpy += incy; } p->x1 = p->x2; p->y1 = p->y2; p->x2 = tmpx; p->y2 = tmpy; p->bc = c; line(p->x1, p->y1, p->x2, p->y2, p->bc, LOG_OP); /*Draw*/ } # define EXBRSA (TINY *)(0xfaf8) /*Work area for MSX2 sub-rom slot address*/ /*Used to know MSX version number. */ TINY *setup() { TINY *prev; /*Previous color*/ if (*(EXBRSA))/*If MSX2*/ chgmod((TINY)8); else { MSX2 = FALSE; ymax = 191; cmax = 15; chgmod((TINY)2); } prev = color((TINY)cmax, (TINY)0, (TINY)0); /*Save previous color*/ cls(); return(prev); /*Return previous color*/ } main() { DATA l[LINES]; DATA *p = &l[0]; TINY i, c, *prev; prev = setup(); /*adapt valiables to screen mode*/ for (i = 0; i < LINES; i++, p++) { p->x1 = 0; p->y1 = 0; p->x2 = 0; p->y2 = 0; p->bc = (TINY)0; } tmpx = rnd((unsigned)xmax); tmpy = rnd((unsigned)ymax); while (!kbhit()) { c = (TINY)rnd((unsigned)cmax + 1); /*Color*/ incx = rnd((unsigned)11) - 5; /*Range (-5) to 5*/ incy = rnd((unsigned)11) - 5; p = &l[0]; for (i = 0; i < LINES; i++) draw(c, p++); } color(prev[0], prev[1], prev[2]); /*Previous color*/ totext(); /*Return to text mode*/ } џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџУiџгџѕ:ЗТ%!6еХ!nх!N#FХ!N#F!е^#Vс~#foЭpССС*ы*"$%њn*ы*Э3в†*}/o|/g#"*ы*"* ы*"$%њЃ*ы*Э3вЛ* }/o|/g#" * ы*"б!N#Fkbq#p!N#F!q#p*х!ы" ыбs#r*ы* MD! s#r! хi`" сёwХ* ы!nх!N#FХ!N#F!е^#Vс~#foЭpСССЩ:јњЗЪC>ЭвУXЏ2!П"!">Эв*}ЭЃхЭрсЩ!0§9љ!9" Э4ЏхўPвЖ* ыkb6#6!6#6!6#6!6#6!6У2ж§"з§йн!fЭЩ! 9љЩ> Э-ЗЪ+>ЩЏЩ`iOУ|Њђ;zМЩ|КР}ЛЩУMу^#V#уы9s#rыЩ!Уaс^#V#хы9^#VыЩџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ0CBE ?CLIB 0D57 ?CRUN 037C @MAIN@ 0103 XMAIN 0CD2 ?CPSHD 013D CMAX@ 013F DRAW@ 012F INCX@ 0131 INCY@ 09A0 KBHIT@ 0291 MAIN@ 0138 MSX2@ 025C SETUP@ 012B TMPX@ 012D TMPY@ 0139 XMAX@ 013B YMAX@ 0C4A @CHKVE 08C0 @IOB@ 055C @SKIPS 0499 @STDEN 04F1 @UNQUO 0A12 ALLOC@ 0569 EXIT@ 0595 GETENV 0995 STRCPY 09AE ISATTY 0730 SETVBU 0C44 @EXIT@ 05EF FCLOSE 0CA8 CALLA@ 0983 STRLEN 0C7D CLOSE@ 0802 FFLUSH 0AE0 FREE@ 0668 PUTC@ 06BE @PUTC@ 0CE9 ?DVIHD 0D44 ?LAUT2 0974 @BUFFS 0C87 @SEEK@ 0C9F WRITE@ 0CB8 BDOS@ 09CB @IOCTL 0D3E ?LAUT8 0D2B ?SAUT6 0C17 CALLXX 0CE0 ?SRNHB 0BDC @ALLOC 0BDE @BASE@ 0BE4 SBRK@ 0D6B @ENDX@ 0C15 @TOREL 0C1B RETREG 0CA8 CALL@ 0CB8 BDOSH@ 0D04 ?ABSHL 0D0F ?DVNHD 0D07 ?NEGHL 0D08 ?NOTHL 0D37 ?SAUT 0D31 ?SAUHL 0D51 ?LAUT 0D4A ?LAUHL џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ ; MSX-C ver 1.20p (code generator) dseg tmpx@: defs 2 tmpy@: defs 2 incx@: defs 2 incy@: defs 2 cseg MSX2@: defb 1 xmax@: defw 255 ymax@: defw 211 cmax@: defw 255 dseg ?19: defs 2 cseg draw@: push af ld a,(MSX2@) or a jp nz,@0 ld hl,8 add hl,de ld (hl),0 @0: ld c,3 push de push bc ld hl,8 add hl,de ld l,(hl) push hl ld hl,6 add hl,de ld c,(hl) inc hl ld b,(hl) push bc ld hl,4 add hl,de ld c,(hl) inc hl ld b,(hl) ld hl,2 add hl,de push de ld e,(hl) inc hl ld d,(hl) pop hl ld a,(hl) inc hl ld h,(hl) ld l,a call line@ pop bc pop bc pop bc ld hl,(incx@) ex de,hl ld hl,(tmpx@) add hl,de ld (tmpx@),hl inc h dec h jp m,@1 ld hl,(tmpx@) ex de,hl ld hl,(xmax@) call ?CPSHD jp nc,@2 @1: ld hl,(incx@) ld a,l cpl ld l,a ld a,h cpl ld h,a inc hl ld (incx@),hl ld hl,(incx@) ex de,hl ld hl,(tmpx@) add hl,de ld (tmpx@),hl @2: ld hl,(incy@) ex de,hl ld hl,(tmpy@) add hl,de ld (tmpy@),hl inc h dec h jp m,@3 ld hl,(tmpy@) ex de,hl ld hl,(ymax@) call ?CPSHD jp nc,@4 @3: ld hl,(incy@) ld a,l cpl ld l,a ld a,h cpl ld h,a inc hl ld (incy@),hl ld hl,(incy@) ex de,hl ld hl,(tmpy@) add hl,de ld (tmpy@),hl @4: pop de ld hl,4 add hl,de ld c,(hl) inc hl ld b,(hl) ld l,e ld h,d ld (hl),c inc hl ld (hl),b ld hl,6 add hl,de ld c,(hl) inc hl ld b,(hl) ld hl,2 add hl,de ld (hl),c inc hl ld (hl),b ld hl,(tmpx@) push hl ld hl,4 add hl,de ex de,hl ld (?19),hl ex de,hl pop de ld (hl),e inc hl ld (hl),d ld hl,(tmpy@) ex de,hl ld hl,(?19) ld c,l ld b,h ld hl,6 add hl,bc ld (hl),e inc hl ld (hl),d ld hl,8 add hl,bc push hl ld l,c ld h,b ld (?19),hl pop hl pop af ld (hl),a ld c,3 push bc ld hl,(?19) ex de,hl ld hl,8 add hl,de ld l,(hl) push hl ld hl,6 add hl,de ld c,(hl) inc hl ld b,(hl) push bc ld hl,4 add hl,de ld c,(hl) inc hl ld b,(hl) ld hl,2 add hl,de push de ld e,(hl) inc hl ld d,(hl) pop hl ld a,(hl) inc hl ld h,(hl) ld l,a call line@ pop bc pop bc pop bc ret setup@: ld a,(64248) or a jp z,@5 ld a,8 call chgmod jp @6 @5: xor a ld (MSX2@),a ld hl,191 ld (ymax@),hl ld hl,15 ld (cmax@),hl ld a,2 call chgmod @6: ld c,0 ld e,0 ld hl,(cmax@) ld a,l call color@ push hl call cls@ pop hl ret dseg ?28: defs 2 ?30: defs 1 cseg main@: ld hl,64816 add hl,sp ld sp,hl ld hl,0 add hl,sp ld (?28),hl call setup@ xor a push hl @8: cp 80 jp nc,@7 ld hl,(?28) ex de,hl ld l,e ld h,d ld (hl),0 inc hl ld (hl),0 ld hl,2 add hl,de ld (hl),0 inc hl ld (hl),0 ld hl,4 add hl,de ld (hl),0 inc hl ld (hl),0 ld hl,6 add hl,de ld (hl),0 inc hl ld (hl),0 ld hl,8 add hl,de ld (hl),0 inc a ld hl,9 add hl,de ld (?28),hl jp @8 @7: ld hl,(xmax@) call rnd@ ld (tmpx@),hl ld hl,(ymax@) call rnd@ ld (tmpy@),hl @10: call kbhit@ or a jp nz,@9 ld hl,(cmax@) inc hl call rnd@ ld a,l ld (?30),a ld hl,11 call rnd@ ld bc,65531 add hl,bc ld (incx@),hl ld hl,11 call rnd@ ld bc,65531 add hl,bc ld (incy@),hl ld hl,2 add hl,sp ld (?28),hl xor a @11: cp 80 jp nc,@10 ld hl,(?28) ld bc,9 add hl,bc ld (?28),hl ld bc,65527 add hl,bc push af ex de,hl ld a,(?30) call draw@ pop af inc a jp @11 @9: pop de ld hl,2 add hl,de ld c,(hl) push bc ld hl,1 add hl,de ld c,e ld b,d ld e,(hl) ld a,(bc) pop bc call color@ call totext ld hl,720 add hl,sp ld sp,hl ret public tmpx@ public tmpy@ public incx@ public incy@ public MSX2@ public xmax@ public ymax@ public cmax@ public draw@ extrn line@ extrn ?CPSHD public setup@ extrn chgmod extrn color@ extrn cls@ public main@ extrn rnd@ extrn kbhit@ extrn totext end џџџџџџџџџџџџџџџџџ„T`UDе„Q5AeINCX@RSжP Tе5ƒ$a5aYMAX@PгPV TE$tMQUAMAIN@”€MJЅРр p И\-ПР 0ќ.—KAРЃЊЗaQP Р6ЋBMЮQ'ШЬQ'ШТ2е/ЪЮ№ŒЬof€  UbЌ` •ѕW€Xж*  аЅ]€Xњ/7Ÿцq‹ А ЌU€",*РРБV ˆАJњВ`ЌыP0mYiZАV>‹ЭчСyœF"РРЌ ы` Ш‹4D @dœ##ЬGРBIТ20„ œDgVrˆ@€ЫЌE‚m˜Œф*Р@БV&‘ `$ц#9AK”в``€ ФюБEX ж!&ч(„ “„df(„ “„daj—„eg јFf7Гiр‚СdŽŸЅЛ*™€ а‡RUу*!_€T BЈ(јЭЅР рx*  жhхf€LИ(\. –Ќ€ˆFбЫфBDX(›IUюWёAЅi€EX(жk1 €1АBFРи!#`Œl€‘АF6AШи<‚@‘ aж Uf€,* ` лT"Р@ аnТЁ€BЊ #fл0шЫA`mФОпр‘‚Р лœ}ПС", !",ЏVрU‚€ $E‚€/wј%ъы`РmxwАЂ!$ц(„ ’ШEрS›T@Y … ОY1˜р ~† І‰FШiщЉш‘•P†˜ІЈiЈ+‘а,†ž˜žЄЈŠH*шр@ ’œ†АЉ)Шk(›–„’ЈЉ‰)ШЈеš‚’œЉЊkHАЄœˆ$ЪhЊŠЊр Јš АЊ‰Њ (’,ЈžЈŠАЉЋ Ј+а0 Вš‚А8žџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ; ; Entry: HL = range ; ; Exit: HL = random number between 0..range-1 ; ; rndseed:dw 1231 dw 1951 ; rnd@:: push hl ; save range ld hl,(rndseed) ld e,l ld d,h add hl,hl ld c,l ld b,h jr nc,rnd1 inc bc rnd1: add hl,de ld (rndseed),hl ld hl,(rndseed+2) ld e,l ld d,h adc hl,hl add hl,de add hl,bc ld (rndseed+2),hl ; ; hl = full 16 bit random number ; ex de,hl ; DE = random number pop bc ; restore range ; ; hl:bc = bc * de ; ld hl,0 ld a,b ld b,17 jr shfmul mullp: jr nc,noadd add hl,de noadd: rr h rr l shfmul: rra rr c djnz mullp ld b,a ;result in bc ret ; end џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ„д“‘ E$фD @дрžOмЂЊ]* IЄA€PU.•І Ш$E@€lxCq€2Ы2УЁіXd є#Вc €I9pže ; ld hl,0 ld a,b ld b,17 jr shfmul mullp: jr nc,noadd add hl,de noadd: rr h rr l shfmul: rra rr c djnz mullp ld b,a ;result in bc ret ; end џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ ; ROM programming sample. Assembly language part ; This version runs under MSX and MSX2 MSX2 equ -1 ; Turn it 0 if it's MSX. extrn main@ public putcon public getcon public consts public catch@,throw@ ; Interface with MSX ; see also: MSX Technical data book. ; MSX BIOS entry INITXT equ 0006Ch CHSNS equ 0009Ch CHGET equ 0009Fh CHPUT equ 000A2h ; MSX BIOS work LINL40 equ 0F3AEh HIMEM equ 0FC4Ah ; ROM HEADER for MSX, this must be located at 4000h or 8000h. defb 'AB' defw start,0,0,0,0,0,0 ; putcon(ch) puts a character 'ch' to console putcon: jp CHPUT ; getcon() gets a character from console. getcon: jp CHGET ; check() returns console status. consts: call CHSNS ld a,0FFh ret nz xor a ret ; Initialize MSX and go to 'main()' start: ld hl,(HIMEM) ld sp,hl if MSX2 ld a,80 ld (LINL40),a call INITXT endif jp main@ ; Utility routines ; catch() and throw() ; catch(); catches control when succeeding routine throws it. catch@: ex de,hl ;de := hl ld hl,(catsp) ;previous caught address push hl push de ld hl,0 add hl,sp ld (catsp),hl ex de,hl ;hl := de retry: call indcal pop hl pop hl ld (catsp),hl ret ; throw() throws control when we want to abort current job. throw@: ld hl,(catsp) ld sp,hl pop hl push hl jp retry indcal: jp (hl) dseg catsp: ds 2 cseg end џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/* ROM programming example - simple debugger */ #pragma nonrec typedef char VOID, BOOL, TINY, BYTE, REG; typedef unsigned nat; extern VOID putcon(); extern char getcon(); extern BOOL consts(); extern VOID throw(), catch(); char line[80], *lp; BYTE *datap; #define putch(c) putcon(c) #define getch() getcon() VOID putcrlf() { putch('\r'); putch('\n'); } VOID putback() { putch('\b'); putch(' '); putch('\b'); } VOID sensebrk() { if (consts()) { getch(); throw(); } } VOID error() { putcrlf(); putch('?'); throw(); } char toupper(c) char c; { return ('a' <= c && c <= 'z' ? c - 'a' + 'A' : c); } VOID getline() { char c, *p; TINY ct; p = lp = line; ct = 0; for (;;) switch (c = getch()) { case '\b': if (ct != 0) { p--; ct--; putback(); } break; case '\r': case '\n': *p = '\0'; putch('\r'); return; case '\030': p = line; for (; ct != 0; ct--) putback(); break; default: if (c >= ' ') { *p++ = toupper(c); ct++; putch(c); } } } TINY inhex(c) char c; { if ((c -= '0') <= 9 || 10 <= (c -= 'A'-'0'-10) && c <= 15) return (c); return (-1); } nat gethex() { char c; nat v; v = 0; for (; (c = inhex(*lp)) != -1; lp++) v = v * 16 + c; return (v); } nat getdata() { if (inhex(*lp) == -1) error(); return (gethex()); } nat ogetdata(p) nat p; { switch(*lp) { case ',': case '\0': return (p); default: return (getdata()); } } #define getaddr() ((BYTE *)getdata()) #define ogetaddr(p) ((BYTE *)ogetdata((nat)p)) VOID chkecomma() { if (*lp != '\0' && *lp++ != ',') error(); } VOID chkend() { if (*lp != '\0') error(); } VOID puthex(n) TINY n; { putch(n < 10 ? n + '0' : n + 'A' - 10); } VOID puthxb(n) TINY n; { puthex(n >> 4); puthex(n & 0x0f); } VOID puthxw(n) nat n; { puthxb((TINY)(n >> 8)); puthxb((TINY)(n & 0xff)); } VOID xdump() { char *p, *q; BYTE *from, *to; TINY ct; from = ogetaddr(datap); chkecomma(); to = ogetaddr(from + 16*8 - 1); chkend(); for (p = from; from <= p && p <= to; p += 16) { sensebrk(); putcrlf(); puthxw(p); putch(' '); q = p; ct = 16; do { puthxb(*q++); putch(' '); } while (--ct != 0); putch(' '); q = p; ct = 16; do { putch((*q & 0x7f) < ' ' ? '.' : *q); q++; } while (--ct != 0); } datap = p; } VOID xsubst() { BYTE *p; p = ogetaddr(datap); chkend(); for (;;) { putcrlf(); puthxw(p); putch(' '); putch(' '); puthxb(*p); putch(' '); getline(); switch (line[0]) { case '.': return; case '^': p--; break; case '\0': p++; break; default: *p++ = getdata(); chkend(); } } } typedef struct { char mnemo; VOID (*func)(); } TBENTRY; TBENTRY comtbl[] = { {'D', xdump}, {'S', xsubst}, {'\0', error} }; VOID _main() { TBENTRY *p; char c; for (;;) { putcrlf(); putch('>'); getline(); if (line[0] == '\0') continue; lp = &line[1]; for (p = comtbl; c = p->mnemo; p++) if (c == line[0]) break; (*p->func)(); } } VOID main() { datap = 0x0000; catch(_main); } џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/*Start on batch process */ /*generates "search.bin".*/ dir search.* dir bk.* /*CF (parser)*/ cf search /*FPC (parameter checker)*/ fpc search lib /*CG (code generator)*/ cg -k search /*Assemble*/ m80 =search/z m80 =bk/z del search.mac /*Link*/ l80 /p:d000,bk,search,clib/s,crun/s,search/n/x/e:search del search.rel del bk.rel dir search.* bsave search.hex >search.bin del search.hex dir search.* basic search.bas џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/* MSX-C compiler sample program */ /* Directory search routine under */ /* DISK-BASIC environment */ #pragma nonrec #include #define serc_first (TINY)0x11 /*MSX-DOS function "search first" */ #define serc_next (TINY)0x12 /* "search next" */ #define sys_restart (TINY)0x00 /* "system restart" */ #define str_out (TINY)0x09 /* "string out" */ #define set_DTA (TINY)0x1a /*Reset DTA(Disk Transfer address) address*/ #define STR (TINY)0x03 /*Code of Parameter type of Disk-BASIC's */ /*USR() function */ /*MSX-BASIC string descriptor*/ typedef struct { TINY len; /*Length of string must be 12bytes(dc+fn) */ char *str; /*String for filename */ } DESCRIP; #define Fn_len (1+3+8) /*Length of file name */ VOID setup(fcb,desc) /*Set up FCB before calling BDOS*/ char *fcb; DESCRIP *desc; { setmem(fcb, (unsigned)33, '\0'); /*Fill FCB with NUL character*/ movmem(desc->str, fcb, (unsigned)Fn_len);/*Set filename to FCB*/ } STATUS first(my_fcb,desc) char *my_fcb; DESCRIP *desc; { char dmy; /*dummy parameter*/ setup(my_fcb, desc); /*Set up FCB */ #define bdosx(code,_adrs) (*(STATUS (*)())(0xf37d))(dmy,_adrs,code) /* "f37d" -> MSX-DOS entry point under Disk-BASIC */ return(bdosx(serc_first, my_fcb)); /*"Search first" */ } STATUS next(my_fcb) char *my_fcb; { char dmy; return(bdosx(serc_next, my_fcb)); /*"Search next"*/ } char message[] = "Bad search argument\n$"; /*Error message*/ VOID user_error() { char dmy; bdosx(str_out, message); /*Display error message*/ bdosx(sys_restart, NULL); /*System restart */ } char my_dir[33]; /*=>Disk Transffer Address */ VOID set_str(desc,length) DESCRIP *desc; TINY length; { desc->len = length; desc->str = my_dir; } VOID search(type,desc) TINY type; DESCRIP *desc; { static char my_fcb[33]; /*FCB 33bytes */ char dmy; TINY length; length = 0; /*Reset */ bdosx(set_DTA, my_dir); /*"Reset DTA" */ if (type != STR) /*Invalid paramter type*/ user_error(); if(desc->len) { if (desc->len != (TINY)Fn_len) /*Bad file name specified*/ user_error(); if (first(my_fcb,desc) == OK) length = Fn_len; }else { if (next(my_fcb) == OK) length = Fn_len; } set_str(desc,length); return; } џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ'€n’ ,, џЯ: Я"SEARCH.BIN": — ня аd€x† A$(d): Nя: Iя: A$(N)яџƒ(н(џ–()ё"????????H "),,)—€‚‹ A$(N)№ю"" к NяNё: A$(N)яџƒ(н(""),,):‰ ‚­€Œ‹ A$(I)я"" к Р: З€– ЊШ€ IяIё: ‰ Œа€Њ:цђ€ДB$яA$(I)ё".H": А B$ ‚ … AS #О‘ п);" ЬЇВйЩ ХЯДЪ:";B$BШ‹ џЋ() к Д: ‘ п);B$;" Щ ХВжГІ ЫЎГМо МЯМР.": ŽPвЏ … #,C$Yм‘ C$cц‰ Шџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/* (C) Copyright by ASCII Corporation, 1989 All rights Reserved. File: setjmp.h Longjmp Support */ #ifndef HEADERsetjmp #define HEADERsetjmp #ifndef HEADERtype #include #endif /* HEADERtype */ typedef int jmp_buf[2]; extern int setjmp(); extern VOID longjmp(); #endif /* HEADERsetjmp */ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/* (C) Copyright by ASCII Corporation, 1989 All rights Reserved. File: stdio.h Buffered Input/Output Functions */ #ifndef HEADERstdio /* referenced for 'typedef FILE' */ #define HEADERstdio #ifndef HEADERtype #include #endif /* HEADERtype */ typedef struct { TINY serial; /* is not 0 when serial device */ char mode; /* file mode - R, W, R/W */ char *ptr; /* next character position */ int count; /* number of characters left */ char *base; /* location of buffer */ FD fd; /* file descriptor */ size_t bufsiz; /* size of bufer */ } FILE; #define _NFILES 15 /* maximum number of buffered I/O */ #define BUFSIZ 1024 /* default buffer size of fopen */ #define SERIBUF 256 /* buffer size for device */ extern char _buffs[_NFILES]; extern FILE _iob[_NFILES]; #define stdin (&_iob[0]) #define stdout (&_iob[1]) #define stderr (&_iob[2]) #define stdaux (&_iob[3]) #define stdprn (&_iob[4]) #define EOF (-1) #define CPMEOF '\032' /* EOF char ^Z */ #define ungetch ugetch /* for poor linker with 6 chars symbol */ #define fcloseall fclosall /****** buffered I/O functions ******/ extern FILE *fopen(.); extern int getc(), getchar(); extern char *fgets(), *gets(); extern int fscanf(.), scanf(.); extern STATUS putc(), putchar(), fputs(), puts(), fprintf(.), printf(.); extern STATUS ungetc(), ungetch(); extern STATUS fclose(); extern TINY fcloseall(); extern int fread(), fwrite(); extern STATUS fflush(); extern TINY flushall(); extern STATUS fsetbin(), fsettext(); /* non-standard */ extern STATUS setvbuf(); extern VOID setbuf(); extern VOID clearerr(); /* FILE.mode bit assignment */ #define _IOREAD 0x01 #define _IOWRT 0x02 #define _IOEOF 0x04 #define _IOOVF 0x08 #define _BINARY 0x10 #define _IOMYBUF 0x20 /* FILE.serial bit assignment */ #define _IOSERI 0x01 #define _IONBF 0x04 /* no buffering */ #define _IOLBF 0x40 /* line buffering */ #define _IOFBF 0x00 /* full buffering */ #define fileno(fp) ((fp)->fd) #define feof(fp) (((fp)->mode & _IOEOF) != 0) #define ferror(fp) (((fp)->mode & _IOOVF) != 0) #ifndef DIVHEADER #include #include #include #include #include #include #include #include #include #include #endif /* DIVHEADER */ #endif /* HEADERstdio */ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/* (C) Copyright by ASCII Corporation, 1989 All rights Reserved. File: stdlib.h Standard Library */ #ifndef HEADERtype #include #endif /* HEADERtype */ extern char *getenv(); extern STATUS putenv(); extern int abs(), max(), min(), atoi(); extern VOID qsort(), perror(); џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/* (C) Copyright by ASCII Corporation, 1989 All rights Reserved. File: string.h String Mnipulate Functions */ #ifndef HEADERtype #include #endif /* HEADERtype */ extern int strcmp(), strncmp(); extern size_t strlen(); extern char *strcat(), *strcpy(), *strchr(); extern char *strncat(), *strncpy(); extern char *strlwr(), *strupr(); extern VOID sprintf(.); extern int sscanf(.); џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/* (C) Copyright by ASCII Corporation, 1989 All rights Reserved. File: type.h Common Types and Constants */ #ifndef HEADERtype #define HEADERtype #define NULL 0 /* constant for pointer */ typedef char TINY; typedef char VOID; typedef unsigned size_t; typedef char BOOL; #define TRUE 1 /* constants for BOOL */ #define FALSE 0 #define YES 1 #define NO 0 typedef char STATUS; #define OK 0 /* constants for STATUS */ #define ERROR -1 #define WILDCARD -2 typedef int FD; /* file discripter type */ #endif /* HEADERtype */ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/* wc - count lines, words, characters in file 23-Nov-83 25-Nov-83 use expargs */ #include typedef unsigned nat; typedef nat LONG[2]; #define YES 1 #define NO 0 #define MAXFILE 100 #pragma nonrec char helpmsg[] = "wc ver 1.0\n\ usage:\twc [-fh] [inputfiles]\r"; LONG nl, nw, nc, tnl, tnw, tnc; VOID zerolong(n) LONG n; { n[0] = n[1] = 0; } VOID inclong(n) LONG n; { if(++n[0] >= 10000) { n[0] = 0; ++n[1]; } } VOID putlong(n) LONG n; { if(n[1] != 0) { printf("%5u", n[1]); printf("%04u", n[0]); } else printf("%9u", n[0]); } VOID count(fp) FILE *fp; { int c; BOOL inword; inword = NO; zerolong(nc); zerolong(nw); zerolong(nl); while((c = getc(fp)) != EOF) { inclong(nc); inclong(tnc); if(c == '\n') { sensebrk(); inclong(nl); inclong(tnl); } if(c == ' ' || c == '\n' || c == '\t') inword = NO; else if(inword == NO) { inword = YES; inclong(nw); inclong(tnw); } } } VOID main(argc, argv) nat argc; char *argv[]; { static char *xargv[MAXFILE]; FILE *fp; char *p; nat i, xargc; BOOL prteach; prteach = YES; while(argv++, argc--, argc != 0 && argv[0][0] == '-') for(p = &argv[0][1]; *p; p++) switch(*p) { case 'F': prteach = NO; break; case 'H': fprintf(stderr, helpmsg); exit(1); default: fprintf(stderr, "bad option: -%c\r", *p); exit(1); } zerolong(tnc); zerolong(tnw); zerolong(tnl); if(argc == 0) count(stdin); else { if( (xargc = expargs(argc, argv, MAXFILE, xargv)) == ERROR ) { fprintf(stderr, "too many files\r"); exit(1); } if(xargc < 2) prteach = NO; for(i = 0; i < xargc; i++) { if( (fp = fopen(xargv[i], "r")) == NULL ) { fprintf(stderr, "can't open: %s\r", xargv[i]); exit(1); } count(fp); if(prteach) { putlong(nl); putlong(nw); putlong(nc); printf("\t%s\n", xargv[i]); } fclose(fp); } } putlong(tnl); putlong(tnw); putlong(tnc); puts("\n"); } џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ…RSрTд”ф @дМZH"“ „ё\žR&  @ъs4 "Y”ђ.hB3@†‡3@hЩŒ–dtUD4„шаMAIN@Œ‘e$”хDhЩHPUTS@œž0,117,115,104,32,97,32,107,101,121 defb 46,0 main@: ld bc,?59999 push bc ld hl,1 call printf pop bc ld hl,?59998 call puts@ call getch@ ret public main@ extrn printf extrn puts@ extrn getch@ end D sprintf(.); extern int sscanf(.); џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџУ*љ!х!€~#х…o6сУ‘MSX-C ver 1.1 CKHELLO WORLD! Push a key.)Х!ЭsС!7Э~ Э‹ЩЯŸх*X]T)MD0"X*Z]Tэj "ZыС!x0ЫЫЫєGЩхХKBЭчс"ГќЭ"Еќ!9~2ђѓ!9~2ћ!9^#V!У2ж§"з§йн!fЭщ! 9љЩ>_ў2>аW!ж>7~Щconw*:|out<*:|bad temporary drive rcan't open: can't make: "E!oЭ+х}ДТНЭР!N"A"?!"G!€Эg"Iх!€ЭgыЏы"Lые*G#"G+)ы*Iыбs#r*EЭ@ыы"EыЗЪЏў|ЪЏў;ЪЏў<Ты"E><*Lw#"?УUў>Т=ы"Eыў>Т,ы"E>a2R>>*Lw#>>w#"AУU*G#"G+)ы*Iыы*Lыs#rых*EыыЭ@ыс"Cы"Eыw#ў"Тyy/OУŒў\ТŒЗЪŒы"Eыw#ЗЪ  Тeў Ъ ў ТeЏw#"L*CЭБУп*G"G)б6#6е*Eы*LЭЌыkb"Cў|ТVы"Eыў|Тђы"Eы>a2R*C#"CеЭЗ2Kбў@Ъ еж@Э>б<Ъ ы"E!T"A:Kw2\У/!V"A>|2\Џ2]*E~ў ЪV~ў ЪVw!`Э‡ :KwЭЦ!ЭMuХ*?х!ЭЎ СС}ДТƒw!wЭ‡ w*?Э‡ !ЭMRХ*Aх!ЭЎ СС}ДТАw!„Э‡ w*AЭ‡ !ЭMб*GЭC!ЭMЭХЭк *C"E~ы2KсMDl&}=ДЪы}жДЪQ}жДЪ—УЄХ*?ыЗЪ!~ў:Тў|Т*?ЭHС Р:KЗШ*E#ѕЏ2€ёў|Т?х!\ЭH\*AЭч![ЭРс#Э@[ЭЭ@"EУЄеN*?}Й |ИЪh*?+ЭРN*Aб}Й |ИЪЄ:Kў|Ъ‹*A++ЭРУЄы"Eы>|УЄ!Ѓх*%ѓN#FХЩЩ*EЭР![Э+Щ]T~ў"Р#~ЗЪ~ў"ЪЭў\ЪхУ Тз>УиЏO Ъс~#УК#~ЗЪКўNЪўnЪўRЪ ўrЪ УК> #УК> #УК~#УКЏЩЋCan't exec: "!Њџ9љ*"х!9ысЭоЗТU!9ы>Э”<Тjw!Э‡ *wЭ‡ У”\!ЭœlЭœ0N!&9Э!”х!(9х!9Щ!V9љЩ~З"škbхЭ‚сх#  Э‚*šЭ@бЭlЩы!€n& |ўвм:€ЗЪм> w#|ўвэwЗЪэ#Ум}Ц2€Щ#^#V COM"є!кџ9љ*є ы"іыјх!9Э!9ысЭlх*іы!9Э…сы!&9љыЩ~ў ЪIў Р#У@]zіW!oЭ>ЩЭƒ!ŒA>Э‚=ЭЭ<2*Э>|Е(kЦ!9Э•ЩЏ23A!е1ЭX2!и1ЭX2*"!іџ9љi`"…ы"ƒ*##х++~#fo"ˆс"“*ˆ~#"ˆЗЪы ў%Те !9"Šх!"‘Џ22Ž*ˆ~ў-Тё#"ˆ>2Ž~ѕў0Т§>0Уџ> 2Œёў0кў:в!ˆЭT У!"х*ˆ~#"ˆ2‡ў.ТF!ˆЭT "‘>2*ˆ~#"ˆ2‡ЭЗбсўXЪpўOЪuўDЪzўUЪЁўSЪЧўCЪчЗЪИ УМ УЃУЃ*“#~ЗђЁ*“~/O#~/G+q#p>-*Šw#"Šы" *“^#V#"“!ŠЭђ o&ы*ы{•ozœg"Уўе*“N#F#"“i`"ŠЭšб{•ozœg"У х*“##"“++~сw#"Šы+"Џ*Šw!9"ŠЏ2:ŽЗТ@ *+"#ы!ЭЎв@ !7 х*ƒх*…ы:ŒЩ<Т >џУь *Š~ЗЪ‡ :ЗЪ\ *‘ы!ЭЎв} !m х*ƒх*…ы*Š~Щ<Тv >џУь *‘+"‘*Š#"ŠУ@ :ŽЗЪЙ*+"#ы!ЭЎвЙ!Џ х*ƒх*…ы> Щ<ТŽ >џУь ЏУь !Ь х*ƒх*…ы:‡Щ<ТЙ>џУь !т х*ƒх*…ыЩ<ТЙ>џУь ЏСССССЩхеХеЭсбых!9qсЭч}‘|˜к" YХЭХыСеЭбЭђ У# Џѕ!9^еЭбЭХ{ѕЭњ^#Vr+sёў вK Ц0УM Ц7ё<СССЩы!хkbN#F ж0сў а)MD)) O ехы^#Vr+sсбУX kЭ‡ Ще"… *… ~#"… ЗЪЂ еЭЦб<ТŠ >џЩЏЩ ~е/_џб"Є ЭЎкФ ы!ЭЎвШ !ЩЭ "І *Є х}=ДТн >RУф Э~ЭЗ2Ј бе{=ВЪ Э#~ЭЗўBТ !У !}2Љ б{жВТ ЭУ !"Њ _хз{‘z˜в< !~ЗЪ< ! ыУ! зс{‘z˜кK !Щхе*І Э бсЗЪ— <Ъm ўТq :Ј ўRТq !Щ:Ј ўRТ !У‚ !}*Љ Е!w!6#6ыЩеЭ•ыС! s#r{ВТ­ !Щ! ы*Њ ыs#r:Ј ўRЪЮ ўAЪ ўWЪ Уі Х*І Э.ыС! s#r{Ђ<Ті ! ~#foЭc!Щ>*Љ Е! w! 6#6У i`ўAТŽ "Ќ х*І Э.ы*Ќ  s#rс{Ђ<ЪŽ *Љ ,-ЪR *Ќ  ~#foЭФУЙ *Ќ х#6сх####6#6*Ќ Э™}Є<Тd С! ~/_#~/W! ~#foЭФУЙ "Ќ х*І Элы*Ќ  s#rс{Ђ<ТЙ  ~#foЭc!Щ>*Љ Е*Ќ MD! w! ы*Њ ыs#r! хi`"Ќ сХN#FХ*Ќ MD! Сq#pСУ ! ~#foЭc!Щi`Щ!ЛCONLSTPRNAUXNUL" !кџ9љ* х!9ысЭоЗЪ< >џУЃ !9ы! ЭЋ ЗЪQ !УЂ !9ы! ЭЋ ЗТo !9ы! ЭЋ ЗЪu !УЂ !9ы! ЭЋ ЗЪŠ !УЂ !9ы! ЭЋ ЗЪŸ !УЂ !}!&9љЩ№OKBыЗЪЭ ы"Љ ХЭЗ*Љ ы!џџСОЪЎ ЏЩ ў Ъе ЏЩ>ЩШУ_з{‘z˜вў !е~ЗЪѕ ыЭ#б! ыУн !"и }ж|оахЭв}ДЪ*и Э”с#"и УФы{ВТ,>џЩ!"qеЗТ!~цеЗЪ^!~цеЗТU>ЭќсЭтO!"qyсх<Тs ~#foЭ”У ~#foЭ”2"с ~#foЭcс#6!"NyЩ+"—х#~цсЗЪЊЭIЩ*—хЭIб}ДТКУЊ}жДЪЩ}ж ДЪбЩ}Эц!џџЩkbеЭIб}ж ДШ}Эц! Щ(O!хq!~цТј>џЩЗЪ ўЪ;ўЪ;УF!N#F!y–#xžв9:х!KB^#Vr+s! ^#Vr+sЏЩ!q#pЏЩ>џЩMD ЗЪ]ўЪ”ўЪ”УП! ~#ЖТvi`ХЭuС<Тv!џџЩ! ~Цџw#~Юџw! ^#Vr+so&Щ! ^#V{ВЪ­! 6#6k&Щ =ТЖЭЩ>Э”o&Щ!џџЩбС2Уы"Фыў Тщ!~цТщ> Эќ<Тщ>џЩ*Фы:УЭќ<Тњ>џЩЏЩOЗЪўЪSўЪ\ўЪeўЪqУn!~#ЖТ3kbХеЭтбС<Т3>џЩ!е~Цџw#~Юџwб!^#Vr+syУqY>Э”УqY>Э”УqY>Э”Уq>џЩЏЩ ы!~цТŠ!~цТ>џЩ! N#FХ!KB^#V! ~#foхi`"sсСЭkы*sMD! s#r{ВТЮ! ~іw>џЩ! YPN#F!q#pЏЩЭxыы"ры!~цТќ!~цТџ>џЩ! N#F!y–O#xžGХ!KB^#V! ~#foСХЭЊСyН xМЪ=*р#~іw>џЩ*ры!N#F!q#p! N#F!q#pЏЩV+Щ*"зЭs}Є<Ты!џџЩхЭв]T"й*зЭосы*йыЗТех>Э”сб<ТЭИ!џџЩх!%6!6#6сЩ§Aы{"*њJ!ЭЎкJеЭsС}Є<ТN!џџЩХхЭв]T",**Эосы*,ыСЗТxХех>Э”сбС<ТЭИ!џџЩхyџЩы>Э”*’ѕЭИё<ТК!џџУН!}ЩёЩы{цy2СўвнеЭвыы"Тыс{ВТр>џЩ"Пе:СЗТ!#6#6!!6#6У!ўТ!!N#F!!q#p!N#F!#q#p*П"П$%ђ7!#^#Vr+sС!! ^#Vхых*ПMDс ысr+s{‘z˜вe*ТMD!# ^#Vr+sЏЩЩЭ<=ы"gыХЭвС}ДЪ‰Х]T% ~цСЗТ!џџЩХы"i*gы>Э”С*iы>'Э”ЩбxБ(ы"ІыХЭвС}ДЪШХ]T% ~цСЗТЬ!џџЩХы"Ј*Іы>Э”С*Јы>&Э”Щс}"х!Дџ9љ*х"х!9еы*хЭосЗТх!(9ысЭоЗЪ>џУ@ !&9ы!9Э!9ы>Э”<Т<!џџУ?!}!L9љЩNЭ"F!кџ9љ*Fх!9ысЭо<Тf>џУ~!9ы>Э”<Тz!џџУ}!}!&9љЩ>~ЗЪ“~Ц@>:х# ЪЉ~ў ЪЉ #У—!„qс :„O Ък~ў ЪкѕyўТЮ>.ё y2„#УДЏыЩхkb&хЭ‚сх#  Э‚бсеЭlбхеЭ>бс<Т >џЩх! Ъ"~#ў?Ъ"Ус~ЗЪ.!џџУ<Ъ9!ўџУ<!}ЩЗТDЏЩ=ўкM>џЩѕ>Э”ёGЭМ}цЪd!Уg!џџ}Щ "i~еЭЗж@2kСЗژў в˜*iх#~сў:Ҙ:k##"i*i~ХхЭ)сСХЗЪУх! Х Э‚С! ысЭч~Сў.Рх! Х Э‚С! ыс#ЭчЩы"хыхХ~Э)СсЗШх Ъ Х~ЭЗ*хwСў*Т Ъ >?w#"хУ *х#"хс#Уьў=Ъeў;Ъeў,Ъeў+Ъeў/Ъeў"Ъeў[Ъeў]Ъeў:Ъeў.ЪeўЪeўџТgЏЩў!вnЏЩ>Щ{жzовВkb)ю ~#ЖТЎ!&ы"qыеЭ•х*qыы)ю бs#rс{ВЪВЩУv!џџЩ"ЖЭв}ДШЭc*Ж)ю 6#6Щ$%њрЭЎкф!Щ)ю ~#foЩ€ К$RND^AкPцPђPўP QQUQ"Q.QЛQGQaQ:QШQџ*}ДТh>џ2> Э” >Э”!n&"* "*6 #"*6 *##"!"*#"+~*+"ўТ‡!"!џџЩo&Щ>Э”Щ###ЭМ#MDi`"“*_"‘}ДТЧ!a"‘х!a"_"a!"cс^#V!~‘#~˜к!~Й# ~ИТђkbN#F*‘q#pУ!~‘w#~˜w!~#fo))ы!q#p*‘"_!Щ*_{Н zМТSi`))Эg}Є<Т8!Щх##х*“MDсq#pс####ХЭc*_ыСы"‘ыы^#VУЪOмЂ++++MD*_ыы"aы{‘z˜вƒkby–#xžкЊkb{–#zžкž{‘z˜кЊkby–#xžкЊы^#Vы"aыУrkbхi`"_сN#FХ*_MD! ~#fo)) хi`"_сСе}Й |ИТ *_х##^#Vх*a"a~#fo##~#foысr+s*a~#foN#Fсq#pУыN#F*_q#pб!~#fo))ех*_MDс}Й |ИТU!е^#Vх! ~#foысr+si`N#Fбыq#pУYыq#pбы"_Щ1MD*eы!9}“_|šW*˜{•ozœg}‘|˜в‹!џџЩ*eх*e "eсЩш]T~ЗЪЅ#Уœ}“o|šgЩхw#ЗТ­сЩўaиў{аж ЩЭЪЭф!*%ѓ"х!"%ѓЩ*#ѓ"ь!ђ"#ѓЩ!"%ѓЩ!"#ѓЩєЭы*ьЭ$yў8ерЭф*ьы*#ѓЇэR( Эы!oУ>*хе^#VыбщСХы!9ыq#p#s#r!ЩN#F#~#foљХы}ДР#ЩљХх6#6Эбkzжиg'ЭЗШ€ЭУyKB_yАШs]T УŽыyАШэАЩ`iOУMSX-C CLIB ver 1.10s|ЊђЖzМЩ|КР}ЛЩШЫ<ЫјBK>)ыэj8хэBс8ЇэBы= ьЩУѓУѓу^#V#уы9s#rыЩ! У!У!У!Ус^#V#хы9^#VыЩMSX-C ver 1.1 CRUNЖzМЩ|КР}ЛЩШЫ<ЫјBK>)ыэj8хэBс8ЇэBы= ьЩУѓУѓу^#V#уы9s#rыЩ! У}‘|˜в‹!џџЩ*eх*e "eсЩш]T~ЗЪЅ#Уœ}“o|šgЩхw#ЗТ­сЩўaиў{аж ЩЭЪЭф!*%ѓ"х!"%ѓЩ*#ѓ"ь!ђ"#ѓЩ!"%ѓЩ!"#ѓЩєЭы*ьЭ$yў ; MSX C ver 1.10r (code generator) cseg ?59999: defb 72,69,76,76,79,32,87,79,82,76 defb 68,33,10,0 ?59998: defb 80,117,115,104,32,97,32,107,101,121 defb 46,0 main@: ld bc,?59999 push bc ld hl,1 call printf pop bc ld hl,?59998 call puts@ call getch@ ret public main@ extrn printf extrn puts@ extrn getch@ end D sprintf(.); extern int sscanf(.); џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџn(ˆ,Э#Э# ЭЩ'> ЭЩ'Э#*ю*"ќ*Э#„Эы>РЭы!Б+~Эa# јЭ”Эв0Ыn( >€хЭыЭЁсЭсц*+>”ЭL@*+>šЭL§ЫFФ!"$+"+хЏ27+2Ќ+2˜+2є+2C+$!‰+w#w+љŒ+Э#*ј*"њ*х§ЫvФГ&§~цˆ§wс§Ыv(§ЫЦ§ЫжЭx !T-ЭŠс§ЫnФА'ЭіУЊ*8+ы*№*Щх#Ы~(њxў8>ѕЭыСс#~цўa8ў{0ж ХЭaСыЩэ[P+ЗэRа7ЩЫNѕ#Ы~(ћё#(#~З ћ+##Щ!F56 §Ы^ЬlЭ”Эва§Ы~ ;Ыn>Ž Ыf>Œ(D§ЫN >Эы~ц Эых#Ы~(ћ#~Эa#~ЭaсхЭЁсЫf(х~цѓw#Ы~(ћ#6#6сЫF 9§ЫЮ§Ыіх!B-F5ЭЂсх#~ЫПЫ~(іы6 #ысхЫn!m-(!f-ЭЂы6 ЭlсЭсУ~ЗШ#ј§ЫŽF5§ЫfЪ§Ы^(,:ц№ >2!6+Ыў!t-Ц0эА!"A+:=+!ОФ"Џ!-Э!->Э§ЫFЪ!'-> Э!1->ЭУ2+ЭМ'Э”э[P+ЗэR*№*F5вj>ѕе^#V{В(!ћџбёб#х##:8+G:+З >2І(І с0#~ЫПЫ~(ѕ> ќ#е^#VсЭz%ы> ќсё=ѕ Эjё>ѕе^#VzГ(!ћџ^#VzГЪ>ђ##х!6+ЫŽ*№*э[P+ЗэR:6+0.ЫO(##^#VуЗэRу($ЫO ###ЫNѕ#Ы~(ћ#ё(#~З ћ+##ХЫЯ26+ЛЫOб Ўх+э[№*ЗэRсТ>бёУj:5+З((§Ы^ "ЏЭЂ!ЏЭЂ!h+е!23Э#ЗТЧ!бЭ#ЗТЧ!§ЫN §ЫFФe*ќ*Э„'Э 'А+Э#§Ы~Т!Й+6S#6Y#6MЏ2М+2а+2б+А+Э#А+Э#*ю*"ќ*Э”ХЭв0oЫN(Эсђх#Ы~#(ћ^#V!В4хЭz%с~ЭЇ#љ> ЭЇс§Ыn  #~ц§Ыn( ўA8ў{0цпЭЇЫ~ у#Ы~(ћС > ЭЇ> > ХЭЇ###Œ*ќ*6#Э„'Э 'А+Э#§ЫЮ:C+З(O!њ/ЭМ'!yЭ%ЭХ'*P+э[№*еЗэR|!$0ЭЉ*ђ*бЗэR|!/0ЭЉ!0ЭМ'§Ыn(*є*6ЭО§ЫvФќ"Уc$ы6 ыхЭlсF5ЩЏ*№*w#ќ:8+=(G>w#ќ>џw#!УП : +=(ѕ: +G>(‡§G: + ЩЭ >2 +2 +§ЫF( F5!p0эАЭк!и§ЫV *$+#"$+!75"2+!25х6 #ћсэ[+Эz%!" +"ъ*"ш*"ь*!E5§ЫN(:+OЭ% 01§ЫFЬ§ЫŽУ”ЭЧ".+хў;(хЭэў;с(ЭШў (ў*Т Э У§ЫFР#§ЫVРЭЧ%ТП ЩЭ1 ЗЪџ ++Щ§Ыю"N+х!Œ+ˆ, эАсЭЧ#> ЁР++-н!ˆ,:J+2K+хнхбе! ы`iэАбс#Эы#ў Ш+ЭД$ЗШнqЏнw нw нw!нw"<Щн!д+:7+<ўЪ ѕ$х!Ъ,н = њу-ЭV хЪџ нхбЭ#<(ђсбёх27+*њ*ыs#r#э[а,s#r###э[$+s#r!"$+н"а,*ј*"њ*§ЫіЭГ&с++Щ:K+2J+>УП >УП §ЫўШ§ЫОЩ:X+(жЦ2X+§Ыжј§Ы–Щ§Ы†Р§ЫЦЩ§ЫžШ§ЫоЩЭ Ше§Ыў§ЫЎ|Е}с+Ш§ЫОў Ш§ЫюЩ(§ЫžЩ§ЫоЩ#~ў (њ:>+ж.GџH6хњ ~# ў ѓy2@+с> эБ++§ЫVхЬ"сЩ§ЫЮЭ/§ЫŽ§ЫцУš$§ЫžР§ЫоЩ>24+Щ§ЫцЩ§ЫЦЩЭ Ше"8+ Э Ш":+еЭ›Эwс+Щ§ЫЮЩ§ЫўЩ§ЫюЩЭ Ш+"D+ер#Эыў ыШЭ6ЗЩы§6 Пѕ!хххў. е!(Эzб84Ыq(.§ЫF (§ЫF "§ЫіЭw>кП ~ў: #~+ў: х*ш*> Жwсыы+Ээх!(уеЭШЫYТ9"і*У ЭЕ0w§ЫF §ЫFТ9э[і*§ЫЮЭwх§ЫŽ*ш*ЫN7(M§ЫV §ЫЮ§Ы~ §ЫЮ§Ыж#Ы~(ї#~2+#уы*+хЭoэS +§ЫІбs#r#э[њ*s#zЭў"+с"њ*У9>кП ЭЧк„ Эъ§Ыю~Ъ ѕСЭW§Ыіж8р§ЫF(ў Ъў >ЪП Wў "ЭУ{В( Эf §ЫЦЫA(§Ы†Э/ 1х!­7ў(ў .Э^ (ЭQ >ЎwЫF( Э/  ЭQ Эf ЫЦ(Ы†сУ9б>УЫF ђў с+Э #" +фўдИ ў(кў сЭыOў >ЪП y2+§ЫЮУм ў (сЭУ§~ў>ТП :+2+*+"+>2+ы"+"+”ў *+э[+эRэ[+"+:+2+У… ў 8б> ѕЭwёѕх*ш*ЖwсЭШЫA# јЫQ( ЭШЫA# ј+ыёкёЫY+" +>ЪП УмўЪ‰ ў8 ў0Э*Џсў 4Эыў (ў;(ЭИ Эv" +§~2 +эS+§Ыж!Œ+"а,*њ*6Џ27+У9ў (;ЫA З> вП ѕў (ў(ўЪпв4ўЪAѕЭУыёlЭv" +?0д§Ыf> ТП Щ§ЫЦ§Ы~(.х*ъ*|Е> §Ы†УП ЫN>ТП ЫЮ*"+#"++уВ4ЭЅсqТП У„§ЫF>(б§Ы†§Ы~( *+6#"P+Умў §ЫЎuўкЎх(CЭv" +§Ыf> ТП >0еЭv" +> кП Эe{быхэ[+у§Ыіоѕ|Е(ёѕЭw +єёс>X§ЫF(§~ў( G:+И>ТП :+Э="+:C+<2C+б х*ъ*|Ес>ЪП 25ыЭz%*ъ*|Е(*ъ*~цѓw§~‡‡Жw*"+s#rУ9ѕЭv" +xў\ !ёў(&Эnтўp ё{Эw з> УП ХэSь*Эv" +ѕ§~§w эST+хЭШсёС0Ам§Ыіожў ЬЭe0˜ §ЫіоХЭv" +xў\С хh&ЭnсC8цУм{Эw аыFЭЧИШ ѕ#~И+ ёі€ёЭw  ф§ЫіооЭv" +xЭЏ>8v§ЫF §ЫFТ9ЫY(сЭW8цСсЫQ( ++еэ[+эRбы{ЫQФiЫIФeЫA(§Ыі§~§w эST+ысх7ѕ§ЫЖyЗ{zЫAысх7ѕ?ѕѕzА ѕ>ЫЫ[(ѕЫe(|Ыs(З> ТП СЫEѕХ>нЕѕЫc ь>эЫcФw ё0њ§ЫvФШ> §ЫіvТП §Ыn§ЫЎ>(§Ы~ТП §ЫF()§Ы~(#*ђ*ЗэBэ[+эR!50кY$*.+Эї> эS+> §ЫіvТП §ЫFЬ1Ј7§ЫVЬЋ$§Ы–У– ХЭыў; ЭЧў їў СЩў@> "ЭЧG> Ё ѓЭЧG> Ё( у,}<(уХxщЗСЩ+ЭЧ>Ё јУШ+ЭЧў Шў@ єЭ юеу*хЭ((С>џ сВ4Э(ЪП бЩХхЭЧыG> Ё(Эў@(ў;(ў ССyЗЩЭў@(єў (№ў;(ьИ(асЭў@(ў ѕ>СЩС Йџ*+:+Эў:+Эўх*+"+#"+с§ЫІ:+И :+(G6#ћ"+:+ЗРЩыЭыыў (пў; §Ыf -гў' '§Ыf( Эў'(6#В§ЫцЭў'(уў (ЎЭў№ёЭўЭѕ> Ё(ѓёзw#е­4ЗэRб>вП ЩыЭЧыЩ§ЫVР§ЫN§ЫŽ §ЫV(§Ы^Ш§Ыf§ЫІР§ЫN§ЫŽ §ЫV @5*$+Эъ'!25~Эл#љ* +|Е(+~ў (њў (і#" +!F5~ў (ѕЭх'ё§ЫNТoў;(ў*Ъo+:8+GЭЧў.(ў@(Ыq(ЭШW> Ёz Эл#юў ЪХ'ў;Ъ^њЮ(Эх'њЭх'ЭчЭШW> Ёz Эл#я+ЭЧW> Ё zЭл№zў ЪХ'ў;Ъ^ЭЧW>Ё їzў ЪХ'ў;(G(Эх'њЭх'§ЫF D§ЫF >§Ыv 8х* +|Е(DMуЗэB (~Эл#ђс+ЭЧў ЪХ'ў; є:D+Л( 8 Эх'ђ!F5~ў ЪХ'Эл#єѕЭ…ёў Р> §ЫfТЩ'§Ыn §ЫNФЩ'§Ы^(Эж'§ЫnШех*є*H6ЗэRЬОw#"є*сбЩѕХ!Ш5ˆ,"Э#ЗТ5'х*Љ,#"Љ,сСёЩў > §Ы^ §Ыn ЭЩ'ў Р> УЩ'ў (х!?+5сТ{ѕ> ЭёУ{Э{:2?+:=+=2=+ўР§Ыю:=+G> Э{љХех*A+#"A+а0Эъ':2=+:@+G:>+ж.8(OЏА( !H6~Э{# (іyЗ(GЭх'ћ.!Ї0~#Э{љЭХ'ЭХ'сбС§ЫЎЩ:5+GхЭсЭЄ'+6+6ЩѕЏО(#њёУ%ц?іЭДџ/ƒ8ќ“r#Щ~ў > #~ў08ўA8 Рў{и˜ў Шрў:их!њN €#Ы~ ѓО јсЫaР7Щ :“,—; +&@*!/?)П$Ÿ%#"'џеЭœ0љцпўHб(Sеў08ў28іцпўBб(Wж0иў аеT])8)88)8 _бтЭœ>кП !ЭwЩж08юў?8щ!ЭЩЭœи)8и)8е)8в)8ЯЕoъж0иўаэj0ѓМж0иў ?ацпжиў?иЦ Щйсбу йсбуўA8ЫЏGЫ~ y#~цўp82OЈў0cў8v§~ѕЗ ў§~є8 ( ў=0 <(<§wѓцЧФmRў 01х!Ш*…o|Юgx~цO~#F#fhэБсG Ы!ж0њЫ9§~ѓБ§wѓИ(Ы~#Ъ7+##~_цКЪХ#в7йЩ§wђуехйЗЩйсбу~ў€#VейбzЩzіЃŸ’Ш§ЫNР§ЫііЩ!c*§ЫІЭŠР>УП !c*>§wы"0++хЭЧў. ЭЧЫq љухееЭЧў. ЭЧЫqЪdЭЕ0ѓсхЭЧў.(Ыq(ЭЧі:8+И8x2V+б*№*####хе:V+G#ы§Ы~(~ўa8ў{0ж OЙО #тЗбсе++к++^#VzГ(сыУчУФЫЪ7о§Ы~(~ўa8ў{0ж OцЙцО СбсЫF §Ыц"ш*§Ыv(="ъ*§ЫЖЫF(§ЫюЫЦ#Ы~(ћ#""+§Ыn @Э…;э[+s#rх*ш*~цѓw:+‡‡ЖwсЩ~цў8>§wЫf("ь* #Ы~(ћ#^#VЏ<сЩ§ЫN>ТП §ЫF(сУ`§Ыцх*P+6#ћ6"ш*§Ыv§ЫЖ(ЫЦ"ъ*#убr+sсех§Ы~(:V+G~ўa8ў{0ж #№эKV+эАы+Ыў#ёубехѕы""+Э…#"P+ы*ђ*ЗэR0§ЫЮ*№*ыЗэR|!>0ЭЉ!50УY$сбыбЏ<сЩЭWкПЫ{(э[+сс7ЩpЭч+§6Э!ўЈ §ЫЦЭѕxўp8ЫGp0Э цћ§w§sє§rѕёЗ>ТП §ЫN(§Ы^( xўc §ЫіЦ{Эi§sїc §ЫV>ТП ЭчЫQШ#ЭШЫAШЭЧјЫA ,ЏСЩ|З№Џ•o>œgЩxўp8ЫG ЩѕxўpФёЩ§Ы~Р>УП ХЭЧЫa ЩЫi ЫqТКў.ЪєЦ€СЩў"(ў' ,WЭЧ_ЭЧК #8х+{К( ##~ў ( К їб>\СЩ>УП ы!ў#(ў%(ЭЭeЭTы>pС+Щэ[+:+Эœё‡ЦpЩжpЫ/Щ8щ§~ЭœоС~ў'>^Ш>h+ЩыЭ‡ уzўh(шўb Т{ц0х§fіЫg(§ЫоЫ| ЫќДgЌц0>ТП §tіс>b™ех'ееЭЧЫq(ЭЕ0єЭW8 еЭШў. ёббСЩсбУК>УП €SHвЬ‚NOдƒMOФПANФІOв„XOвЁEбНXа‡GдОLдМOз‰UGд…Lд†HIGШˆЭ|ЭO{/_z/WyЩЭ!§ЫŽўЋЬ!ўƒ(сўˆ(Kў‰(Pў­ Э|ЭѕыЭќыёЩўЈ -ы!T7эrы>вП §~ѕ§Ы†Э!ЭўЉ>ТП ёЫG(§ЫЮУ!GУ!Э|ZУЭ|іЭеѕЭ!ЭACxўb §ЫіfЬ§ЫжpЭеХЭ!Э…2HЭФСO Ы_ФёухѕсxЩЭеѕЭ!ЭIЭ2HёСух`ipЩЭў‡РЭеЭ|ЭуѕBKх!Ы8Ы0беХЭHСxБ( уT]ХЭHСуфСёысpЧЭIўЊ(?ўЏ(GўП(Mў()ў‚РЭ.Ыz(ыЭќыzГ(Ы<ЫѕzГ()јыс:HЧЭ.ыЭќыгЭ.ѕЭHёpуЭ.ѕЭ~ыёЭ.ѕЭ~шЭ…ўЋ(4ў­РЭіЗэRх!/yЭ цћOxЭ цћ_‡ƒ_~ЗGђЭrбс:HШЭіх!8ЯpџџrpџtџpprtrџџtџџЭъўІРеЭЭ!Эъуѕ{Ѕ_zЄWёсчЭAў„(ўЁРЭщ{­_zЌWс:HъЭщ{Е_zДWяЭ]ўН(4ўО( ўМ($ў†(ў…РЭФЭКыс:HрЭФ0є+ёЭФЭСщЭФЭШсЭФЭОйеxўp( ўr( ўt(ў\ФХЭ!Э]2HёИ(-ў\ xўpФ"эSFEўpФxў\ФС"эCFEХў\Сух`i( ЗэRp!ЩNыF#~И(Й(О(ѓш>€З7тЙ(о>Зй"zЌѕЭљыЭљЏэR0ыBKW_АБ ыёЩыы)Ы8Ы0љxБ ђэZёњќЩ> УП ы|Е(і|еЊѕЏДєќDM!ыЭљЕЪЎ>)=0ќыэj 8эBЫЫ= ђёыќќыёЗњќЩШи+ЩР+ЩъЫШј+ЩъФШ№+Щ§Ы~Р§ЫNР§ЫF х&%сЩПЩЭЯРеэ[R+Ы ѕzЭЇё№эSR+бЩ*++ы:+‡…0$os#rЩ!"+"+"+>жѕЭё&o)+^#Vы2+"+ЭЯРO>–§Ы~РЭыyЭы}Эa|†§ЫV!( *+: +O>œЭLЭ>žЭa>Эa>вэ[R+>ЛШЫ ћzЭЇэSR+Щхе*ќ*э[№*ЗэR8 ХѕЭ 'ёС*ю*w#"ќ*бсЩ*ь*|Е(5х*T+§~ ЕД( §~ O>’ЭL*ь*"ш*с~ц#Ы~(ћ#^#V+еѕЭ…ёб§~ э[T+ў {Эw zУw §w х§ЫF(P§Ы~ @§ЫN еХў> (>РЭыы}Эa|ЭaСб§Ыі^ *2+{Э%zЭ%§~ ў6R(6D#"2+*+##"+сЩ}Эw |сх§Ы~ 1§ЫN §ЫF(ХѕЏЭыёѕЭыёСЭЇ§Ыі^ *2+Э%"2+*+#"+сЩ§ЫFР>ѕ§~ц§§wё§Ы^!P$ !”х§ЫFРў (ў(§ЫF(§Ы~Р§Ы~Ш§ЫЮ§ЫіOХЭ/:5+§Ы^ З #ѕh+е!Œ+ эАбЭ#Э#<ЪЧ!ё!23"Z+СЦ'25+*$+}ЭЂ!|ЭЂ!!е0 (~#З ћіх~З(ЭЂ!#іЭЂ!сЭМ'!=-ЭМ'*а,х~ѕц( =G:L+И 6F5ыЭэ6!F5~ЭЂ!~З(#ѕ6 ёбЭl§ЫŽЩхе*Z+В3ЗэR "Хѕ!23хh+§Ы^ Э#З(Э#У5'сёСw#"Z+бсЩ*њ*~ўЪŒ"§ЫV(-~З )*++V+^эSњ*+V+^ы^#V+ы"+!В3эRэS+ Ъ§Ы–ФF5~§ЫV эKў*ЗэB вэ"ў@ ;§ЫV(5#F#х*++++N+na## ыэ[+Эz%ы(~#З ћљ~З(#їсЏ#хЗ!Ш5эRкG$сў (mў ™+ы6 #6 ыЏ]:7+З(S= §ЫF(§Ы†§ЫжЗ7"њ*Щ§ЫіеЭ­&б*ј*У"Ќ,З№!€2M+ЫПЗ :J+<=G§Ыn(]Џ:J+ИЪ~#хХе§Ы^( §Ыžˆ, §Ыf(§ЫІА+oЏЭž%}бе!-/xЦA2&/Эњ6!/Э”'Э”$ Эž%:L+_Эž%бСсx2J+§Ыn(4yў" /х!ˆ,ЗэRсы §Ы^ §Ыо §Ыf §ЫцF6ыЭž%ыp"ыХыЭœ%ыСЭž%ѕ:M+ёЩ!€^#х6 сБ+ЭД$ЗЪP$ў (Aў;(=ў=~# ђy2А+++ЭД$ѕyЗ :А+2Œ+хБ+ў !+эАсёў; ЭР% 1ў -Щѕхy2А+2Œ++!Б+эА~ў (зхэАс6 Э!щ/§Ыж !|-Э”'!§ЫžЭ”'Эќ"Э?'§Ыn!Ю/Ф—$Џ2И,2Ь,2Э,2Ю,Ќ,е!\+ эАбЭ#<Тˆ6Ч!  ћxў.7СРХЭ?%0ѕyЗ(>  љё З(ю фССЩ+СЗ(і МСЭ?%аЗШХРХ~#ўa8ў{0ж ў (ў 8ў0х!-О(#њ!-О( #њЗсЏСЩ7сСЩzЭ%{ѕЭˆ%ёцЦ'Ю@'ХO}ДyСЪлw#ЩйхеХйѕхеХ§хнхЭнс§сСбсёйСбсйЩn&•&Эыў ШХехыш&ц_OЎ(ц('y###ѓЏqбС#лyўI(§Ы~ ]#^#V!ь%уЭd&+еЩ#^#V!ь%уеЭd&ў (BЭыў (їў+(ў- Зѕ§Ы~ ёЩёс"цпўO(ЏиЭЧцпўN(сўF №ЭЧцпўF чЗбЏс>ЗсссЩЭШШа#ј+ЩW' TЧ FЬ Sб Bл Kё Vі DС Nь в/ GC б9 е Cћ Ь аЗ Эb ZЅ I Hn E› *ј*"њ*T]!Ъ,:7+< = ќхеэ[а,Э'бс####q#p!€эKю*ЗэB(8эSў*Ще*а,ыЭ#Э'p+qЗб ц!€ыа!!N#FЩэ[ю*ЗэRШихыхА+"Э#З *б+#"б+б!€ысм§Ыў!Г/УY$д+Зќ#§Ыn(§Ы~ >ЭЇЭОˆ,Э#§ЫО§ЫЎ§ЫNР§Ы~Р§ЫVРА+У#}ЗШў€Шц€Ц€o|ЮgЩ§~ѕ§ЫцЭМ'ё§wЩ§ЫЮЭМ'§ЫŽЩ§ЫЮЭХ'§ЫŽЩ~ЗШЭл#ї> еѕХ_Эž%СёбЩеХѕц_Эž%ёСбЩ> Улен!к*0ен^нV>/З<эR0ћбЙ >  н#н#рбЩ€LD`ƒxє>Б хѓ:ьWю_ƒ@єbђ!ѓ*jђ1тљѓ{ ђѓKsт"ŒCр21рeрЩ вАФЈвИlрGnрOJRј ј PђУђТCущPUSHХƒBLIУOPСCALLђЭђФPƒИєўЬ/ЩЁвБФЉвЙCЦ?‚ONФ‚SEЧMACRЯ „LIТEQе‚NФ „Э „У„IЦ‚LSХXhоdтыkтуийƒTRЮ„ERNAЬЩћINC€Œ„LUDХ`ѕлчxч@ЩЂвВФЊвКMўF‚ЦDEFТ„з„Э„г„Ь C€Œ ‚Т‚з‚У‚гƒEЧJNZјAС'ЩѓSBCbŒB`ƒ˜єоUBƒєж LAƒ RAƒ( Lƒ8 ETzƒРCЦ7REдЩ†РЩMЮE Szƒ€ LCƒС ƒСФo RCƒС ƒСФgSTќЧORƒАєіƒЧUTuргg€AЩЃФЋTIвГDвЛADD`ƒ€єЦbŒ C`ƒˆєЮbŒJNDƒ єц‚SEЧ„д XORƒЈєю BITzƒ@NEЧDOаHALдv.PHASХ‚DEPHASХ‚COMMENд‚Z8А€Ш&ЬbС`ЦhФ"ХdТ У0к,УfNк*У.SаjЄХ$Ь(Щlиb2йbЭ8а6Х4Я2вn`c(&$"f 8642f.,*jbd0hbd08А*А*8И*4М*DР*DФ*'шd $YM Ш575HDE COMERR GEN GENTEMP $$$ GEN GEN GEN GEN PRN$$$ SUBŒ+<>,?*[]_%|()/\.:= ; GENPRN MACROs PUBLICs EXTERNALs in *WARNING* Pass 1Pass 2 errors: Public Absent Symbols Command Line Format is: GEN80 [object=]source [;opts] [ ] means optional. 'opts' are: L +/- (list) M +/- (expand)P +/- (print) N (no object)T (print symbols) D (type in)S n (label length) B n (table size K)F (force 2nd pass) K (kill object)C n (comment posn) W (write PRN file)V (vir disking) Q +/- (ERR file)G n (SYM file) R +/- (REL file)U +/- (Upper case) Default: Please mount A: for Press any key (CTRL/C to abort) when ready: Symbol Table too Big!No Source File: Object File Exists...Delete(Y/N)?Disc Full!Directory Full!Please mount system disc..Bad source file!*WARNING* ORGs used: Symbol Table used: K out of K. Used all K of Symbol Table!Direct mode: At Front (Y/N)?*I GENTEMP.$$$ GEN80 2.04 Copyright (C) HiSoft 1987 HiSoft GEN80 Assembler 3 Oct 87 Page: 1Expression syntaxBad mnemonicRedefined symbolMissing )Bad commandIllegal symbolSymbol is Reserved WordMismatch of registersOut of rangeJP (IX+n), JP (IY+n) illegalBad directiveForward referenceDivision by zeroBad filenameMacro parameter stack overflowNested conditionalNested macro definitionBad ENDMToo many includesExpression too complexLabel missingBad Macro parameterIllegal digit after # or %Bad expressionIllegal indexBad dot operatorNumeric expectedRe-defined MacroIllegal for COM fileExpression must be absoluteString not terminatedIllegal DEFMError in Conditional:ц6ЗЪэ{!З7хЌ,Э#€сЗ(я€Эœ%:5+2т6З( х!7ЭМ'Эž%сЗ7эRDMыэАЏ2€!т6а#эАУ Error(s) found, hit a key for editor:h+ЩыЭ‡ уzўh(шўb Т{ц0х§fіЫg(§ЫоЫ| ЫќДgЌц0>ТП §tіс>b™ех'ееЭЧџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ…RSрTд”ф @дМZH"“ „ё\žR&  @ъs4 "Y”ђ.hB3@†‡3@hЩŒ–dtUD4„шаMAIN@Œ‘e$”хDhЩHPUTS@œž0,117,115,104,32,97,32,107,101,121 defb 46,0 main@: ld bc,?59999 push bc ld hl,1 call printf pop bc ld hl,?59998 call puts@ call getch@ ret public main@ extrn printf extrn puts@ extrn getch@ end D sprintf(.); extern int sscanf(.); џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ ; MSX C ver 1.10r (code generator) cseg ?59999: defb 72,69,76,76,79,32,87,79,82,76 defb 68,33,10,0 ?59998: defb 80,117,115,104,32,97,32,107,101,121 defb 46,0 main@: ld bc,?59999 push bc ld hl,1 call printf pop bc ld hl,?59998 call puts@ call getch@ ret public main@ extrn printf extrn puts@ extrn getch@ end D sprintf(.); extern int sscanf(.); џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ